rsyslog是CentOS 6 以后版本的系统管理服务。它提供了高性能,出色的安全性和模块化设计。 尽管 rsyslog最初是常规的syslogd,但已发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输 入,并将其转换,然后输出到不同的目的地。
官方网站: https://www.rsyslog.com/
rsyslog 特性
- 多线程
- UDP, TCP, SSL, TLS, RELP
- MySQL, PGSQL, Oracle实现日志存储
- 强大的过滤器,可实现过滤记录日志信息中任意部分
- 自定义输出格式
- 适用于企业级中继链
rsyslog 管理
系统日志术语
facility:设施,从功能或程序上对日志进行归类
#内置分类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),
user, uucp, syslog
#自定义的分类
local0-local7
Priority:优先级别,从低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert,emerg(panic)
查看帮助:man 3 syslog,man logger,man rsyslogd
rsyslog 相关文件
- 程序包:rsyslog
- 主程序:/usr/sbin/rsyslogd
- CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
- CentOS 7,8、Ubuntu: /lib/systemd/system/rsyslog.service
- 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
- 库文件: /lib64/rsyslog/*.so
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/,文件路径前的-表示异步写入(不立即写磁盘节约I/O)
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理
通常的日志文件的格式:
日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。
事件产生的日期时间 主机 进程(pid):事件内容
范例:将ssh服务的日志记录至自定义的local的日志设备(Ubuntu20.04)
#修改sshd服务的配置
vim /etc/ssh/sshd_config
SyslogFacility AUTH
service sshd reload
#修改rsyslog的配置
vim /etc/rsyslog.d/50-default.conf
local2.* -/var/log/sshd.log
systemctl restart rsyslog
#logger测试 可以看到记录
logger -p local2.info "hello sshd"
tail /var/log/sshd.log
启用网络日志服务
启用网络日志服务功能,可以将多个远程主机的日志,发送到集中的日志服务器,方便统一管理。
#在接受日志的远程主机配置
vim /etc/rsyslog.conf
#################
#### MODULES ####
#################
module(load="imuxsock") # provides support for local system logging
#module(load="immark") # provides --MARK-- message capability
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")
#在本地主机配置,IP换成接受日志的主机地址
vim /etc/rsyslog.d/50-default.conf
*.info;mail.none;authpriv.none;cron.none @@107.182.18.49
*.info;mail.none;authpriv.none;cron.none @107.182.18.49
#配置完两台主机都重启服务
systemctl restart rsyslog
#发送测试日志
logger "test log"
#可以看到远程主机有日志
tail /var/log/syslog
May 12 05:09:16 DMIT-iJboSKPbP4 root: test log
May 12 05:09:16 DMIT-iJboSKPbP4 root: test log
常见日志文件
- /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的日志
找出失败登录次数最多的前10个IP
lastb|grep -v btmp|awk '/^[^ ]/{print $3}'|sort|uniq -c|sort -nr|head