李承轩
作者李承轩2017-06-15 11:28
系统工程师, 某某公司

Zabbix的常用配置和日常运维交流问答集锦

字数 4889阅读 5967评论 1赞 3

活动介绍

1496137964Rjcd.jpg

1496137964Rjcd.jpg

先前,我们在2016年9月14日组织了一场主题为"运筹帷幄之中, 决胜千里之外"——系统监控软件常见问题答疑解惑的活动, 那时,我们还在讨论Zabbix与众多商业监控系统的优劣,而现在,Zabbix的影响力已势不可挡,通过百度指数,可见Zabbix相关的搜索趋势已经从简单的安装配置演化到二次图形展示和二次开发等。
activity_5927d21b7f828.png
activity_5927d21b7f828.png

越来越多的运维人员开始使用Zabbix,针对分散的平台资源通过Zabbix这种自动化监控工具来进行管理,实现从“被动”转为“主动”管理,随之掌控设备、系统、应用的运行状况。那么,怎么才能使用并掌握Zabbix的全部功能呢?
2017年5.31日-6.6日,大家可以从以下几个方面(但不局限于此)来探讨Zabbix的方方面面:

  • Zabbix安装配置;
  • Zabbix数据采集(Agent,自定义脚本,SNMP,IPMI等);
  • Zabbix事件设计(触发器,触发器表达式);
  • Zabbix图形展示(grafana);
  • Zabbix性能调优(数据库优化,Zabbix配置文件优化,数据库表分区)
  • Zabbix二次开发(API)。

本次活动以问答和分享的形式,欢迎大家积极参与,共同学习,共同进步!

如您希望与更多同行日常交流技术话题,欢迎扫描二维码添加好友,邀您加入相应技术交流群。


问答集锦

集锦按照按照活动的提纲抽选几个比较有针对性的问题。


Zabbix安装配置

  1. Zabbix的界面调试到中文模式,看图像出现乱码怎么回事?
  2. Zabbix做分布式好做吗,哪位有相关文档?

另外可以参考论坛会员发表的文章:
http://www.aixchina.net/Article/178287
http://www.aixchina.net/Article/178419

  • Zabbix本身就具备分布式的优点,如同嘉宾bluetom520所答,Zabbix Server<--->Zabbix Proxy<--->Zabbix Agent就可以实现分布式;

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内置了几个基本的宏,例如:

      <事件内容>{TRIGGER.NAME}</事件内容>
      <所属主机>{HOST.NAME}</所属主机>
      <主机地址>{HOST.IP}</主机地址>
      <当前状态>{TRIGGER.STATUS}</当前状态>
      <事件序号>{EVENT.ID}</事件序号>
      <项目序号>{ITEM.ID}</项目序号>
      <事件等级>{TRIGGER.SEVERITY}</事件等级>
      <触发时间>{EVENT.DATE}-{EVENT.TIME}</触发时间>
      <恢复时间>{EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}</恢复时间>
      <持续时间>{EVENT.AGE}</持续时间>
      <项目取值>{ITEM.LASTVALUE}</项目取值>

    2.jpg

    2.jpg

    微信图片_20170612160603.jpg
    微信图片_20170612160603.jpg

  • 如果想使用更多的宏,来传递更多关于主机的信息,可以在添加主机的时候,写入更多的资产信息,那么可以在事件内容里就可以通过添加资产对应的宏, 来展示关于主机更多的信息。

    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

    1.png

    1.png


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专家俱乐部对本次活动的组织与支持,也感谢论坛众多会员的参与。
如果遇到Zabbix的相关问题,欢迎在本网站提问。
同时欢迎大家扫码联系管理员加入本论坛的运维自动化技术交流群
activity_58d8b09e6d572.png

activity_58d8b09e6d572.png


如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论1 条评论

#bluetom520系统工程师, 某某公司
2017-06-15 21:18
轩总厉害
Ctrl+Enter 发表

本文隶属于专栏

活动总结
活动总结是社区交流活动内容的总结及延伸,为大家提供了社区专家们丰富且高水平的理论知识、实践经验以及常见问题的最佳解决方法,非常值得大家收藏学习。