网上关于rsyslog配置文章,大多是老式的写法了(以$符号开头的)。这些老式的写法官方已经不再推荐使用了。
rsyslog 的介绍我这里不做介绍,只讲怎样配置然后使用。
开始之前的三点说明:
1. centOS8 自带了v8.37版本的rsyslog, 不需要安装了。而且还自带了 3.6.8的python.
2. 官方说rsyslog在进行日志转发时要求平台要相同。尽量保持相同的系统。并且关闭防火墙。
3.rsyslog 的配置文件在 /etc/rsyslog.conf
一,记录本地日志
rsyslog 开机自启,自行记录主机内的一切活动,包括内核运行日志,认证日志,邮件日志等,并保存到相应位置。
如果你想监视本主机的情况,则不需要任何配置。直接打开配置文件查看日志保存的位置,然后查看日志即可。
var/log/message 日志是一个综合性日志,记录了主机内所有facility的info日志,当你对主机有任何操作时,message内都会生成日志记录,比如你重启rsyslog服务(不放图了,自己验证)
二,本地日志转发到远程服务器
有时我们要把本主机的日志同步到另台主机上(列如专用的日志服务器),此时需要用到rsyslog的日志转发功能。
我们把发送和接收日志的机器分别称为 client端 & server端。
client端配置
打开client端配置文件,拉到最下面添加:
*.* action(type="omfwd"
target="172.16.44.128" port="514" protocol="tcp"
action.resumeRetryCount="100"
queue.type="linkedList" queue.size="10000")
注意target为server端的ip地址。恭喜你已完成!
server端配置
打开server端配置文件,找到下面位置:
把红圈内的两行取消注释
如果你想用udp的话就取消上面的udp区域(client端的protocol改为udp)。恭喜你已完成!
进入clinet端主机 重启一下rsyslog 服务测试一下。client端的日志信息被发送到了server端message中
三,本地应用日志(日志文件)转发到远程服务器
有时我们需要把本机上部署的应用产生的日志文件转发到日志服务器需要在 ''二''的配置上追加一些。
client端配置
打开client端配置文件,在最上面添加
module(load="imfile" PollingInterval="5")
input(type="imfile"
File="/root/deploy/api_log/log/api.log"
Tag="tag1"
Severity="info"
Facility="local5")
其中File是你要远程转发的应用日志,Facility我给为local5。恭喜你已完成!
此时在/root/deploy/api_log/log/api.log随便写入一些日志,rsyslog 将日志转发到server端。
如果想把client端发送的日志保存在server端某个路径下(我们定义)
打开server端配置文件在RULES的最下面追加一条配置即可
local5.* /var/log/local5.log (也就是第一张图中的最下面红圈部分)
此时在/root/deploy/api_log/log/api.log随便写入一些日志,rsyslog 将日志转发到server端我们定义的路径下。
最后补充:
第三种方式中,应用日志的路径最好放在系统的var/log/下保证rsyslog 有足够的权限去监视。不然可能会报错。
例子中放在的root/下就会出现问题。需要修改文件路径的context规则之类的东西,具体请参考:
https://blog.csdn.net/mi2006/article/details/90264690
rsyslog还有很多细致的功能,有待专业的运维拓展。本文仅记录其最新的配置方式以供开发人员最快使用。
如果对你有用请点赞评论素质二连。蟹蟹