Rsyslog 服务端与客户端部署与配置指南
Rsyslog 服务端与客户端部署与配置指南
本文档将详细介绍如何在服务端和客户端部署并配置 rsyslog,以便实现日志集中收集和管理。并包括日志文件轮转的配置。
1. 服务端部署与配置
1.1 安装 rsyslog
在服务端,首先需要安装 rsyslog
服务:
yum install -y rsyslog
安装完成后,启用并启动 rsyslog 服务:
systemctl enable rsyslog
systemctl start rsyslog
1.2 服务端配置文件
编辑服务端的 /etc/rsyslog.conf
文件,配置如下:
bash复制代码# 加载本地系统日志模块(例如通过 logger 命令发送的日志)
$ModLoad imuxsock
# 加载内核日志模块(之前由 rklogd 处理)
$ModLoad imklog
# 加载 UDP 模块,支持通过 UDP 协议接收日志
$ModLoad imudp
# 配置 UDP 服务器在 514 端口接收日志
$UDPServerRun 514
# 加载 TCP 模块,支持通过 TCP 协议接收日志
$ModLoad imtcp
# 配置 TCP 服务器在 514 端口接收日志
$InputTCPServerRun 514
# 定义日志存储路径模板(按客户端 IP 分类)
$template RemoteLogs, "/var/log/rsyslog/%fromhost-ip%/%fromhost-ip%.log"
# 设置默认的文件格式为传统的 rsyslog 格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 加载 /etc/rsyslog.d/ 目录下的所有配置文件
$IncludeConfig /etc/rsyslog.d/*.conf
# 将所有客户端的日志转发到指定目录,并按日期和客户端 IP 分类存储
*.* ?RemoteLogs
1.3 重启服务端 rsyslog 服务
配置完成后,需要重启 rsyslog
服务以应用新的配置:
systemctl restart rsyslog
1.4 配置 history 相关命令
为了保证在客户端可以记录历史命令,并通过 logger
发送到 rsyslog,编辑 /etc/profile
文件,加入以下配置:
# 设置历史命令的最大记录数
HISTFILESIZE=2000
HISTSIZE=2000
export HISTTIMEFORMAT="%F %T: "
# 多个终端同时操作,避免覆盖,采用追加的方式
shopt -s histappend
# 使用 logger 记录执行过的命令
export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local5.notice -t bash -i "user=$USER, ppid=$PPID, from=$SSH_CLIENT, pwd=$PWD, command: $command"; }'
修改完成之后,让profile 文件生效
source /etc/profile
2. 客户端部署与配置
2.1 安装 rsyslog
在客户端,首先需要安装 rsyslog
服务:
yum install -y rsyslog
安装完成后,启用并启动 rsyslog 服务:
systemctl enable rsyslog
systemctl start rsyslog
2.2 客户端配置文件
编辑客户端的 /etc/rsyslog.conf
文件,配置如下:
⚠️ 注意 修改rsyslog 服务端的地址,@ 表示走udp,@@ 表示走tcp
bash复制代码# 加载本地系统日志模块(例如通过 logger 命令发送的日志)
$ModLoad imuxsock
# 加载内核日志模块(之前由 rklogd 处理)
$ModLoad imklog
# 加载 UDP 模块,支持通过 UDP 协议接收日志
$ModLoad imudp
# 加载 TCP 模块,支持通过 TCP 协议接收日志
$ModLoad imtcp
# 设置默认的文件格式为传统的 rsyslog 格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 加载 /etc/rsyslog.d/ 目录下的所有配置文件
$IncludeConfig /etc/rsyslog.d/*.conf
# 将所有日志转发到服务端 (10.0.1.11) 端口 514,使用 UDP 协议
*.* @10.0.1.11:514
2.3 配置 history 相关命令
为了保证在客户端可以记录历史命令,并通过 logger
发送到 rsyslog,编辑 /etc/profile
文件,加入以下配置:
# 设置历史命令的最大记录数
HISTFILESIZE=2000
HISTSIZE=2000
export HISTTIMEFORMAT="%F %T: "
# 多个终端同时操作,避免覆盖,采用追加的方式
shopt -s histappend
# 使用 logger 记录执行过的命令
export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local5.notice -t bash -i "user=$USER, ppid=$PPID, from=$SSH_CLIENT, pwd=$PWD, command: $command"; }'
修改完成之后,让profile 文件生效
source /etc/profile
2.4 重启客户端 rsyslog 服务
配置完成后,需要重启 rsyslog
服务:
systemctl restart rsyslog
2.5 验证rsyslog
syslogger "This is a test log message from the client"
3. 服务端 Logrotate 配置
为了防止日志文件过大,建议对日志文件进行轮转。我们可以通过配置 logrotate
来实现日志文件的切割。
3.1 安装 logrotate
在服务端安装 logrotate
工具:
yum install -y logrotate
3.2 配置 logrotate
编辑 /etc/logrotate.d/rsyslog
配置文件,进行日志轮转配置。配置如下:
/var/log/rsyslog/*/*.log {
missingok # 如果日志文件丢失,不报错
daily # 每天轮换一次
copytruncate # 在复制日志并截断当前日志文件时不需要停止服务
rotate 30 # 保留最近 30 天的日志文件
notifempty # 如果日志文件为空,则不轮换
dateext # 使用日期作为日志文件的扩展名
}
3.3 验证 logrotate 配置
可以通过以下命令手动触发日志轮转:
logrotate /etc/logrotate.d/rsyslog
4. 总结
本文档介绍了如何在服务端和客户端部署和配置 rsyslog
,并配置了客户端将日志转发到服务端。服务端根据客户端的 IP 地址生成不同的日志文件。最后,还配置了日志轮转,以确保日志文件不会过大。
通过这些配置,你可以实现一个基本的集中日志管理系统。如果有其他需求,仍可根据实际情况进一步优化配置。
- 感谢你赐予我前进的力量