Rsyslog 日志处理系统
- Rsyslog是一个强大的日志记录系统
- 广泛用于Linux系统上收集和记录日志信息
- Rsyslog是一个syslogd的多线程增强版。
服务器信息
| 服务器IP | 安装服务 | 别名 |
|---|---|---|
| 192.168.1.74 | rsyslog | 服务端 |
| 192.168.1.36 | rsyslog | 客户端 |
安装rsyslog服务
- 安装rsyslog服务 在基于Debian的系统(如Ubuntu)上,可以使用以下命令安装
sudo apt-get install rsyslog
- 在基于Red Hat的系统(如CentOS)上,可以使用以下命令安装
sudo yum install rsyslog
开放防火墙端口(如需要)
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
服务端配置步骤,设置一个中央日志服务器
- sudo vi /etc/rsyslog.conf
# 使用 UDP 协议接收日志,在端口 514 上监听
module(load="imudp")
input(type="imudp" port="514")
# 使用 TCP 协议接收日志,在端口 514 上监听
module(load="imtcp")
input(type="imtcp" port="514")
自定义日志模板
- sudo vi /etc/rsyslog.d/test.conf
# 配置详解
# $template: 创建一个模板
# MyCustomTemplate: 模板名称
# %timegenerated%: 日志消息的时间戳。
# %timestamp%: 包含完整日期和时间的消息接收时间戳。
# %fromhost-ip%: 发送日志消息的主机的IP地址。
# %hostname%: 发送日志消息的主机名。
# %programname%: 生成日志消息的程序名。
# %pri%: 日志消息的优先级。
# %syslogtag%: 日志消息的标签,通常包含程序名和进程ID。
# %msg%: 实际的日志消息。
# \n: 换行符,用于在日志文件中分隔不同的日志条目。
$template myformat,"%timestamp% %timegenerated% %fromhost-ip% %hostname% %programname% %pri% %syslogtag% %msg%\n"
配置日志存储规则
- sudo vi /etc/rsyslog.d/test.conf
# 配置详解
# authpriv: 服务名称
# .: [连接符号]
# *: 日志等级
# /var/log/rsyslog/auth.log: 日志存储位置
# 将所有消息记录到文件中
*.* /var/log/rsyslog/allmessages.log
# 将内核消息记录到文件中
kern.* /var/log/rsyslog/kern.log
# 将邮件记录到文件中, 使用自定义日志模板
mail.* /var/log/rsyslog/mail.log;myformat
# 将authpriv消息记录到文件中
authpriv.* /var/log/rsyslog/auth.log
队列占满日志保存到磁盘配置(默认存在WorkDirectory文件夹中)
- sudo vi /etc/rsyslog.d/test.conf
# 配置详解
# $ActionQueueType:定义动作队列的类型,常见的类型包括LinkedList和Array。
# $ActionQueueFileName:指定动作队列文件的存储位置和名称。
# $ActionQueueMaxDiskSpace: 所有队列文件一起在磁盘上使用的最大大小。
# $ActionQueueMaxFileSize: 指定磁盘辅助队列文件的最大大小。
# $ActionQueueSaveOnShutdown:设置在rsyslog服务关闭时是否保存队列中的消息,通常设置为on以保存未处理完的消息。
# $ActionResumeRetryCount:设置在连接失败时的重试次数,通常设置为-1表示无限重试。
$ActionQueueType LinkedList
$ActionQueueFileName srvqueue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueMaxFileSize 100m
服务端自定义配置日志, /etc/rsyslog.d/test.conf完整配置
- sudo vi /etc/rsyslog.d/test.conf
$template myformat,"%timestamp% %timegenerated% %fromhost-ip% %hostname% %programname% %pri% %syslogtag% %msg%\n"
# 将所有消息记录到文件中
*.* /var/log/rsyslog/allmessages.log
# 将内核消息记录到文件中
kern.* /var/log/rsyslog/kern.log
# 将邮件记录到文件中, 使用自定义日志模板
mail.* /var/log/rsyslog/mail.log;myformat
# 将authpriv消息记录到文件中
authpriv.* /var/log/rsyslog/auth.log
# 日志队列配置
$ActionQueueType LinkedList
$ActionQueueFileName srvqueue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueMaxFileSize 100m
配置日志轮转 为了防止日志文件无限增长,可以使用logrotate来轮转日志文件。
- sudo vi /etc/logrotate.d/rsyslog
# rotate 4: 保留4天日志
# weekly: 每周轮转
# missingok: 忽略丢失的文件
# notifempty: 日志文件为空时不发送日志信息
# compress: 压缩传输的日志
# delaycompress: 延迟压缩日志文件, 满足设置的大小后进行压缩
# sharedscripts: 允许多个规则重用同一个脚本
# postrotate: 日志轮转后执行/usr/lib/rsyslog/rsyslog-rotate命令
# endscript: 结束执行脚本
/var/log/*.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
重启rsyslog服务,使自定义配置生效
sudo systemctl restart rsyslog
查看rsyslog服务状态
sudo systemctl status rsyslog
客户端配置步骤
- sudo vim /etc/rsyslog.conf
# 所有mail信息发送到192.168.1.74服务器
mail.* @192.168.1.74:514
重启rsyslog服务,使自定义配置生效
sudo systemctl restart rsyslog
查看rsyslog服务状态
sudo systemctl status rsyslog
测试
- 客户端收集日志信息

- 服务端抓包

- 服务端接收日志信息

其他使用场景

1077

被折叠的 条评论
为什么被折叠?



