我是zabbix的新手。我有一个基本要求,即使用zabbix监视不同日志消息的发生。比如说,当有日志消息"server starting"
时,zabbix应该显示该警报。这个想法是,如果服务器(重新)在最后10分钟内启动10次,那么zabbix仪表板(或任何其他地方)应该显示10次。
我为此完成了以下工作:
Type : Zabbix Agent (Active) key : log[/opt/mylog/logs/abc.log,server starting] Type of information : Log Update Interval (in sec) : 30
{MyTemplate的:日志[/opt/mylog/logs/abc.log,server 起动] .logeventid(1)} = 0
使用logeventid(1),我发现警报(触发器)只生成一次。它只在Dashboard --> Last 20 issues
中出现一次。如果我转到Monitoring --> Trigger
,我只会看到一次警报,尽管日志文件有10条消息"server starting"
(服务器重启10次)。
然后我将触发器设置为以下:
{MyTemplate的:日志[/opt/mylog/logs/abc.log,server 起动] .nodata(300)} = 0
现在,在Monitoring --> Trigger
,我看到警报(触发器)10次,但是,Dashboard --> Last 20 issues
它在300秒后消失了。
我的问题是:
应该使用什么触发功能?如果同一消息在一段时间内在日志文件中出现10次,我想在zabbix中看到10个警报。
使用nodata(300),为什么警报会在300秒后消失?
如果我使用30分钟而不是300秒作为nodata()的参数,这样可以吗?
答案 0 :(得分:3)
函数logeventid()
通常用于Windows和VMware事件日志。在这种情况下,它可能不应该被使用,它可能会被触发,这可能表明Zabbix中存在错误。
无论如何,您可以检查"多个问题事件生成"触发器配置中的框和触发器将在每次条件为真时生成新的PROBLEM事件,而不管其先前的值。您可以尝试使用始终为true的函数,而不是logeventid()
,而不是strlen()>0
。
如果您希望触发器在一段时间后(例如10分钟)进入“正常”状态,则可以添加nodata(10m)
。然后你的触发器将如下所示:
{MyTemplate:log[/opt/mylog/logs/abc.log,server starting].strlen()}>0 and
{MyTemplate:log[/opt/mylog/logs/abc.log,server starting].nodata(10m)}=0