windows部署多实例filebeat监控相同路径下文件
一、前提:
现项目需求,在windows服务器上部署filebeat读取日志文件变更,发送到kafka。变态的是:要读取同一目录下日志文件,往两个不相关的kafka发送变更信息(注意这两个kafka完全不相关,不是同一集群)。怎么搞?网上查了半天资料,有说改filebeat.yml的试了半天没用。最后采用了最笨的方法,复制两份filebeat,采用不同配置。
二、配置
filebeat版本:8.11.3
注意两份filebeat完全放在两个不同的目录下,我这里目录分别为:D:\\jt\\filebeat、D:\\jt\\filebeatxinguan两个目录。
两个filebeat都需要改filebeat.yml、filebeat-server.xml
第一个filebeat配置:
filebeat.yml
filebeat.inputs:
- type: filestreamenabled: truepaths:- D:\position\*.txtfields:code: haiheng # 新增默认参数output.kafka:hosts: ["kafka1:9092"] topic: "topic_position"
filebeat-server.xml
<service><id>filebeat-server</id><name>filebeat-server</name><description>filebeat文件变更捕获</description><!-- 可设置环境变量 --><env name="HOME" value="%BASE%"/><executable>%BASE%\filebeat.exe</executable><arguments>-e -c filebeat.yml</arguments><!-- <logmode>rotate</logmode> --><logpath>%BASE%\logs</logpath><log mode="roll-by-size-time"><sizeThreshold>10240</sizeThreshold><pattern>yyyyMMdd</pattern><autoRollAtTime>00:00:00</autoRollAtTime><zipOlderThanNumDays>5</zipOlderThanNumDays><zipDateFormat>yyyyMMdd</zipDateFormat></log>
</service>
第二个filebeat配置:
filebeat.yml
filebeat.inputs:
- type: filestreamenabled: truepaths:- D:\position\*.txtfields:code: haiheng # 新增默认参数output.kafka:hosts: ["kafka2:9092"] topic: "topic_position"
filebeat-server.xml
<service><id>filebeat-server-xinguan</id><name>filebeat-server-xinguan</name><description>filebeat(新馆)文件变更捕获</description><!-- 可设置环境变量 --><env name="HOME" value="%BASE%"/><executable>%BASE%\filebeat.exe</executable><arguments>-e -c filebeat.yml</arguments><!-- <logmode>rotate</logmode> --><logpath>%BASE%\logs</logpath><log mode="roll-by-size-time"><sizeThreshold>10240</sizeThreshold><pattern>yyyyMMdd</pattern><autoRollAtTime>00:00:00</autoRollAtTime><zipOlderThanNumDays>5</zipOlderThanNumDays><zipDateFormat>yyyyMMdd</zipDateFormat></log>
</service>
改好配置,分别在对应的目录下进入cmd,执行:
filebeat-server.exe install
看到***was installed successfully. 一般来说没啥问题。
接下来打开服务,找到对应的服务右键启动(有点糊,不好截图,手机拍的。。。):
三、查看进程
执行
Get-Process | Where-Object { $_.ProcessName -eq "filebeat" }
可以看到两个进程(有点糊,不好截图,手机拍的。。。):
OK,完活儿。