《Zabbix监控系统深度实践》精读笔记

首先说下,为什么精读,因为:

  • 内部也在用Zabbix。
  • 我个人懒得写说明,只写了一些规范和指导性的东西,官方Wiki基本解决大部分问题。
  • 内部有两本Zabbix书籍供组员阅读。
  • 我很纳闷这本书居然解决不了他们的疑惑?

    第一部分 概念篇

    第1章 自动化运维和监控系统

    本章主要介绍了互联网公司运维部门的常态,以及对运维自动化的看法,并且对监控系统的理想状况做了初步的设想。

    第2章 Zabbix简介

    介绍了Zabbix的简单情况,并详细说明了选择Zabbix的理由。后面的名词约定个人也有相同看法——Zabbix官方不如构建个平台进行词条的翻译工作,mRemoteNG软件在这方面就做得很好。

    第3章 Zabbix安装

    安装部分就说得比较简单了,相关的参数设置也没有介绍,可能是考虑到读者尽快搭建环境的原因吧。但是Agent的部分就说不过去了,说得也太简单了——个人认为这和作者所在公司的系统环境有关系,如果他们的环境相当复杂,他就会比较细致的介绍HP-UX、AIX、Solaris上的安装方式。
    配置文件的介绍非常详尽,需要认真看下,当然,和官方的一样。

    第4章 监控第一台Host

    这一章相当于Zabbix使用的快速入门,基本上介绍到了监控配置到告警的全部必要内容。

Action中default message和recovery message居然没有细说,这也可能是作者公司内部不使用Zabbix直接告警的问题吧——我想说的就是,Trigger设置中所使用到的Item在message中展示是个问题。我们曾有过一个Trigger由多个Item组成,所以这里Item就需要设置最大的数量才能展示完全,而数量较少的时候邮件本身又比较难看,这个问题比较令人纠结。

另外可以看出2.2版本的Action支持了更多Event,Internal Event想必是很多老版本管理员所期望的功能,虽说这个可以自行实现。

第二部分 配置篇

第5章 增加监控

Item类型相关

熟悉Zabbix的人可能已经了解以下两种关联方式:

  • Item -> Template -> Host
  • Item -> Host

虽然说Zabbix支持多种Item类型,但通常使用的可能是Agent和SNMP类型。JMX和IPMI两种类型虽然用得较少,但是实际用处不小。

需要注意的是当Agent发送的数据在Server上出错了(比如Host和Item被disabled或者删除),那么Agent是不会重试的。

IPMI使用上的困难在于无处获取这些信息,像SNMP还有Mib文件可以参考。

日志文件监控需要注意的事项很受用,以前没有研究过这些内容:

  • Agent会从上次读取的地方读取日志,因为有字节计数器和最新时间计数器。
  • 当日志小于字节计数器中的数字时,字节计数器重置为0。
  • 发送日志量最多为Agent配置中BufferSize的50%。
  • logrt中,正则表达式只对文件名有效。

计算型的Item还没有用过,类似的场景还没遇到——虽然有想过用一个数值来反应服务器状态。

Zabbix内部监控中,history开头的项目不要在MySQL InnoDB、Oracle或者PostgreSQL中使用,可能会出现性能问题。

新增了SSH、Telnet类型,都可以使用密码登录。

Aggregate类型的也没有使用过,这类项目直接查询数据库获取数据进行聚合。

Trapper类型实际是Agent推送数据给Server端,就是Agent目录中zabbix_sender的作用了。

JMX类型是通过Java管理接口获取数据,目前内部的管理接口由于安全问题大多数都关闭了(我说是没有人充分了解配置,你信么)。

ODBC类型其实很早就享用了,问题是unixODBC总是报错。升级时再试试。

模板相关

Template的关联、嵌套很好理解。

使用中,Zabbix 2.0在跨模板关联时往往会出现问题。

其他

VMware监控目前没用到,主要是获取一些配置信息较为困难,没有人来支持。书中讲得也不是非常细致。

第6章 报警配置

Trigger设置原则

这里需要注意的是Trigger表达式中可以同时考虑Trigger在触发时和未触发时的触发条件。

  • 未触发:{TRIGGER.VALUE}=0
  • 已触发:{TRIGGER.VALUE}=1
    但需要注意,已触发的条件是取反的。

    支持的Function

    Function这一块的内容比较细致,可以先大概记一下都能够做什么,然后具体到用时在仔细考虑。

    Trigger依赖

    Trigger的依赖在前期没有去好好考虑(时间及人力问题),所以后来索性就没有使用。

Zabbix中Discovery的项目不知道新版本中是否可以进行Trigger的依赖呢?以前根本没有这个选项的。——新版本依旧不能依赖,但是需要测试是否可以通过表达式的方式设置。

Events

在2.2版本中,除了Trigger、Discovery和Auto Registration Event外,还新增了Internal Events——要知道这种不支持项目的发现是多么痛苦(好吧,我承认我懒)。

Operation

这一节就相当简单了,可以参考的就是对应不同的事件,可以定义什么操作。

Escalations

我们这里根据理解将它称作告警升级。书中提供的场景可以参考。

Maintenance

这个功能很好用,尤其是在检修的时候,但是依然太复杂。

需要注意的是,Periods的时间段必须要在Maintenance的时间段内,可以说后者是该维护设置的生效时间。通常后者可以设置一年,前者根据需要设置定义。

第7章 数据可视化

Graph、Screen使用非常简单,当有一定量的Screen时,Slideshow就有用武之地了。Map的设置比较繁琐(其实步骤是一定的,关键看规模),所以迄今为止也只是了解其功能而已。

如此看来,Zabbix只带有基本的可视化,依然需要我们开发出一些特定的数据可视化功能。

在使用中(2.0版本), 发现:

  1. Zabbix中屏幕的入口不太清晰,主机的Screen只能通过主机菜单访问,而无法通过Screen来访问。(img)
  2. Zabbix无法将LLD的数据加入Graph之中,至今还没有好的解决方案。

    第8章 Users和Macros

    这一章内容其实相当简单。

User/User Group的概念很容易明白,但是Zabbix主要通过用户决定角色,通过用户组决定管理范围。

Macro分为系统自带和自定义宏,在了解自定宏的定义以及宏的使用方法后,剩下的就是宏的适用范围的问题了。

宏的调用顺序:主机宏 > 模板宏 > 全局宏,谁更具体就调用谁。

第9章 IT services服务监控与Web monitoring网络监控

其实这一章我觉得拆分城两个部分讲比较好,因为两个部分其实没多大关系。

IT服务通过用户建立的树状结构进行可用性度量,每个部分都通过绑定对应的Trigger来获取相关信息。但是个人认为作者举得例子不是很好,单独拆分了软件和硬件部分,其实软件是依赖于硬件的。

Web监控其实是Zabbix相较于普通开源监控的一个特色,而这一特色很明显在2.2版本做了加强。目前监控步骤每一步都可以进行重试,可以指定Agent,可以使用HTTP Proxy,可以定义Web监控中使用的宏,可以通过正则匹配及提取页面中的数据。

第10章 Zabbix前端界面

Dashbaord功能强大,能够简化我们获取监控信息的过程。

Hosts的状态今天才算明白,只有在网络错误的情况下才会是不可用的。

其他的内容其实官网Wiki上都有了。

第11章 Discovery

Zabbix中的Discovery有两种,一种是Network Discovery,另一种是Low-Level Discovery(LLD),前者用于发现被监控主机,后者用于发现主机上的资源,其实称为“底层资源发现”是不是更好些?

第三部分 进阶篇

第12章 Zabbix API

简单介绍了Zabbix常用API,但是更详细的还是需要看下Zabbix官方的API。

第13章 Zabbix分布式监控

介绍了Proxy和Node的区别,从这两点上也可以总结出不同分布式架构的优缺点。

后面介绍了单级Proxy和多级Node的简历过程,只是对建立的过程做了大概的说明,个人认为缺少大规模分布式架构搭建过程中一些需要考虑的问题。

第14章 Zabbix系统优化

在介绍优化的过程中,我比较感兴趣的是PPTV的interval的分布,但是Zabbix Agent主动的是否计算进来了呢?因为其中30秒监控一次的只占0.44%。

作者说有些朋友的interval很小,这可能是因为希望近实时获取数据的需求。

数据库对history进行表分区后,关闭housekeeper就行了,这一条行之有效,计划在今年的版本升级中使用。

看作者的介绍,2.2版本的Zabbix会讲进程的工作信息print出来,这样调优确实很方便。

第15章 轻量级日志监控应用。

这个其实就是Zabbix监控中的一类项目,用于实时监控日志中的出错信息,很EZ的。

第四部分 设计骗

第16章 Zabbix数据库表结构解析

Host和Item的表很容易了解。

Trigger表的内容稍显复杂,因为Trigger实际上是将Trigger中每个表达式拆分为item、triggid、function和parameter。

Event表之前不清楚ns是什么意思,根据[ZBXNEXT-457]了解了原来是为了解决过于集中的历史数据,clock和ns用于确定时间。

Trigger和Event的生成规则感觉看了表格之后更乱了,尤其是那个“(?)”的作用。

第17章 History和Trends

History是原始精度数据,不同的数据类型对应不同的表。Houskeeper机制就是清理history。Trends是每1小时的统计值。

考虑目前VPS为500,每天就有43,200,000条数据,保留周期为7-30天,和数据库实际数据差不多,早就上亿了。

Graph在显示数据时,会同时从histrory和从trends中获取数据,

第18章 Zabbix和数据库交互详解

Zabbix代码中较多定义宏。

代码文件zbxdb/db.c中定义了最底层的方法,而zbxdbhigh中定义了Zabbix数据模型封装的内容。

第19章 Zabbix 2.2新功能介绍

这里简单记录下我感兴趣的部分。

数据库自动升级:数据库从2.0升级到2.2时出现问题——Node升级没有问题,Proxy升级后无法和Node正常通讯,由于时间较多,所以后来回滚了,也没时间测试了。最近有人手了,计划直接重新构建并迁移数据。

Web监控:这一版本比较令我高兴的特性就是Web监控可以放在模板中了,而且增加了许多新特性:

  • 自带重试机制。
  • 支持代理。
  • 能够使用页面内容作为URL中的变量。

数据映射(Value Mapping):之前的只支持number–>text,现在支持text–>text,算是能够帮我解决中英文的问题——是不是很汗。

最新数据支持局部刷新,不会像之前还得等半天了。

SNMP功能增强:

  • 支持context区分设备。
  • 支持响应超时时间的设置。
  • 支持OID的完整获取,之前版本有Bug。

    第20章 Zabbix内置监控项实现

    以CPU负载获取为例,介绍了下Zabbix的实现方法。

    第五部分 社区和开源

    第21章 典型案例分析

    Zabbix服务没有运行的原因是因为前端无法直接与Zabbix Server端口通讯。除此之外,前端和服务之间没啥直接关系了。

Item没有数据的话要做测试,测试时注意发起端必须和实际相同,不然没有意义。也可以善用zabbix的script菜单进行检查。

last(#0)这个问题还是第一次听说……既然都0了,次数还有什么意义。

路过也说个吧,Zabbix官方不建议Zabbix Agent和Zabbix Server/Proxy跑在一台设备上,因为两个进程实际上都是使用的zabbix账户,所以需要动手区分下。当然,你要用其他的方式监控页无所谓咯。

第22章 Zabbix代码问题和解决

拼接SQL的问题不知道2.4版本中存不存在,MySQL因为内部没人研究,所以要出问题肯定都是自个儿处理了,这种活得外包出去。

第23章 PPTV的Zabbix监控体系

ZabbixAPI,这个就不说了。
Spider,这个在某次大会的PPT上页讲过。
EvnetConsole,其实是事件(或者叫告警)处理平台。
Rule Engine是个好东西,一直想将告警和后续的处理规则拆分。

第24章 Zatree

之前想上Zatree,最终没有,原因是,领导嫌它太丑了。

第25章 Zabbix第三方插件

基本上以手机端为主。

第26章 微信公众平台报警

了解学习了,后续看内部有没有需求,

第27章 社区论坛

论坛就不说了,相关问题可以在作者建立的[ZabbixQuestionList项目]中提问。

最后

最后的感悟很有意思。

一直想说的就是,希望这本书能发行个电子版本,因为里面很多东西查起来非常不方便,电子版本的话就相当容易了。

看书过程中,考虑到一个问题,就是那些内容需要Zabbix监控?从PPTV的interval分部页可以看出,Zabbix不是用作于实时监控。

稍微大型的企业,估计想用好Zabbix也不容易,需要先有CMDB,作者书中有提到,PPT也有提到,但问题是资料不多,估计这种经验也不好分享,遗憾。

作者将很多地方的“$”符号打成了“¥”,这是对人民币多么热爱啊——:P,听作者说原来是出版时的问题,嘿嘿。

感觉作者能够在不做Zabbix的情况下依然能带来这么精彩的书籍。

Zabbix 3.0快要发布了。

Bug List

错误其实不多来着。

  • 38页,¥符号问题。
  • 40页,“关于Template”写成了“善于Template”。
  • 230页,¥符号问题。
  • 264页,是“chart.php”不是“chart2.php”。
  • 265页,是“$graph”不是“¥graph”。
  • 267页,¥符号问题。
  • 284页,¥符号问题。
  • 297页,¥符号问题。
  • 299页,¥符号问题。
  • 300页,¥符号问题。
  • 301页,¥符号问题。
  • 302页,¥符号问题。
  • 302页,“和 Zabbix Serve 没有直接的关系”应为“和 Zabbix Server 没有直接的关系”。

你可能感兴趣的:(《Zabbix监控系统深度实践》精读笔记)