zabbix常见问题收集

2290阅读 4评论2014-08-07 davie5201314
分类:系统运维

1、zabbix监控误报的问题
最近发现zabbix监控一些端口比较多的服务器的时候,会产生误报情况,就是端口明明是正常的,却报警说端口挂了,然后很快恢复;另一个监控软件nagios却没有报警,查了几天,也没得到很好的解决办法,初步怀疑是不是队列问题,后来网上查到一个解决办法,在agentd.conf中添加一条自定义的项,取代现有的默认项。
UserParameter=net.tcp.listen.grep[*],grep -q $$(printf '%04X.00000000:0000.0A' $1) /proc/net/tcp && echo 1 || echo 0

补充:我在配置过程中忽略了两个问题,导致自定义的键值可能没有生效!
第一:如果你的UserParameter 包含\ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @这些字符,则需要开启下面这个参数
修改/etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
关于key 的名称定义注意事项
1、所有的数字;
2、所有的小写字母;
3、所有大写字母;
4、下划线;
5、破折号;
6、点.

第二:既然新定义了key,就得用net.tcp.listen.grep[*]取代旧的net.tcp.listen[*]
所以你还得在web界面修改项目的键值为net.tcp.listen.grep[端口]

这个经过验证后,发现效果很明显,从多台机器一晚上几十封误报,到一晚上特定两个端口几封误报!

另一方案,哥这次尝试用触发器表达式,某一分钟或者两分钟之内,出现两次误报才报警!
{postfix:net.tcp.listen[25].count(2m,0)}>1
这个只能是第一种方案的补充,改过后,那几个特定端口,在周五和双休日的三天里,只误报过两封!至于为何不能彻底杜绝,我也很无语了!

2、关于键值中$和$$用法的问题
在使用自定义键值中,发现一个问题,那就是后面的命令项中,明明在shell中可用的$,换到agentd中,会get不到值,后来问了一些朋友,才恍然大悟,因为例如awk '{print $1}',这里的$1本来在awk中是取第一列,但是这里却还有个问题,$1也同时是参数替代,这样就变得混乱了;如果想继续使用shell中的含义,就必须要多加一个$$符号才行


3、最近新上线了一批机器,设置自动发现规则和动作,使用的proxy,不触发动作报警,只在zabbix里显示有问题,但没有动作
分析:第一,使用自动发现的主机,分配的名字,居然是192.168.1.2(proxy服务器):bogon,一堆的bogon,这个问题我还没找到解决办法,就手动改成192.168.1.2:ip(agentd的主机名)
第二:改了以上的,毫无效果,于是又查了日志,没什么可利用的东西,个人感觉zabbix的日志比较鸡肋,没什么帮助,于是想看看zabbix的服务端sql,不懂每个表的作用?一个个点开看,然后发现在autoreg_host这个表里,找到一些不同的东西,发现里面有一个键值listen_dns新增加的也有很多的bogon,删掉后,可以报警了!
上一篇:Salt安装与日常使用
下一篇:nginx健康检查

文章评论