You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Zabbix 6日志监控配置调整及新增触发规则咨询

Zabbix 6日志监控配置调整及新增触发规则咨询

看起来你现在的配置是在整个日志文件里搜索"ERROR"触发告警,想要改成只检查日志最后一行是否包含"ERROR",同时还要添加一个当"INFO"出现时解决问题的触发规则对吧?我来帮你一步步调整:

一、修改触发器,仅监控最后一行的"ERROR"

你当前的触发器表达式是统计日志中所有匹配"ERROR"的行数,要改成仅检查最新一行的内容,只需要把count()函数换成last()结合匹配判断即可:

last(/Linux Azure Waagent/log[/var/log/waagent.log,,,,skip]) matches "ERROR"

这个表达式的作用是:获取log[/var/log/waagent.log,,,,skip]监控项的最新一条日志记录(也就是日志的最后一行),判断其中是否包含"ERROR"字符串,如果匹配就触发告警。

如果想更严谨地匹配独立的"ERROR"单词(避免误匹配"ERRORCODE"这类包含ERROR的字符串),可以用正则优化:

last(/Linux Azure Waagent/log[/var/log/waagent.log,,,,skip]) matches "\bERROR\b"

二、添加当"INFO"出现时的问题恢复规则

你提到希望当"INFO"打印时解决问题,这里应该是指出现特定INFO日志时自动恢复之前的ERROR告警吧?

Zabbix支持为触发器设置恢复表达式,不需要单独创建新触发器,直接在刚才的ERROR触发器里配置即可:

  1. 编辑你的ERROR触发器,找到"Recovery expression"(恢复表达式)字段
  2. 填入以下表达式:
last(/Linux Azure Waagent/log[/var/log/waagent.log,,,,skip]) matches "INFO"

这样设置后,当日志最后一行出现"INFO"时,之前触发的ERROR告警就会自动恢复为正常状态。

如果需要匹配特定的INFO内容(比如某个具体的恢复完成信息),可以用正则精准匹配:

last(/Linux Azure Waagent/log[/var/log/waagent.log,,,,skip]) matches "INFO: .*recovery completed"

补充小提示

  • 你的log[/var/log/waagent.log,,,,skip]监控项里的skip参数是对的,它会跳过已处理过的日志行,只读取新增内容,很适合实时监控场景。
  • 如果日志更新频率很高,可以适当调整监控项的更新间隔,避免不必要的性能消耗。

备注:内容来源于stack exchange,提问作者gotothesky

火山引擎 最新活动