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 上查看日志

相关推荐
BS_Li17 分钟前
【Linux系统编程】权限的概念
linux·权限
cellurw27 分钟前
Day67 Linux I²C 总线与设备驱动架构、开发流程与调试
linux·c语言·架构
天朝八阿哥1 小时前
Bye~~ win10!
linux·windows
孙同学_1 小时前
【Linux篇】软链接vs硬链接:Linux文件系统中的两种引用机制
linux·运维·服务器
hour_go1 小时前
解决Linux系统中“undeclared identifier“问题的完整指南
linux·运维·服务器
天赐细莲2 小时前
(Linux) WSL 通过 VSCode 连接不执行 profile 问题(登录Shell问题)
linux·运维·vscode
咬_咬2 小时前
Linux时间轮定时器
linux·运维·网络·定时器·timerfd
LCG元2 小时前
Linux Shell脚本编程实战:自动备份网站文件和数据库,并定期清理过期备份
linux
Liu1bo2 小时前
【MySQL】表的约束
linux·数据库·mysql
MC皮蛋侠客3 小时前
Ubuntu禁用系统手势,阻止应用程序异常最小化
linux·运维·qt·ubuntu