Zabbix - Web 场景触发器。如何忽略第一次失败的尝试?

Zabbix - Web 场景触发器。如何忽略第一次失败的尝试?

问题:

触发发送电子邮件立即地当网站无法访问时。

系统:

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

如果你给出答案,请解释一下。请随意提问。

答案1

解决方案/解决方法

我在每个触发器上添加了标签,并通过添加标签条件编辑了电子邮件操作。

例如:

首先发送电子邮件操作:无法 ping 服务器。

ACTION tab
Conditions:
Tag value server equals icmpping

(其余不变)

第二次发送电子邮件操作:无法访问该网站。

ACTION tab
Conditions:
Tag value server equals web

OPERATIONS tab
Default operation step duration: 3m
Operation details: Steps = 2-2; Step duration = 0

(其余不变)

Trigger expression:
{VIRTUALMACHINE:web.test.fail[website.com].last()}>0

现在,Zabbix 会在检测到网站瘫痪 3 分钟后向我发送一条消息,如果问题在这 3 分钟内得到解决,Zabbix 将不会发送电子邮件。

答案2

物品web.tyest.fail 返回场景失败的步骤鉴于此,您可以像这样实现所需的结果:

{VIRTUALMACHINE:web.test.fail[website.com].min(#3)}>0

这将检查最后 3 个值,如果它们都大于 0(失败),则发出警报。考虑以下场景:

  • 一切都很好并且值为 0。
  • 网站瘫痪,出现非零值。最后 3 个值的最小值仍为 0,无警报。
  • 网站仍然瘫痪,又出现了一个非零值。最后 3 个值中的最小值仍为 0(最后 3 个值中剩下一个 0),没有警报。
  • 站点仍处于关闭状态,另一个非零值到达。前 3 个值中的最小值现在为非零值,触发器将触发。

关于您尝试过的表达方式的一些补充说明:

  • 您用于函数的值3和被忽略。3mlast()
  • 1您用于函数 min 的值min()表示秒,因此该触发表达式基本上根本不起作用。

相关内容