在 Zabbix 中多次触发生成
Multiple times trigger generation in Zabbix
我是zabbix的新手。我有一个使用 zabbix 监视不同日志消息的发生的基本要求。比如说,当有日志消息 "server starting"
时,zabbix 应该显示该警报。这个想法是,如果服务器在过去 10 分钟内(重新)启动 10 次,则 zabbix 仪表板(或在任何其他地方)应该显示这 10 次。
我为此做了以下工作:
- 在模板 MyTemplate 下创建了一个项目:
Type : Zabbix Agent (Active)
key : log[/opt/mylog/logs/abc.log,server starting]
Type of information : Log
Update Interval (in sec) : 30
- 用表达式创建了一个触发器:
{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 秒后消失。
我的问题是:
触发函数应该是什么,我应该使用什么?如果同一消息在一段时间内在日志文件中出现 10 次,我想在 zabbix 中看到 10 个警报。
使用 nodata(300),为什么警报会在 300 秒后消失?
如果我使用 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
我是zabbix的新手。我有一个使用 zabbix 监视不同日志消息的发生的基本要求。比如说,当有日志消息 "server starting"
时,zabbix 应该显示该警报。这个想法是,如果服务器在过去 10 分钟内(重新)启动 10 次,则 zabbix 仪表板(或在任何其他地方)应该显示这 10 次。
我为此做了以下工作:
- 在模板 MyTemplate 下创建了一个项目:
Type : Zabbix Agent (Active) key : log[/opt/mylog/logs/abc.log,server starting] Type of information : Log Update Interval (in sec) : 30
- 用表达式创建了一个触发器:
{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 秒后消失。
我的问题是:
触发函数应该是什么,我应该使用什么?如果同一消息在一段时间内在日志文件中出现 10 次,我想在 zabbix 中看到 10 个警报。
使用 nodata(300),为什么警报会在 300 秒后消失?
如果我使用 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