【linux下的rsyslogd输出文件内容至syslog服务器】

rsyslogd输出文件内容至syslog服务器

rsyslogd输出文件内容至syslog服务器,可以将任何文本文件内容输出至syslog服务器,比如tomcat日志、nginx日志、oracle日志、mysql日志、pgdb日志等等,只要是文本文件都可以自由读取并以syslog形式发送出去。

老规矩,废话不多说,直接放链接。

rsyslogd下载链接:https://mirrors.aliyun.com/centos/7.9.2009/updates/x86_64/Packages/rsyslog-8.24.0-57.el7_9.3.x86_64.rpm?spm=a2c6h.25603864.0.0.11aca9574RFsgq

1. 第一步 升级系统内的rsyslogd版本

升级rsyslogd软件版本为rsyslog-8.24.0-57.el7_9.3.x86_64.rpm
这个版本支持通配符,就是程序一天生成一个以日期结尾的,可以使用*.log来代替详细的文件名称。

(因为这个版本是亲测没问题,而且不需要依赖关系,其他低版本有问题,而且每个版本的配置语句不同。nxlog依赖关系很多,yum下了900M的依赖包。)

下载完的rsyslogd直接扔到服务器上,给个执行权限,直接升级操作。
chmod +x rsyslog-8.24.0-57.el7_9.3.x86_64.rpm && rpm -Uvh rsyslog-8.24.0-57.el7_9.3.x86_64.rpm

2. 第二步 配置主配置文件

在/etc/rsyslog.conf文件中,将包含次级的脚本目录打开。(只改动这一个地方,其他地方默认)
将前面的注释去掉并保存
图片放在word里面,再粘出来就变得特别小,用图片和系统内的配置文件对比,就知道改哪里了,并且我也圈了红框。

3. 第三步 检查与新增配置文件

  • 检查:

1、检查是否存在目录:/var/spool/rsyslog 如不存在需要创建mkdir -p /var/spool/rsyslog
2、删除或备份/etc/rsyslog.d/下的默认文件

  • 新建配置文件
    在/etc/rsyslog.d/下新建配置文件
    (名称随意写,但扩展名的后缀必须是.conf 例如tomcat.conf、oracle_log.conf)

配置文件内容为以下代码

$ModLoad imfile
$InputFilePollInterval 5
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup root
$InputFileName /mnt/tomcat-9.0.72/logs/localhost_access*.log
$InputFileTag tomcat-access:
$InputFileStateFile stat-tomcat-access
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor

$InputFileName /opt/plugin/nginx/logs/error*.log
$lnputFileTag tomcat-error:
$InputFileStateFile stat-tomcat-error
$lnputFileSeverity error
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
*.* @192.168.50.9:514 #一个@为UDP,两个@@为TCP

#如果要是只想传输配置的日志文件,
#那就将*.* @192.168.50.9:514换成local0.info @192.168.50.9:514(注意@前的一个空格)
#不然会将系统的日志也一起发送过来,系统日志量不大,但是难以查找你想传的日志。

将上述代码贴进新建的配置文件后,保存,并启动rsyslog,就自动开始发送了。

centos7或radhat7的启动命令
systemctl restart rsyslog.service 或 systemctl restart rsyslogd.service

  • 日志接收:

接收到的tomcat日志

4. 自由阅读 语句解释

---------------------------------------横线以下的内容作为阅读使用---------------------------------------

$ModLoad imfile #装载imfile模块,可以将任何的标准输入转换为syslog消息。
$InputFilePollInterval 5 #检查日志文件间隔 (秒)
$WorkDirectory var/spool/rsyslog #定义工作目录,例如队列文件存储存储文件夹。
$PrivDropToGroup root #使用哪个用户组的名义

##Nginx访问日志文件路径,根据实际情况修改:
$InputFileName /opt/plugin/nginx/logs/access.log#读取日志文件
$InputFileTag nginx-access:#日志附加标签,用于日志接收端根据tag分别处理。
$InputFileStateFile stat-nginx-access #记录指定监控日志文件的处理状态
$InputFileSeverity info #定义日志的报警级别
$InputFilePersistStateInterval 25000#表示处理多少行后更新状态文件
$InputRunFileMonitor #启动此监控,没有此项,上述配置不生效。

##Nginx错误日志文件路径,根据实际情况修改:
$InputFileName /opt/plugin/nginx/logs/error.log
$lnputFileTag nginx-error:
$InputFileStateFile stat-nginx-error
$InputFileSeverity error
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
. @192.168.50.9:514 ##一个@为UDP,两个@@为TCP
---------------------------------------横线以上的内容作为阅读使用---------------------------------------