使用rsyslog拉取N台远程服务器日志
一天踩一坑,坑坑不一样
接到任务多台服务器的多个日志文件拉取到本地服务器然后使用ELK展示,时间一天
当时还想着几分钟的事,结果发现好多坑
问题1:拉取到本地,都往一个文件里写验证后发现只拉取了一个日志文件
local /var/log/mylog
local1 /var/log/mylog
local2 /var/log/mylog
问题2:按照数字编号写的名字,最后发现从第七个开始不再往本地拉取了(确定配置没有写错)
磨磨唧唧一天下来竟然没弄完。尴尬。
后来抱着试试的心态竟然做好了。下面是我的步骤(如果哪做的不好望大神不要介意)
第一步
映射公网IP端口(默认UDP端口514),因为是从公网地址拉取日志到本地服务器
.。。。。。。。。
第二步
配置本地rsyslog
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak #修改配置文件以前先备份
vim /etc/rsyslog.conf
#$ModLoad imudp #打开日志接收模块
#$UDPServerRun 514 #通过UDP协议514端口传输 找到这两行去掉注释
*.* /var/log/mylog #在配置最下面写入 把所有级别的日志写入到/var/log/mylog
systemctl restart rsyslog #保存配置文件
第三步
配置远程服务器
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak #修改配置文件以前先备份
vim /etc/rsyslog.conf
#$ModLoad imudp #打开日志接收模块
#$UDPServerRun 514 #通过UDP协议514端口传输 找到这两行去掉注释
在配置文件最下面写入(本机是拉取三个目录的某个日志)
module(load="imfile" PollingInterval="10")
input(type="imfile" File="/mnt/tomcat-1/logs/server.log" Tag="CalculationUnit" Severity="info" Facility="local0" freshStartTail="on" deleteStateOnFileDelete="on")
input(type="imfile" File="/mnt/tomcat-2/logs/server.log" Tag="CalculationUnit" Severity="info" Facility="local1" freshStartTail="on" deleteStateOnFileDelete="on")
input(type="imfile" File="/mnt/tomcat-3/logs/server.log" Tag="CalculationUnit" Severity="info" Facility="local2" freshStartTail="on" deleteStateOnFileDelete="on")
local0.* @192.168.1.1:514 把日志发送给192.168.1.1:514
local1.* @192.168.1.1:514 File=“你要拉取日志的路径”
local2.* @192.168.1.1:514
systemctl restart rsyslog 重新启动rsyslog
无论你要拉取多少台服务器的日志只需修改路径,接收端IP:端口即可
配置完成以后记得验证一下
发送端:
echo “hello word 01” >> /mnt/tomcat-1/logs/server.log #一定要追加,不然把原来的日志覆盖了的话。。。。。
echo “hello word 02” >> /mnt/tomcat-2/logs/server.log
echo “hello word 03” >> /mnt/tomcat-3/logs/server.log
接收端:
vim /var/log/mylog #分解搜索刚才你追加的内容,验证每个日志文件都拉取到本地
/hello word 01
/hello word 02
/hello word 03
验证完以后在ELK写好配置路径索引即可在kafka上面展示了
如果有更好的方法 欢迎大佬指导
如果能帮到你,也是我的荣幸