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

相关推荐
神梦流39 分钟前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫41 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
xuhe21 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
Lsir10110_1 小时前
【Linux】进程信号(下半)
linux·运维·服务器
酉鬼女又兒2 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面2 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
zl_dfq2 小时前
Linux 之 【多线程】(pthread_xxx、轻量级进程、原生线程库、线程ID、__thread、线程栈、线程与信号、线程与程序替换)
linux
choke2332 小时前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器
AZ996ZA2 小时前
自学linux的第二十一天【DHCP 服务从入门到实战】
linux·运维·服务器·php