首先说下,为什么精读,因为:
Action中default message和recovery message居然没有细说,这也可能是作者公司内部不使用Zabbix直接告警的问题吧——我想说的就是,Trigger设置中所使用到的Item在message中展示是个问题。我们曾有过一个Trigger由多个Item组成,所以这里Item就需要设置最大的数量才能展示完全,而数量较少的时候邮件本身又比较难看,这个问题比较令人纠结。
另外可以看出2.2版本的Action支持了更多Event,Internal Event想必是很多老版本管理员所期望的功能,虽说这个可以自行实现。
熟悉Zabbix的人可能已经了解以下两种关联方式:
虽然说Zabbix支持多种Item类型,但通常使用的可能是Agent和SNMP类型。JMX和IPMI两种类型虽然用得较少,但是实际用处不小。
需要注意的是当Agent发送的数据在Server上出错了(比如Host和Item被disabled或者删除),那么Agent是不会重试的。
IPMI使用上的困难在于无处获取这些信息,像SNMP还有Mib文件可以参考。
日志文件监控需要注意的事项很受用,以前没有研究过这些内容:
计算型的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监控目前没用到,主要是获取一些配置信息较为困难,没有人来支持。书中讲得也不是非常细致。
这里需要注意的是Trigger表达式中可以同时考虑Trigger在触发时和未触发时的触发条件。
Zabbix中Discovery的项目不知道新版本中是否可以进行Trigger的依赖呢?以前根本没有这个选项的。——新版本依旧不能依赖,但是需要测试是否可以通过表达式的方式设置。
在2.2版本中,除了Trigger、Discovery和Auto Registration Event外,还新增了Internal Events——要知道这种不支持项目的发现是多么痛苦(好吧,我承认我懒)。
这一节就相当简单了,可以参考的就是对应不同的事件,可以定义什么操作。
我们这里根据理解将它称作告警升级。书中提供的场景可以参考。
这个功能很好用,尤其是在检修的时候,但是依然太复杂。
需要注意的是,Periods的时间段必须要在Maintenance的时间段内,可以说后者是该维护设置的生效时间。通常后者可以设置一年,前者根据需要设置定义。
Graph、Screen使用非常简单,当有一定量的Screen时,Slideshow就有用武之地了。Map的设置比较繁琐(其实步骤是一定的,关键看规模),所以迄今为止也只是了解其功能而已。
如此看来,Zabbix只带有基本的可视化,依然需要我们开发出一些特定的数据可视化功能。
在使用中(2.0版本), 发现:
User/User Group的概念很容易明白,但是Zabbix主要通过用户决定角色,通过用户组决定管理范围。
Macro分为系统自带和自定义宏,在了解自定宏的定义以及宏的使用方法后,剩下的就是宏的适用范围的问题了。
宏的调用顺序:主机宏 > 模板宏 > 全局宏,谁更具体就调用谁。
其实这一章我觉得拆分城两个部分讲比较好,因为两个部分其实没多大关系。
IT服务通过用户建立的树状结构进行可用性度量,每个部分都通过绑定对应的Trigger来获取相关信息。但是个人认为作者举得例子不是很好,单独拆分了软件和硬件部分,其实软件是依赖于硬件的。
Web监控其实是Zabbix相较于普通开源监控的一个特色,而这一特色很明显在2.2版本做了加强。目前监控步骤每一步都可以进行重试,可以指定Agent,可以使用HTTP Proxy,可以定义Web监控中使用的宏,可以通过正则匹配及提取页面中的数据。
Dashbaord功能强大,能够简化我们获取监控信息的过程。
Hosts的状态今天才算明白,只有在网络错误的情况下才会是不可用的。
其他的内容其实官网Wiki上都有了。
Zabbix中的Discovery有两种,一种是Network Discovery,另一种是Low-Level Discovery(LLD),前者用于发现被监控主机,后者用于发现主机上的资源,其实称为“底层资源发现”是不是更好些?
简单介绍了Zabbix常用API,但是更详细的还是需要看下Zabbix官方的API。
介绍了Proxy和Node的区别,从这两点上也可以总结出不同分布式架构的优缺点。
后面介绍了单级Proxy和多级Node的简历过程,只是对建立的过程做了大概的说明,个人认为缺少大规模分布式架构搭建过程中一些需要考虑的问题。
在介绍优化的过程中,我比较感兴趣的是PPTV的interval的分布,但是Zabbix Agent主动的是否计算进来了呢?因为其中30秒监控一次的只占0.44%。
作者说有些朋友的interval很小,这可能是因为希望近实时获取数据的需求。
数据库对history进行表分区后,关闭housekeeper就行了,这一条行之有效,计划在今年的版本升级中使用。
看作者的介绍,2.2版本的Zabbix会讲进程的工作信息print出来,这样调优确实很方便。
这个其实就是Zabbix监控中的一类项目,用于实时监控日志中的出错信息,很EZ的。
Host和Item的表很容易了解。
Trigger表的内容稍显复杂,因为Trigger实际上是将Trigger中每个表达式拆分为item、triggid、function和parameter。
Event表之前不清楚ns是什么意思,根据[ZBXNEXT-457]了解了原来是为了解决过于集中的历史数据,clock和ns用于确定时间。
Trigger和Event的生成规则感觉看了表格之后更乱了,尤其是那个“(?)”的作用。
History是原始精度数据,不同的数据类型对应不同的表。Houskeeper机制就是清理history。Trends是每1小时的统计值。
考虑目前VPS为500,每天就有43,200,000条数据,保留周期为7-30天,和数据库实际数据差不多,早就上亿了。
Graph在显示数据时,会同时从histrory和从trends中获取数据,
Zabbix代码中较多定义宏。
代码文件zbxdb/db.c中定义了最底层的方法,而zbxdbhigh中定义了Zabbix数据模型封装的内容。
这里简单记录下我感兴趣的部分。
数据库自动升级:数据库从2.0升级到2.2时出现问题——Node升级没有问题,Proxy升级后无法和Node正常通讯,由于时间较多,所以后来回滚了,也没时间测试了。最近有人手了,计划直接重新构建并迁移数据。
Web监控:这一版本比较令我高兴的特性就是Web监控可以放在模板中了,而且增加了许多新特性:
数据映射(Value Mapping):之前的只支持number–>text,现在支持text–>text,算是能够帮我解决中英文的问题——是不是很汗。
最新数据支持局部刷新,不会像之前还得等半天了。
SNMP功能增强:
Item没有数据的话要做测试,测试时注意发起端必须和实际相同,不然没有意义。也可以善用zabbix的script菜单进行检查。
last(#0)这个问题还是第一次听说……既然都0了,次数还有什么意义。
路过也说个吧,Zabbix官方不建议Zabbix Agent和Zabbix Server/Proxy跑在一台设备上,因为两个进程实际上都是使用的zabbix账户,所以需要动手区分下。当然,你要用其他的方式监控页无所谓咯。
拼接SQL的问题不知道2.4版本中存不存在,MySQL因为内部没人研究,所以要出问题肯定都是自个儿处理了,这种活得外包出去。
ZabbixAPI,这个就不说了。
Spider,这个在某次大会的PPT上页讲过。
EvnetConsole,其实是事件(或者叫告警)处理平台。
Rule Engine是个好东西,一直想将告警和后续的处理规则拆分。
之前想上Zatree,最终没有,原因是,领导嫌它太丑了。
基本上以手机端为主。
了解学习了,后续看内部有没有需求,
论坛就不说了,相关问题可以在作者建立的[ZabbixQuestionList项目]中提问。
最后的感悟很有意思。
一直想说的就是,希望这本书能发行个电子版本,因为里面很多东西查起来非常不方便,电子版本的话就相当容易了。
看书过程中,考虑到一个问题,就是那些内容需要Zabbix监控?从PPTV的interval分部页可以看出,Zabbix不是用作于实时监控。
稍微大型的企业,估计想用好Zabbix也不容易,需要先有CMDB,作者书中有提到,PPT也有提到,但问题是资料不多,估计这种经验也不好分享,遗憾。
作者将很多地方的“$”符号打成了“¥”,这是对人民币多么热爱啊——:P,听作者说原来是出版时的问题,嘿嘿。
感觉作者能够在不做Zabbix的情况下依然能带来这么精彩的书籍。
Zabbix 3.0快要发布了。
错误其实不多来着。