Rsyslog系统日志服务

Posted 初如

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rsyslog系统日志服务相关的知识,希望对你有一定的参考价值。

rsyslog

rsyslog 特性
多线程
UDP, TCP, SSL, TLS, RELP
mysql, PGSQL, Oracle实现日志存储
强大的过滤器,可实现过滤记录日志信息中任意部分
自定义输出格式
适用于企业级中继链

rsyslog 相关文件
程序包:rsyslog
主程序:/usr/sbin/rsyslogd
CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
库文件: /lib64/rsyslog/*.so
1.2.3 rsyslog配置文件
/etc/rsyslog.conf 配置文件格式:由三部分组成
MODULES:相关模块配置
GLOBAL DIRECTIVES:全局配置
RULES:日志记录相关的规则配置
RULES配置格式:
facility.priority; facility.priority… target

facility格式:
*     #所有的facility  
facility1,facility2,facility3,...         #指定的facility列表

priority格式:
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息

target格式:
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理

#内置分类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),
user, uucp, syslog

自定义分类
local0-local7

日志优先级 从低到高:
debug, info, notice, warn(warning), err(error), crit(critical), alert,
emerg(panic)

实现自定义日志格式:
修改vim /etc/ssh/sshd_config
SyslogFacility LOCAL6 ---- 自定义类别6

修改/etc/rsyslog.conf 加入日志保存路径
local7.*                    /var/log/boot.log
local6.*                    /data/sshd.log  ---新加路径
重启sshd 和rsyslog服务 在查看 /data/sshd.log 即可看到ssh的日志
并不是所由的服务都支持rsyslog

logger 测试日志是否可以正常生成
logger -p local6.info 'hello ssh' 

cat /data/sshd.log
May 31 20:18:57 centos7 root: hello sshd

启动网络服务日志
需要开启rsyslog服务中的俩个模块
imudp 
imtcp

配置文件如下: /etc/rsyslog.conf 开启对应udp或tcp即可
开启tcp模块去测试日志网络保存。
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514 

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 51

将71上的日志不仅保存在71本地 还要保存到72上去
在71上修改配置文件:
*.info;mail.none;authpriv.none;cron.none  @172.17.40.72 
#@代表udp @@代表tcp #将72上你想要保存的日志发送到72上去
对应72上也要写上 对应日志需要保存到哪个文件中,因上述日志,在72上有
保存路径,而如果是自定义的日志,在71上要加入保存日志路径,同样在远程保存日志的72上也要写上相同的配置,从而让72上能正常保存71发过来的日志。
*.info;mail.none;authpriv.none;cron.none      /var/log/test.log

 
局域网内可以支持udp,但如果在公网上建议使用tcp协议去保存日志

lastb可以查看远程机器尝试登录本机失败的日志

last 查看本机的用户最后一次登录的日志信息
dmesg 查看内核中硬件相关的日志

常见日志文件
/var/log/secure:系统安全日志,文本格式,应周期性分析
/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行
查看
/var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
/var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
/var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化
将不再记录
专用命令dmesg查看,可持续记录硬件变化的情况
/var/log/boot.log 系统服务启动的相关信息,文本格式
/var/log/messages :系统中大部分的信息
/var/log/anaconda : anaconda的日志


centos7及以上才有的日志工具
日志管理工具 journalctl
CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

journalctl -u sshd.service --since '1 hour ago'
-u 指定服务 --since 从什么时候开始
_UIND 指定用户
_PID 指定进程标号
-n 查看最新的10条日志

实现系统日志保存到远程数据上

71 日志服务器 72 数据库服务器
71上需要开启rsyslog服务,安装rsyslog-mysql
[root@centos7 ~]# rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
scp /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 172.17.40.72

在72上安装mariadb并将mysql-createDB.sql导入数据库生成库和表
mysql < mysql-createDB.sql

71配置文件修改
在module后
$ModLoad ommysql

并在rules后写
*.info    :ommysql:172.17.40.72,Syslog,syslog,123456
#:ommysql:hosts,DBname,user,user password
修改完成配置后,重启rsyslog服务
测试logger 'this is 71' 
在72数据库上查看Syslog库的表SystemEvents 是否可以查询到71过来的数据。

实现web端查看日志

在上述条件上,增加一台web服务器73
yum -y install httpd php-fpm php-mysqlnd php-gd
systemctl enable --now httpd php-fpm

安装上loganalyzer-4.1.10.tar.gz
wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz
tar -xfv loganalyzer-4.1.12.tar.gz #解压
mv loganalyzer-4.1.12/src /var/www/html/log
cd /var/www/html/log
touch config.php
chomod 644 /var/www/html/log/config.php

systemctl enable --now httpd #启动httpd服务
在任意浏览器中访问http://172.17.40.73/log 
根据提示配置上数据库即可

以上是关于Rsyslog系统日志服务的主要内容,如果未能解决你的问题,请参考以下文章

Rsyslog系统日志服务

Rsyslog系统日志服务

利用rsyslog+mysql+loganalyzer部署日志服务器

rsyslog 系统日志服务简介

Linux基于rsyslog启用网络日志服务实现日志实时转储

centos7+rsyslog+loganalyzer+mysql 搭建rsyslog日志服务器