Zabbix模板SSH登录告警触发器配置报错:表达式参数无效问题求助
解决Zabbix SSH登录触发器表达式报错的思路
我之前也碰到过类似的触发器语法问题,结合你的配置情况,给你几个具体的排查和解决方向:
先确认监控项的键值是否合理
你配置的监控项键是log[/var/log/auth.log,"Accepted .*",,,,skip,\0],这里有两个可以优化的点:- 最后一个参数
\0是捕获整个匹配字符串的捕获组,但如果你的需求只是检测SSH登录日志出现,这个参数其实是多余的,可以去掉,简化成log[/var/log/auth.log,"Accepted .*",,,,skip]; - 触发器表达式引用监控项时,必须保证键的写法和监控项配置里完全一致,包括参数的引号、逗号分隔顺序都不能错。
- 最后一个参数
修正触发器表达式的语法
Zabbix 5.2中,change()函数返回值是1(值发生变化,即新匹配到日志)或0(无变化),所以正确的表达式应该判断等于1,而非大于0。另外,监控项键里的双引号可能会和表达式解析逻辑冲突,建议换成单引号试试:{Linux by Zabbix agent active:log[/var/log/auth.log,'Accepted .*',,,,skip].change()}=1如果还是报错,可以尝试去掉
skip参数(若不需要跳过重复日志),进一步简化表达式:{Linux by Zabbix agent active:log[/var/log/auth.log,'Accepted .*'].change()}=1先验证监控项是否正常采集数据
别着急调试触发器,先去Zabbix的「最新数据」页面,找到这个「SSH login」监控项,看看有没有采集到对应的日志条目。如果监控项本身没数据,触发器肯定不会生效——这时候要检查Zabbix Agent用户是否有读取/var/log/auth.log的权限,或者部分系统的SSH日志路径是/var/log/secure,确认路径是否正确。检查表达式的细节拼写
确认模板名称「Linux by Zabbix agent active」是否完全正确,有没有拼写错误或者多余/缺失的空格;另外,确保整个监控项键被完整包裹在大括号内,没有遗漏任何符号。
内容的提问来源于stack exchange,提问作者user19413311
相关产品推荐
相关产品推荐

