我正在使用Zabbix 2.2。
我有一个非常具体的环境,我必须通过脚本生成所需的数据文件,然后将该文件从主机上传到ftp并从ftp下载到Zabbix服务器。
下载文件后,我用log []和vfs.file.regexp []项目检查它。
我使用这些项目如下:
log[/path/to/file.txt,"C.*\s([0-9]+\.[0-9])$",Windows-1250,,"all",\1] vfs.file.regexp[/path/to/file.txt,"C.*\s([0-9]+\.[0-9])$",Windows-1250,,,\1]
我正在parsing的行如下所示:
C: 8195Mb 5879Mb 2316Mb 28.2
我想提取的值是28.2在文件的末尾。
我目前试图解决的问题是,当我更新文件(从主机上传到FTP,然后从FTP下载到Zabbix服务器),值不会更新。
我只是在开始时只是logging[],但我怀疑,该日志[]把这个文件作为真正的日志文件,并没有检查相同的行(尽pipe,遵循文档,它应该与“所有”值)我也添加了vfs.file.regexp []项目。
日志[]在过去收到一个值,但不会更新。
vfs.file.regexp []到目前为止还没有收到任何值。
file.txt已经重新上传和redownloaded几次,情况并没有改变。
看来log []只读取文件中的新行,如果有任何更改,它不检查已经捕获的行。
zabbix_agentd.log文件不报告访问文件的任何问题,也不报告正则expression式的构造(当我设置了错误的东西时,它报告“不支持”日志[]键)。
我使用代理的debugging日志logging级别 – 我还没有发现任何关于该问题的有趣的信息。
我不知道我可能会做错什么,或者我不知道Zabbix如何执行这些检查。 我看到两个解决scheme:添加更多的行到文件,而不是做一个新的或新的文件,并检查他们与logrt [],但这些不满足我的愿望。
任何帮助是极大的赞赏。
当然,如果要求的话,我会提供更多的信息 – 现在我不知道还有什么可能是有用的。
项目日志[]是指文件的大小一行一行地增长,所以在你的情况下正确的做法是坚持vfs.file.regexp []。
使用vfs.file.regexp [],除了在Zabbix(报告为ZBX-8248 )中存在一个可以防止正则expression式中匹配Windows行结尾的符号“$”的错误之外,您正在做的一切都是正确的。
因此,为了使它在同时工作,你应该从正则expression式中省略“$”。
我还没有尝试过Zabbix的日志function,但是我猜测这个日志文件在Zabbix代理启动期间打开了一次,然后保持打开状态。 这意味着,即使你覆盖你的文件,旧的文件句柄仍然保持打开,Zabbix从那里读取数据。
如果是这样,我build议你两个解决scheme:
1)以某种方式发送HUP信号到Zabbix代理(所以它会重新打开文件进行阅读)
要么
2)在Zabbix中使用External script
function,并创build一个parsing文件的shell脚本。