你应如何对付Zabbix 常用配置、日常运维中的 11 个典型问题!
本帖最后由 monicazhang 于 2017-8-9 17:37 编辑社区最近组织了“Zabbix的常用配置和日常运维交流”,探讨了以下几方面
[*]Zabbix安装配置;
[*]Zabbix数据采集(Agent,自定义脚本,SNMP,IPMI等);
[*]Zabbix事件设计(触发器,触发器表达式);
[*]Zabbix图形展示(grafana);
[*]Zabbix性能调优(数据库优化,Zabbix配置文件优化,数据库表分区)
[*]Zabbix二次开发(API)。
社区专家everychengxuan从活动中选取比较有针对性的问题,梳理如下,对Zabbix感兴趣、正在学习或使用的朋友,可以从中获得实用参考。
Zabbix安装配置
问题:1.Zabbix的界面调试到中文模式,看图像出现乱码怎么回事?2.Zabbix做分布式好做吗,哪位有相关文档?
[解答]:Zabbix的安装配置不多赘述,Zabbix官方文档介绍很详尽: > documentation/3.0/manual/installation另外可以参考ITIL培训基地会员发表的文章:
Article/178287
Article/178419Zabbix本身就具备分布式的优点,如同嘉宾bluetom520所答,Zabbix Server<--->Zabbix Proxy<--->Zabbix Agent就可以实现分布式;分布式的部署参考官方文档:documentation/3.0/manual/distributed_monitoring/proxiesfile:///C:\Documents and Settings\xz17\Application Data\Tencent\Users\543032323\QQ\WinTemp\RichOle\%~NIER4QQIIY]_UNLK]_D@A.png
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内置了几个基本的宏,例如:
[*]如果想使用更多的宏,来传递更多关于主机的信息,可以在添加主机的时候,写入更多的资产信息,那么可以在事件内容里就可以通过添加资产对应的宏, 来展示关于主机更多的信息。documentation/3.0/manual/appendix/macros/supported_by_location
[*]附上关于Zabbix微信和阿里钉钉报警的脚本链接:微信:bluetom520/zabbix-weixin-picture阿里钉钉:bluetom520/dingding
Zabbix图形展示问题:
Zabbix只支持那么几种图吗?
[解答]:众所周知,只要接触过Zabbix的人,都认为Zabbix的图形展示不够灵活,这也催生了大量的用户去研究Grafana,Grafana安装很简单,但是配置仪表盘确实耗费时间,刚接触的用户,建议先去Grafana的官方演示站,研究下官方配置的仪表盘, 参考下官方仪表盘的JSON文件:Grafana Play Home :
ITIL培训基地会员bluetom520发表的文章:
Article/178291
Zabbix性能调优
问题:1.Zabbix在单位时间内采集监控大量指标的信息,会出现卡顿或空值的情况吗?为什么?
2.机器超过2000台时,Zabbix安装Proxy最佳实践是什么,有没有什么好的推荐?
[解答]:
[*]关于Zabbix的性能调优,主要从如下几个方面着手:
[*]Zabbix配置文件的调优(Poller数量、Timeout等);
[*]Zabbix监控项已经触发器表达式的调优(取值间隔、取值类型、触发器表达式函数的选择等);
[*]Zabbix数据库表分区,Zabbix在目前的版本(3.2)中,仍需要对数据库做表分区,表分区后,性能的提升是明显;关于表分区的脚本,参考《Zabbix企业级分布式监控系统》作者提供的脚本:itnihao/zabbix-book/tree/master/03-chapter
[*]Zabbix后端数据库的优化;
[*]Zabbix架构的优化,例如引入Proxy等。
[*]回归到ITIL培训基地会员提问的问题,监控项取值为空或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方面的介绍还是很详尽的, > documentation/3.0/manual/api
[*]熟练使用Zabbix的API,不仅对开发者,甚至对管理员而言,带来的提升都是巨大的,例如我们可以通过Zabbix API编写脚本,进行批量查询、批量修改、批量导出等,推荐Zabbix使用者参考Github一位作者的管理工具: > BillWang139967/zabbix_manager
原创:everychengxuan
页:
[1]