基本信息
【插图】

编辑推荐
★国内超大规模Zabbix集群负责人力作
★全面讲解Zabbix配置应用,深入剖析Zabbix内部原理
★用真实工作需求驱动,以实践案例指引,助您监控利器出鞘
★适合真正想研究Zabbix的读者阅读
内容简介
计算机书籍
《Zabbix监控系统深度实践(第2版)》由浅入深,全面讲解Zabbix应用与原理,是作者多年实战经验的总结和浓缩。在概念篇,从一个简单但完整的入门案例讲起,案例中有最基本的概念介绍,通过案例帮助那些只需将服务器加入监控,就能看到监控数据的读者;然后逐步深入,在进阶篇介绍Zabbix的各方面的配置;在设计篇中对Zabbix的内部原理进行深入剖析,包括Zabbix与数据库的交互、Zabbix数据库表的设计等,并分享作者在Zabbix上踩过的坑以及解决问题的思路;最后会在开源部分介绍58同城开源的Zatree和Chrome的插件、手机客户端等工具。
《Zabbix监控系统深度实践(第2版)》从工作中的实际需求出发,以实际案例作为指引,希望对于读者而言,不仅仅是学会某些具体的操作,而是深入了解Zabbix 的设计思路,掌握解决问题的方法。
《Zabbix监控系统深度实践(第2版)》适合想使用Zabbix构建监控系统的技术人员阅读,也适合有一定基础、对于Zabbix有更高的要求的读者。
作译者
目录
1.1 互联网公司的运维工作 2
1.2 何谓自动化运维 3
1.3 监控系统在运维自动化中的角色5
1.4 监控系统的理想化模样5
第 2 章 Zabbix简介 7
2.1 Zabbix发展现状 7
2.2 选择Zabbix的理由 8
2.3 Zabbix部分名词约定 9
第 3 章 Zabbix安装 11
3.1 获取Zabbix 11
3.2 Zabbix Server安装 12
3.2.1 Zabbix数据库配置 12
3.2.2 安装Zabbix Server 13
3.2.3 安装Zabbix Web前端 16
3.3 Zabbix Agent安装18
3.3.1 UNIX/Linux上安装Zabbix Agent 18
3.3.2 Windows上安装Zabbix Agent 18
3.4 测试Zabbix Agent和Zabbix Server运行 20
3.5 配置文件详解20
前言
我从职业生涯开始至今,就一直在和监控系统打交道。
我最早在eBay 容量规划小组工作,使用监控系统查看服务器状态及网站运营指标;后来到PPTV 运维部,通过监控系统的数据了解上线发布的结果和网站的健康程度等情况;现在到了唯品会,我们的监控系统能够从业务、技术两个维度考察当前公司网站的运作情况。
在有监控系统之前,工程师需要到服务器上去敲命令来获取系统数据;为了分析问题,可能还需要将数据复制到本地计算机的Excel 里进行画图;最要命的是,在出现问题的时候无法知道,只有在用户报障后才能察觉。这是多么骇人听闻的场景!
而当我们有了一个好的监控系统后,这些问题就迎刃而解了。我们可以在一个界面中浏览整个机房的服务器状态、可以在Web 前端方便地查看监控数据、可以回溯寻找事故发生时系统的问题和报警情况。现在,我们的工程师们已经可以一边悠闲地喝着咖啡一边分析问题了。
监控系统是整个运维自动化体系中非常重要的环节。从服务器上架到最后被回收重用,都有监控系统的身影。服务器上架时,它需要添加监控;在服务器工作过程中,监控系统要时刻注意服务器的健康,并且在服务器出现异常时,要发出报警通知对应的人员;在服务器被回收时,监控系统要取消服务器的监控。这些都需要监控系统拥有API,能够方便地跟外部其他系统一起工作,把自己的工作自动化起来。
国内的互联网巨头们,可以自行开发一套监控系统。而对于绝大多数企业来说,开源的Zabbix 是非常棒的选择。它能够非常好地实现以上这些需求。可以说,目前Zabbix 是最热门的开源监控系统。
本书的内容结构
从周围的QQ 群、论坛等地方,我发现大家对于Zabbix 的学习都是非常零散的,缺少一个系统的学习过程和解决问题的正确思路。在这本书的前面,我会先向大家介绍一个最简单的入门案例,案例中有最基本的概念介绍,通过案例帮助那些只需将服务器加入监控,并且看到监控数据的读者。后面深入一些,会介绍Zabbix 的方方面面的配置,适合打算使用Zabbix 高级功能的读者。在接下来的部分,会深入剖析Zabbix 的内部原理,包括Zabbix 与数据库的交互、Zabbix 数据库表的设计等我在Zabbix 上踩过的坑以及解决问题的思路。希望能授之以渔。在本书的最后部分,主要介绍Zabbix 在开源方面的进展,最主要的就是58 同城开源的Zatree,以及Chrome 的插件和手机客户端。
本书会从我们工作中的实际需求出发,介绍Zabbix 的使用方法和其配置管理。在这些内容之后,会有深入一些的对于Zabbix 实现的讲解,希望对于读者而言,不仅仅是学会某些具体的操作,而是深入了解Zabbix 的设计思路,掌握解决问题的方法。
作者联系方式
由于经验的不足,书中可能会有一些不足之处,大家可以通过微博@ 超大杯摩卡星冰乐,或者邮箱baniu.yao@gmail.com,与我联系。
声明
在刚开始进行写作时,我考虑到很多读者是用中文版的Zabbix,所以文中的Zabbix 的术语都使用中文。但后来我觉得对于Zabbix 的术语,研究人员是需要了解它的英文说法的,这样在同行之间才能更好地交流,也可以在Google 上更好地检索信息。基于这个原因,我将之前的中文术语全部又换成了英文。由于这些术语非常多,虽然编辑帮我细致地进行了检查,难免有疏漏,希望大家能够谅解。
致谢
在前言的最后,要感谢很多人。首先感谢的是我的父母,没有你们,就没有我。然后要感谢我的老婆,因为要忙于写书,很多时候不能陪你。最后要感谢的是诸超、陈文春、吴晓刚、
周昕毅、朱宁和刘海阳等同事的帮助,在我写书的过程中,给出了很多宝贵的建议。谢谢各位。
序言
姚仁捷同学跟我提起,他要写一本关于Zabbix 的书,其实一开始我是不太鼓励的。在我看来,写书向大众传播知识,是一件很严肃的事情,仁捷作为一名年轻的技术人员,去完成一本书可能还是会有些吃力的。但是我看到他有这个决心,对待书的态度也非常虔诚,每天都会在繁忙的工作之余加班写作,书真的写完了,不由得很是佩服,作为他毕业到现在的多年老板,必须顶一下。事实上,从PPTV 到唯品会,仁捷都基本上是独立承担一个领域的工作,借鉴业界的最佳实践(Best Practice),从无到有地快速建立起完整的解决方案。的确是,聪明的人,给机会,就能脱颖而出。
Zabbix 是业界近年来较为流行的一个比较完善的开源系统监控解决方案,我们当初也是调研了不少解决方案才选择了它。姚仁捷曾经是PPTV 的Zabbix 集群的负责人。PPTV 的Zabbix应用,已经是国内较大规模的系统监控了,覆盖了当时5000 多台主机和上面应用的几十万个监控点,近百万的监控点记录,也修改了Zabbix 多处源码,实现了很多自动化的监控部署和Proxy-Master 的分布式监控,以及通过Zabbix Trigger 自动分析等,也就Zabbix 本身的一些缺点设计了对应的workaround 的办法和二次开发,可以说是国内较为领先的大规模部署解决实际案例。在Zabbix 的实践领域,PPTV 的很多方法、思想和技巧都很有价值,仁捷同学在这本书中也都有涉及。
好的经验还是值得分享的,就算还不是完美的。
希望这本书能够给大家带来一手的Zabbix 实战经验,更加希望大家可以从中借鉴作者分享的经验,少走弯路,帮助公司更加多快好省地建设系统监控解决方案。
唯品会高级总监
诸超
序二
Zabbix 作为一款企业级的、开源的、分布式的监控套件,设计理念超前,解决了以往监控软件的短板,可以说是现在最流行的监控解决方案之一。
Zabbix 可以监控网络和服务的健康状况,可以利用模板批量添加服务器,可以自定义监控项,可以利用灵活的报警机制给运维人员发送E-mail 和短信报警,从而保证了运维人员能快速对问题作出响应。此外,Zabbix 简单易上手,只要稍作学习,就能迅速搭建一套运维监控平台,瞬间高大上。
Zabbix 在分布式方面做了大量的优化工作,这样可以保证在多机房和对海量服务器进行监控时,能快速高效地收集数据,并集中在一个界面内展示。不过目前我所负责项目中,15 万个Items 和1000 多个Hosts 用了一个配置比较高的服务器在抗,毫无压力,等服务器规模再大一些,机房比较多的时候,我会考虑用分布式。
我使用Zabbix 也快1 年了,替换了原来的Nagios+Cacti 方案。Zabbix 兼有Nagios+Cacti的特点,所以现在维护一个系统就可以了,极大地方便了运维工作。因为公司大部分都是标准化的服务和服务器,迁移过程也比较顺利,只要事先做好分组,设置几个模板一关联就可以了,迁移的大部分时间花在了寻找合理阈值和设置靠谱Trigger 上,这个可能需要慢慢积累经验。
作为Zabbix 插件Zatree 的开发者之一,我一直比较关注Zabbix 在国内的发展,这几年是Zabbix 发展的快速时期,大量爱好者在QQ 群、微博和社区参与讨论和分享,极大地丰富了Zabbix 的中文资料。作为曾经国内最大规模Zabbix 集群的负责人,姚仁捷在本书中全面讲解了Zabbix 的安装、配置、使用及技巧,提供了大量的案例和解决问题的心得,其中也介绍了Zatee插件的安装和使用,希望大家可以一边看书,一边亲自动手实践,这样效果会更好。
相信人人都能成为监控专家、运维专家。
中国最大开源社区Chinaunix 创始人之一
窦喆
@ 南非蜘蛛
媒体评论
Zabbix是一个用于基础架构监控和告警的开源解决方案,可以说是近几年来国内外中小型互联网企业中流行的一种。它结合了Cacti绘图和Nagios的告警机制,并拥有非常简易的Web配置界面,再配合一些标准的监控模板,就能很轻松地上手了。姚仁捷曾经在PPTV负责过Zabbix大规模集群的工作,积累了丰富的经验和技巧,本书是他多年实践工作的结晶,从功能到部署,从原理到案例,全面讲解了Zabbix相关知识,值得一读!程国强携程网站运营中心系统研发高级总监
Zabbix是近几年涌现出来的开源企业级监控工具,集数据采集、图表绘制、报警等功能于一身,适合中小型企业快速的从无到有建立一个完备的监控体系。丰富的功能背后是极高的复杂性,特别在国内缺乏相关的中文资料的背景下,系统管理人员很难参透工具内在的精髓和局限,从而高效地将其用于大规模监控场景。姚仁捷是国内Zabbix大规模应用场景的实践先驱,在源代码级对Zabbix的工作机制进行过研究及优化。相信本书可以帮助后来者少走弯路,趋利避害,让Zabbix成为监控项目实施中的利器。吴晓刚携程网站运营中心系统研发总监
Zabbix是近年来非常流行的分布式监控工具,但是上手容易,精通难。八牛曾经是国内大规模Zabbix集群的维护者,在Zabbix运维、优化及二次开发方面都有丰富的经验。本书作为他多年经验的结晶,不但详细阐述了Zabbix的部署运用,还有针对性地解析了Zabbix架构设计的关键点和具体实现方式,更列举了常见的疑难问题和解决方案,堪称监控领域难得的精品书籍,相信不同层次的读者都会有所收获。饶琛琳日志易总监
书摘
插图:
24.2 Zabbix二次开发和重新开发监控系统的选择
我是从2011 年开始使用Zabbix 的,现在已经是2016 年(本节为2016 年新增内容),一个开源产品有这么长的生命周期,到如今依然非常流行,说明监控系统是运维不可或缺的。但从另一方面来说,可能Zabbix 已经到了需要大刀阔斧修改的时候了,Zabbix 大版本来到3.0 也说明了这个问题。我们看看大数据一些产品的发展,Storm、Spark、Presto 等各种新技术层出不穷,
监控系统是不是也应该有一些革新呢?
最近几年,国内使用Zabbix 的大公司,一般都会走两条路,一个是改造Zabbix,一个是重新开发。改造Zabbix 主要集中在改造它的存储层。Zabbix 的数据是存储在传统的RDBMS 中的,而传统的RDBMS 并不非常适合运维的海量数据的场景。前两年我了解到,美团的做法是将Zabbix MySQL 中的数据再写入OpenTSDB,然后重新开发了Zabbix 的前端,数据全部从OpenTSDB 来获取,相当于只是将Zabbix 当作数据收集和报警配置的工具。2015 年我在唯品会的最后一段时间里,尝试将HBase 替换掉原生的RDBMS,花了非常大的努力,完成了这个工作,但是对Zabbix 的代码有极大的侵入,几乎将数据存储层的代码全部重写了。这非常不利于之后Zabbix 的升级和维护。小米是重新开发了open-falcon 监控系统,他们使用rrdtool 来作为数据存储引擎,个人感觉,rrdtool 也并不是一个大数据场景下很好的解决方案。
和一些朋友沟通中也发现,其实很多公司都到了这个岔路口。当时开始使用Zabbix 的时候,是从没有监控系统到有监控系统,这个从0 到1 的变化会带来非常多的好处,但用了一段时间后,发现Zabbix 只是做到了60 分或者70 分,想要把监控系统做到90 分,光靠Zabbix 本身是非常困难的。像我,最早在PPTV 是通过围绕在Zabbix 周边的各种工具来完成这个需求的。但过去这么多年,这个真的是好的选择吗?
我们首先来看看一个广义的监控系统,它由这几部分组成:
数据收集
数据存储
数据报警
数据展现
无论是怎样的监控系统,都脱离不开这4 个部分,其中难点在于数据存储。比如Zabbix就因为使用了RDBMS 限制了它的扩展能力。
本节的标题是选择二次开发Zabbix 还是开发新的监控系统,我的看法是这样的,如果对于前面提到的“数据收集”、“数据报警”、“数据展现”的功能不满意,那么我们可以开发一些
工具来增强Zabbix 的功能。但如果是Zabbix 的性能不能满足大规模的需求,那有两种可能:
公司的服务器规模非常大。
如果服务器规模不大,那就是因为监控项设置有问题。
第2种情况是可以通过优化监控项来完成的,这里不做赘述。针对第1 点,如果公司的规模真的已经增长到Zabbix 无法掌控的地步,那就说明公司的发展非常好,同样,需要更强大的技术来支持,这个时候,可以考虑自己来开发监控系统了。因为研究Zabbix、改造Zabbix和维护Zabbix,已经会耗费非常多的精力了。那么我们如何入手开发新的监控系统呢?我的建议是不要想开发一个系统能把Zabbix 替换掉,我们应该先逐步替换Zabbix 的各个组件。最容易做的是“数据收集”和“数据展现”这两部分,利用Zabbix trapper 能方便地用自己的工具来向Zabbix 发送数据。对于“数据展现”,Zabbix 的数据都存储在RDBMS 中,可以方便地读取。
更深入一些,除了上面说到的4 个组件,监控系统还可以有“数据分析”这一步,它的作用是分析数据,找到问题。这个需要和大数据结合,在唯品会做HBase 和Zabbix 集成的工作时,也研究了etsy 公司的一些相关数据查找的工作,做到可以从Zabbix 中根据一个数据图形找到图形趋势类似的数据,这个对于Debug 问题是非常有用的,但因为Zabbix 有海量的数据,这样的分析,我们是一定要借助大数据的工具的。