问题:
当站点无法访问时触发立即发送电子邮件。
系统:
Linux Debian Stretch,Zabbix 4.2.1。
Web场景的当前配置:
Scenario:
Name: website.com
Update interval: 30s
Attempts: 3
Agent: Zabbix
Steps:
(just one)
Name: website.com
URL: http://website.com/page.php
Follow redirects: checked
Timeout: 30s
(其余不变)
触发器的当前配置:
Name: The website.com can't be reached!
Expression: {VIRTUALMACHINE:web.test.fail[website.com].last(3m)}>0
(其余不变)
解释
如果站点在 3 分钟内无法访问(或最后 3 次检查,每次检查超时 30 秒),触发器必须发送电子邮件。我试图以多种方式进行(如下*),但是当 zabbix 第一次检测到问题时(而不是第 n 次尝试),我尝试的每个触发表达式都会立即发送电子邮件通知。
*
{VIRTUALMACHINE:web.test.fail[website.com].sum(#3)}>0
{VIRTUALMACHINE:web.test.fail[website.com].last(3m)}<>0
{VIRTUALMACHINE:web.test.rspcode[website.com,website.com].last(0)}#200
{VIRTUALMACHINE:web.test.fail[website.com].last(3)}#0
{VIRTUALMACHINE:web.test.fail[website.com].sum(#3)}>0
{VIRTUALMACHINE:web.test.fail[website.com].last(3)}>0
{VIRTUALMACHINE:web.test.fail[website.com].min(1)}>0
如果您给出答案,请解释一下。随意问。
解决方案/解决方法
我在每个触发器上添加了标签,并通过添加标签条件编辑了电子邮件操作。
例如:
(其余不变)
(其余不变)
现在 Zabbix 将在检测到网站关闭 3 分钟后向我发送消息,如果问题在这 3 分钟内得到解决,Zabbix 将不会发送电子邮件。
项目
web.tyest.fail
返回场景的失败步骤。鉴于此,您可以像这样实现所需的结果:这将检查最后 3 个值并在它们都高于 0(失败)时发出警报。考虑这种情况:
关于您尝试的表达式的一些附加说明:
3
和3m
您用于函数的值last()
被忽略。1
您用于函数 min 的值min()
表示秒,因此该触发器表达式几乎根本不起作用。