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

相关推荐
dawnsky.liu2 小时前
RHEL - 在离线的 RHEL 10 中部署 Lightspeed 命令行助手
linux·人工智能·ai
promising-w2 小时前
TYPE-C接口,其实有4种
linux·c语言·开发语言
云道轩2 小时前
在rocky linux 9.5上安装yq
linux·kubernetes
烦躁的大鼻嘎3 小时前
【Linux】深入探索多线程编程:从互斥锁到高性能线程池实战
linux·运维·服务器·开发语言·c++·算法·ubuntu
wdfk_prog3 小时前
`git rm --cached`:如何让文件“脱离”版本控制
大数据·linux·c语言·笔记·git·学习·elasticsearch
xuhe23 小时前
告别 LaTeX 配置地狱:我的 Overleaf (ShareLaTeX-CE) 完整版私有化部署方案
linux·docker·overleaf
深思慎考3 小时前
LinuxC++——etcd-cpp-api精简源代码函数参数查询参考
linux·c++·etcd
jingfeng5143 小时前
I/O 多路转接select、poll
linux·数据库·sql
大聪明-PLUS4 小时前
ARM Cortex-M:内存保护单元 (MPU) 发布
linux·嵌入式·arm·smarc