Zabbix 运维的 11 个典型问题
Zabbix安装配置
典型问题:
1.Zabbix的界面调试到中文模式,看图像出现乱码怎么回事?
2.Zabbix做分布式好做吗,哪位有相关文档?
[解答]:
Zabbix的安装配置不多赘述,Zabbix官方文档介绍很详尽:
https://www.zabbix.com/documentation/3.0/manual/installation
另外可以参考论坛会员发表的文章:
http://www.talkwithtrend.com/Article/178287
http://www.talkwithtrend.com/Article/178419
Zabbix本身就具备分布式的优点,如同嘉宾bluetom520所答,Zabbix Server<--->Zabbix Proxy<--->Zabbix Agent就可以实现分布式;
分布式的部署参考官方文档:
https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring/proxies
Zabbix数据采集
典型问题:
1.Zabbix的采集指标的工作原理和过程是怎么样的?请分析描述一下
2.请问Zabbix通过什么方法监控oracle和weblogic比较好?
3.Zabbix如何通过SNMP监控?
[解答]:
Zabbix支持多种数据采集方式:
Zabbix agent checks
SNMP agent checks
SNMP traps
IPMI checks
Simple checks
VMware monitoring
Log file monitoring
Calculated items
Zabbix internal checks
SSH checks
Telnet checks
External checks
Aggregate checks
Trapper items
JMX monitoring
ODBC checks
在一般的监控情境下,常用的监控方式为:
操作系统直接用Zabbix Agent,内置了很多键值,特殊情况下,可以用自定义键值来补充监控项;
Zabbix内置了一些常用的监控模板,比如MySQL、Tomcat等,但是其他的应用,比如数据库Oracle、DB2、SQLServer等,我们可以通过Shell、Python等脚本调用应用的命令来返回应用自身的数据,然后通过Zabbix Agent将数据传给Zabbix Server;Weblogic、WAS可以通过JMX监控。
SNMP和SNMP Trap是监控硬件常用的方式,X86服务器均可以通过SNMP来获取厂商的硬件管理平台的硬件状态,比如IBM的IMM、HP的ILO、Dell的idrac、Huawei的BMC等;网络设备可以直接通过SNMP来监控;存储设备大多只支持SNMP Trap,SNMP Trap获取的数据无法客户化,需要提前用脚本(比如Perl)提前对内容进行切片,而且触发器不容易编写(SNMP Trap触发的事件多种多样,触发器字段不容易匹配所有的事件),但是存储一般都有命令行管理软件,可以通过Shell、Python等脚本调用存储管理软件的命令来返回存储的状态,然后通过Zabbix Agent将数据传给Zabbix Server。
Zabbix事件设计
典型问题:
1.Zabbix的告警事件关联是怎么做的?
2.Zabbix的告警事件丰富怎么做的?
3.Zabbix的重复告警压缩是怎么做的?告警抑制是怎么做的?
[解答]:
首先,合理的触发器触发器表达式,可以让事件的接收者更容易判断事件的内容、严重程度,在设计触发器表达式时,注意事件的逻辑性,合理运用一些运算符号来使事件触发更加合理:
多使用逻辑运算符,精确触发事件;
多使用时间单位,对同一事件以时间来递增事件严重程度;
多使用类似nodata这种函数来控制触发恢复区间,消除虚报。
其次,在Zabbix的动作里,多设计几个条件和操作,可以对事件分级发送到不同的接受者。
最后,关于事件的内容,Zabbix内置了几个基本的宏,例如:
如果想使用更多的宏,来传递更多关于主机的信息,可以在添加主机的时候,写入更多的资产信息,那么可以在事件内容里就可以通过添加资产对应的宏, 来展示关于主机更多的信息。
https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location
附上关于Zabbix微信和阿里钉钉报警的脚本链接:
微信:https://github.com/bluetom520/zabbix-weixin-picture
阿里钉钉:https://github.com/bluetom520/dingding
Zabbix图形展示
典型问题:
Zabbix只支持那么几种图吗?
[解答]:
众所周知,只要接触过Zabbix的人,都认为Zabbix的图形展示不够灵活,这也催生了大量的用户去研究Grafana,Grafana安装很简单,但是配置仪表盘确实耗费时间,刚接触的用户,建议先去Grafana的官方演示站,研究下官方配置的仪表盘, 参考下官方仪表盘的JSON文件:
Grafana Play Home :
http://play.grafana.org/
Zabbix性能调优
典型问题:
1.Zabbix在单位时间内采集监控大量指标的信息,会出现卡顿或空值的情况吗?为什么?
2.机器超过2000台时,Zabbix安装Proxy最佳实践是什么,有没有什么好的推荐?
[解答]:
关于Zabbix的性能调优,主要从如下几个方面着手:
Zabbix配置文件的调优(Poller数量、Timeout等);
Zabbix监控项已经触发器表达式的调优(取值间隔、取值类型、触发器表达式函数的选择等);
Zabbix数据库表分区,Zabbix在目前的版本(3.2)中,仍需要对数据库做表分区,表分区后,性能的提升是明显;
关于表分区的脚本,参考《Zabbix企业级分布式监控系统》作者提供的脚本:https://github.com/itnihao/zabbix-book/tree/master/03-chapter
Zabbix后端数据库的优化;
Zabbix架构的优化,例如引入Proxy等。
回归到论坛会员提问的问题,监控项取值为空或Timeout,均为性能问题的一种表现,可以参考上面提到的Zabbix调优方式进行调整优化;
关于部署Porxy,首先强调一点,被监控主机超过2000台,不一定要上Proxy,Proxy部署与不部署,取决于Server端数据库的压力,首先确认Zabbix Server的Poller配置是否合理:
Zabbix Queue;
Zabbix Busy Process;
其次检查Zabbix的Required server performance, new values per second,这个决定了每秒写入数据库的值,例如2000台主机,有的环境这个值能达到2000+,有的环境甚至1000左右,我们要做的是,尽量去减少这个数值,下面几种方式均能减少此数值:
主机的监控项,是否存在有待优化的监控项,是否可以对此类监控项进行删减;
监控项的取值间隔,是否所有监控项的取值间隔都非常短,是否可以对 对不同的监控项设定不同的取值间隔;
自动发现的监控项,待第一次自动发现后,可以根据自身环境,大幅度延长自动发现列表的取值间隔时间,甚至关闭自动发现。
然后必须对数据库做表分区,如果Innodb有压力,可以换成TokuDB;
最后可以考虑部署Proxy,参考嘉宾bluetom520的回答,每个Porxy管理400-1000台被监控主机。
当然,硬件带来的提升可能会更简单的解决问题,例如普通SATA盘换成SSD等。
Zabbix二次开发
关于Zabbix二次开发的课题,提问者甚少,Zabbix官方文档中,关于Zabbix API方面的介绍还是很详尽的
https://www.zabbix.com/documentation/3.0/manual/api
熟练使用Zabbix的API,不仅对开发者,甚至对管理员而言,带来的提升都是巨大的,例如我们可以通过Zabbix API编写脚本,进行批量查询、批量修改、批量导出等,推荐Zabbix使用者参考Github一位作者的管理工具:
https://github.com/BillWang139967/zabbix_manager