Rsyslog 日志处理系统

Rsyslog 日志处理系统

  • Rsyslog是一个强大的日志记录系统
  • 广泛用于Linux系统上收集和记录日志信息
  • Rsyslog是一个syslogd的多线程增强版。

服务器信息

服务器IP安装服务别名
192.168.1.74rsyslog服务端
192.168.1.36rsyslog客户端

安装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

测试

  • 客户端收集日志信息
    client
  • 服务端抓包
    tcpdump
  • 服务端接收日志信息
    server

其他使用场景

rsyslog

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值