查看原文
其他

Zabbix 常用配置、日常运维中的 11 个典型问题,你该这样应对!

everychengxuan twt企业IT社区 2022-07-03

社区最近组织了“Zabbix的常用配置和日常运维交流”,探讨了以下几方面

  • Zabbix安装配置;

  • Zabbix数据采集(Agent,自定义脚本,SNMP,IPMI等);

  • Zabbix事件设计(触发器,触发器表达式);

  • Zabbix图形展示(grafana);

  • Zabbix性能调优(数据库优化,Zabbix配置文件优化,数据库表分区)

  • Zabbix二次开发(API)。

社区专家everychengxuan从活动中选取比较有针对性的问题,梳理如下,对Zabbix感兴趣、正在学习或使用的朋友,可以从中获得实用参考。


Zabbix安装配置


问题:

1.Zabbix的界面调试到中文模式,看图像出现乱码怎么回事?

2.Zabbix做分布式好做吗,哪位有相关文档?


[解答]:

Zabbix的安装配置不多赘述,Zabbix官方文档介绍很详尽: > https://www.zabbix.com/documentation/3.0/manual/installation

另外可以参考论坛会员发表的文章:
http://www.aixchina.net/Article/178287
http://www.aixchina.net/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/
论坛会员bluetom520发表的文章:
http://www.aixchina.net/Article/178291


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



浏览更多该主题内容请点击阅读原文


长按二维码关注“AIX专家俱乐部”公众号

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存