rsyslog
1. 什么是 rsyslog
rsyslog 是一个高性能的日志处理程序,能够接收、处理并转发日志消息。它被广泛应用于 UNIX 和 Linux 系统中,用于系统日志记录和管理。
2. rsyslog 的主要功能
- 高性能:能够处理大量日志消息,适用于大规模的日志管理需求。
- 模块化架构:支持多种输入和输出模块,可以灵活地扩展功能。
- 日志过滤和重写:支持复杂的日志过滤和重写规则,便于精确控制日志流。
- 支持多种协议:能够处理多种日志传输协议,如 TCP、UDP、TLS 等。
- 安全性:支持加密传输和认证,确保日志消息的安全性。
3. rsyslog 的基本配置
rsyslog 的配置文件通常位于 /etc/rsyslog.conf
或 /etc/rsyslog.d/
目录下。其配置文件采用规则-动作(rules-actions)结构。
命令:
systemctl status rsyslog.service
配置示例
plaintext
# 基本格式
# :规则:动作
# 接收本地日志并写入文件
*.* /var/log/all.log
# 接收远程日志(UDP)并写入文件
$ModLoad imudp
$UDPServerRun 514
*.* /var/log/remote.log
# 接收远程日志(TCP)并写入文件
$ModLoad imtcp
$InputTCPServerRun 514
*.* /var/log/remote_tcp.log
# 基于消息优先级的日志过滤
authpriv.* /var/log/secure.log
# 基于消息内容的日志过滤
:msg, contains, "error" /var/log/error.log
4. 日志优先级与设施
rsyslog 使用设施(facility)和优先级(priority)来分类和处理日志消息。
设施
常见设施包括:
- auth、authpriv:认证和安全相关消息
- cron:定时任务相关消息
- daemon:系统后台进程相关消息
- kern:内核相关消息
- mail:邮件系统相关消息
- syslog:内部日志处理相关消息
优先级
优先级从高到低包括:
- emerg:紧急情况,需要立即通知所有用户
- alert:需要立即处理的问题
- crit:严重情况
- err:错误
- warning:警告
- notice:普通但重要的消息
- info:信息性消息
- debug:调试消息
5. 常用命令
- 启动 rsyslog :
sudo systemctl start rsyslog
- 停止 rsyslog :
sudo systemctl stop rsyslog
- 重启 rsyslog :
sudo systemctl restart rsyslog
- 检查 rsyslog 状态 :
sudo systemctl status rsyslog
- 重新加载配置 :
sudo systemctl reload rsyslog
6. 高级功能
- 日志转发:将日志消息转发到远程服务器
- 日志重写:根据规则修改日志消息内容
- 日志归档:将日志消息归档处理,以节省存储空间
- 日志分析:集成第三方工具进行日志分析和可视化
配置示例
-
客户端配置
在客户端服务器上,配置 rsyslog 将日志消息转发到集中式日志服务器:
plaintext# 配置远程日志传输(UDP) *.* @logs.example.com:514 # 配置远程日志传输(TCP) *.* @@logs.example.com:514
-
服务器配置
在集中式日志服务器上,配置 rsyslog 接收来自客户端的日志消息:
plaintext# 加载输入模块 $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 # 将接收到的日志写入文件 *.* /var/log/centralized.log