在 Zabbix 中多次触发生成

Multiple times trigger generation in Zabbix

我是zabbix的新手。我有一个使用 zabbix 监视不同日志消息的发生的基本要求。比如说,当有日志消息 "server starting" 时,zabbix 应该显示该警报。这个想法是,如果服务器在过去 10 分钟内(重新)启动 10 次,则 zabbix 仪表板(或在任何其他地方)应该显示这 10 次。

我为此做了以下工作:

  1. 在模板 MyTemplate 下创建了一个项目:
Type : Zabbix Agent (Active)
key : log[/opt/mylog/logs/abc.log,server starting]
Type of information : Log
Update Interval (in sec) : 30
  1. 用表达式创建了一个触发器:

{MyTemplate:log[/opt/mylog/logs/abc.log,server starting].logeventid(1)}=0

使用 logeventid(1),我看到警报(触发器)只生成一次。它只在 Dashboard --> Last 20 issues 中出现过一次。如果我转到 Monitoring --> Trigger,我只看到一次警报,尽管日志文件有 10 个消息条目 "server starting"(服务器重新启动 10 次)。

然后我将触发器设置为以下:

{MyTemplate:log[/opt/mylog/logs/abc.log,server starting].nodata(300)}=0

现在,在 Monitoring --> Trigger,我看到警报(触发器)10 次,但是,从 Dashboard --> Last 20 issues 开始,它在 300 秒后消失。

我的问题是:

  1. 触发函数应该是什么,我应该使用什么?如果同一消息在一段时间内在日志文件中出现 10 次,我想在 zabbix 中看到 10 个警报。

  2. 使用 nodata(300),为什么警报会在 300 秒后消失?

  3. 如果我使用 30 分钟而不是 300 秒作为 nodata() 的参数可以吗?

函数 logeventid() 通常用于 Windows 和 VMware 事件日志。在这种情况下,它可能不应该被使用并且它被触发是可疑的,这可能表明 Zabbix 中存在错误。

无论如何,您可以在触发器配置中选中 "Multiple PROBLEM events generation" 框,每次条件为真时触发器都会生成一个新的问题事件,而不管其先前的值如何。您可以尝试使用始终为真的函数,而不是 logeventid(),例如 strlen()>0.

如果您希望触发器在一段时间后进入 OK 状态,比如 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