Zabbix - 设置接受多个响应代码的 Web 场景触发器

Zabbix - 设置接受多个响应代码的 Web 场景触发器

我正在运行一些 Zabbix Web 场景来收集有关某些网站和 API 的信息,因为某些 API 的 401 和 404 状态代码是可以接受的,我想在触发器表达式中采用这些代码。目前它们被视为“关闭”,因为它们与 200 响应代码不匹配。

我在 Zabbix 中创建了一个 Web 场景,它接受以下响应代码:200、401、404(当前托管一些 API,因此这些非常常见)

当我仅允许 200 状态代码时,此检查工作正常。我为此检查添加了 2 个有关 401 和 404 状态代码的“OR”语句。出于某种原因,这混淆了触发器,并且每个检查都“失败”

我为 200 状态代码检查设置了如下触发表达式:(效果很好!)

{Template App Nginx by Zabbix agent:web.test.error["Web Check Status 200, 401, 404"].last()}=0 or {Template App Nginx by Zabbix agent:web.test.fail["Web Check Status 200, 401, 404"].last()}>0 or {Template App Nginx by Zabbix agent:web.test.rspcode["Web Check Status 200, 401, 404","Web Check Status 200, 401, 404"].last()}<>200

对于两个新的状态代码,我将其更改为:

{Template App Nginx by Zabbix agent:web.test.error["Web Check Status 200, 401, 404"].last()}=0 or {Template App Nginx by Zabbix agent:web.test.fail["Web Check Status 200, 401, 404"].last()}>0 or {Template App Nginx by Zabbix agent:web.test.rspcode["Web Check Status 200, 401, 404","Web Check Status 200, 401, 404"].last()}<>200 or {Template App Nginx by Zabbix agent:web.test.rspcode["Web Check Status 200, 401, 404","Web Check Status 200, 401, 404"].last()}<>401 or {Template App Nginx by Zabbix agent:web.test.rspcode["Web Check Status 200, 401, 404","Web Check Status 200, 401, 404"].last()}<>404

现在我理解这个表达的逻辑如下:

警报条件:

web.test.error 等于 0
或 web.test.fail 大于 0
或 web.test.rspcode 不等于 200
或 web.test.rspcode 不等于 401
或 web.test.rspcode 不等于 404

我的方法正确吗?我该如何解决这个问题?
创建另一个触发器是不够的(我认为),因为原始触发器仍然会失败。

答案1

问题 1:

项目web.test.error以字符串形式返回场景的最后一个错误消息。因此,您的表达式

{Template App Nginx by Zabbix agent:web.test.error["Web Check Status 200, 401, 404"].last()}=0

永远不会开火,因为该物品永远不会0将其更改为

{Template App Nginx by Zabbix agent:web.test.error["Web Check Status 200, 401, 404"].strlen()}>=0

和逻辑运算符。这样就解决了第一个问题。

问题2:

您不需要该item.rspcode<>200 or item.rspcode<>401 or item.rspcode<>404部分。您已经在 Web 场景中指定了预期响应代码。在您的案例中会发生什么:

  • Zabbix收到 HTTP 200:item.rspcode<>401并且item.rspcode<>404真的. 扳機正在啟動。
  • Zabbix 收到 HTTP 401 :item.rspcode<>200并且item.rspcdoe<>404真的. 扳機正在啟動。
  • Zabbix 收到 HTTP 404 :item.rspcode<>200并且item.rspcode<>401真的. 扳機正在啟動。

从触发表达式中删除上述部分。这应该可以解决问题 2。

总结

像这样做:

{Template App Nginx by Zabbix agent:web.test.error["Web Check Status 200, 401, 404"].strlen()}>=0 and
{Template App Nginx by Zabbix agent:web.test.fail["Web Check Status 200, 401, 404"].last()}>0

相关内容