我正在运行一些 Zabbix Web 场景来收集某些网站的信息,并且某些 API 的 401 和 404 状态代码是可以接受的,我想在触发器表达式中采用这些。目前它们被认为是“关闭”,因为它们与 200 响应代码不匹配。
我在 Zabbix 中创建了一个 Web 场景,它接受以下响应代码:200、401、404(目前托管一些 API,所以这些很常见)
当我只允许 200 状态代码时,此检查工作正常。为此检查,我添加了 2 条关于 401 和 404 状态代码的“或”语句。由于某种原因,这会使触发器感到困惑,并且每次检查都“失败”
我为 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
对于 2 个新的状态代码,我将其更改为:
{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
我的方法正确吗?我该如何解决这个问题?
创建另一个触发器是不够的(我认为),因为原始触发器仍然会失败。