因为项目需要对私有云服务器的日志进行归集,以方便后续对日志进行分析处理。结合项目的实际需求研究了一下Rsyslog的基本使用并进行了有效性的验证,在此对实现过程进行一个记录
Rsyslog是什么?
Rsyslog是一个极快日志处理系统,能够接受来自各种来源的输入,对其进行转换,并将结果输出到不同的目的地。
测试环境说明
操作系统:统信UOS20企业版
测试服务器IP:172.25.16.29
测试客户端IP:172.25.16.34
服务端配置
启动UDP传输并进行端口监听
修改 /etc/rsyslog.conf
文件,如果没有则添加如下内容
1 2
| $ModLoad imudp $UDPServerRun 514
|
创建default.conf配置文件
在 /etc/rsyslog.d/
目录下创建 default.conf
文件,并加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| # Use default timestamp format $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # 定义日志模板,日志显示格式如下: # %$now%:当前日期,格式:2023-08-23, # %timestamp:8:15%:当前时间戳:时:分:秒, # %hostname%:主机名 # %FROMHOST-IP%:客户端IP # %syslogfacility-text%:客户端日志类型 # auth # authpriv # cron # kern # lpr # mail # mark(syslog) # news # user # uucp # local 1~7 # %syslogseverity-text%:客户端日志级别 # debug # info # notice # warning, warn # err, error # crit # alert # emerg, panic # %app-name%:客户端执行的程序名 # %msg%:消息体 $template myFormat,"%$now% %timestamp:8:15% | %hostname%@%FROMHOST-IP% | %syslogfacility-text% | %syslogseverity-text% | %app-name% | %msg%\n" $ActionFileDefaultTemplate myFormat # 根据客户端的IP单独存放主机日志在不同目录,/data/rsyslog-bak需要手动创建 $template RemoteLogs,"/data/rsyslog-bak/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" # 排除本地主机IP日志记录,只记录远程主机日志 :fromhost-ip, !isequal, "127.0.0.1" ?RemoteLogs # 忽略之前所有的日志,远程主机日志记录完之后不再继续往下记录 & ~
|
重启服务端rsyslog服务
1
| systemctl restart rsyslog
|
客户端配置
修改 /etc/rsyslog.conf
配置文件
1 2 3 4 5 6 7 8 9 10
| # 若启用UDP进行传输,则取消下面两行的注释,如果没有则添加到modules下 module(load="imudp") input(type="imudp" port="514")
或加入如下内容 $ModLoad imudp $UDPServerRun 514
#使用UDP传输所有日志到日志服务器(在末尾添加如下内容) *.* @172.25.16.29
|
重启服务端rsyslog服务
1
| systemctl restart rsyslog
|
测试
日期生成
客户端生成日志
服务端监控输出
1
| tail -20f /rsyslog-bak/172.25.16.34/172.25.16.34_2023-08-25.log
|