Linux rsyslog 日志服务及日志转发实践
一、基础知识
1、简介
rsyslog 是一个开源工具,基于 syslog 协议完成系统日志的处理转发,它可用于接受来自各种来源的输入,转换它们,并将结果输出到不同的目的地。
rsyslog 提供了高性能、强大的安全功能和模块化设计,支持多种输入和输出模块,可以与各种设备和系统集成,例如 syslog、TCP、UDP、TLS 等。同时,它还支持多种过滤和处理规则,可以根据需求定制化日志的存储、转发和处理方式。
2、rsyslog 特性
支持输出日志到各种数据库,如 MySQL,PostgreSQL,MongoDB ElasticSearch,实现使用第三方服务对日志进行存储和分析;
精细的输出格式控制以及对日志内容的强大过滤能力,可实现过滤记录日志信息中的指定部份;
通过 RELP + TCP 实现数据的可靠传输;
支持数据的加密和压缩传输等;
支持多线程。
3、目录结构
/usr/sbin/rsyslogd #主程序
/usr/lib/systemd/system/rsyslog.service #服务脚本
/etc/rsyslog.conf #主配置文件
/etc/rsyslog.d/*.conf #配置文件目录中的配置文件
/usr/lib/rsyslog/*.so #库文件
4、服务相关命令
查看服务自启动状态,默认开机自启动
systemctl is-active rsyslog
设置开机自启动
systemctl enable rsyslog
禁用开机自启动
systemctl disable rsyslog
启动服务
systemctl start rsyslog
停止服务
systemctl stop rsyslog
重启服务
systemctl restart rsyslog
查看服务状态
systemctl status rsyslog
二、日志文件查看
rsyslog 收集的日志通常存储在 /var/log/ 目录下(具体路径可在配置文件中自定义)
查看文件内容
cat /var/log/messages # 系统通用消息日志
cat /var/log/auth.log # 认证、权限相关日志(如登录、sudo操作)
cat /var/log/syslog # 系统核心日志
分页查看
less /var/log/messages
more /var/log/messages
实时输出日志
tail -f /var/log/messages
tail -n 100 -f /var/log/messages
过滤日志
grep "Error" /var/log/messages
grep -i "failed" /var/log/auth.log
三、日志转发实践
1、角色分配
日志收集服务器:在此模式下,rsyslog 进程可以从网络中收集其他主机上的日志数据,这些主机通过 TCP 或 UDP 协议会将日志配置为发送到另外的远程服务器,进行集中存储,方便统一管理。
客户端:在此模式下,rsyslog 可以过滤和发送内部日志消息到本地文件夹(如 /var/log)或一台可以路由到的远程 rsyslog 服务器上。
主机 IP | 操作系统 | 角色 |
---|---|---|
10.0.0.112 | ubuntu | log server |
10.0.0.15 | rocky | client1 |
10.0.0.13 | ubuntu | client2 |
2、工作流程及配置解读
客户端主机配置:通过 @ 符号,将指定的日志发送到远程主机的514端口,@ 代表 udp,@@ 代表 tcp,*.info 代表所有info级别的日志
*.info @remote_addr:514服务端主机配置:加载 udp 或者 tcp 模块,然后开启对应的 input 功能
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
3、log server 配置
编辑 log server 主机 /etc/rsyslog.conf 配置文件,去掉 TCP、UDP 模块的注释,开启 TCP、UDP 相关功能
确认接收的认证日志,转发过来的日志会被写到 /var/log/syslog 文件中
重启服务,检测效果
4、rocky9 转发配置及测试
client1(10.0.0.15)编辑 /etc/rsyslog.d/net.conf 文件,配置远程转发,转发到 log server(10.0.0.112) 的 udp 协议514端口(默认514 ,可以省略)
重启服务
测试效果,在 client1 上写入日志
client1 上查看系统日志
log server 上查看日志
5、ubuntu 转发配置及测试
client2(10.0.0.113)编辑 /etc/rsyslog.d/net.conf 文件,配置远程转发,转发到 log server(10.0.0.112) 的 tcp 协议514端口(默认514 ,可以省略)
重启服务
测试效果,在 client2 上写入日志
client2 上查看系统日志
log server 上查看日志