本书基于稳定版本Zabbix 4.0,对Zabbix的各项功能进行了详细而深入的讲解,包括监控系统规划、安装包定制、架构高可用、性能调优、指标数据采集、自动化处理功能、触发器使用与原理、告警配置、Zabbix API、数据可视化、网络拓扑自动发现、内部实现原理以及部分源码分析等内容,让读者真正通过一本书就能够完全掌握Zabbix监控系统的核心技术。
本书第1版内容收获了大量读者好评,是一本实战性很强的工具书,读者将其称为监控领域的“红宝书”,书中所写内容均可以在生产环境中直接应用。
而在第2版中,采纳了以往读者的宝贵意见,增加了作者的最新研究成果,扩充了大量内容,但继续保持由浅入深、由易到难的写作风格。通过合理的章节编排,本书内容分为初级、中级和高级3个部分,从入门的安装与配置,到复杂的高级使用,都进行了讲解,并配有大量的真实监控案例。书中包含作者参与过的真实企业级监控系统构建项目的相关经验,通过阅读掌握本书的内容,可以让Zabbix监控系统的学习和使用从此不再困难。
本书适合想了解、学习和规划构建监控系统的人员阅读,可作为学习入门Zabbix的工具书,也适合想更深入理解Zabbix监控系统的读者阅读。
本书基于稳定版本Zabbix 4.0,对Zabbix的各项功能由浅入深、由易到难地进行了详细而深入的讲解,并配有大量的真实监控案例,让读者真正通过一本书就能够完全掌握Zabbix监控系统的核心技术。
吴兆松,资深系统工程师,Zabbix监控系统“红宝书”(《Zabbix企业级分布式监控系统》第1版)的作者,熟悉IT运维领域,对服务器运维、应用运维以及运维(DevOps)平台的构思、设计、开发等都具有十分丰富的经验,尤其擅长IT监控系统的运维和开发,是国内较早一批使用和研究Zabbix的用户,为几十个大型企业构建过Zabbix监控平台体系。从业经历相当丰富,对运维、编程、产品都有深入的实践,被业内人士戏称为“监控专家”。
前 言
本书由来
“运筹帷幄之中,决胜千里之外。”在IT运维中,监控占据着重要的地位,按比例来算,说占30%一点也不为过。对IT运维工程师来说,构建一个真正可用的监控告警系统是一项艰巨的任务。在监控系统的开源软件中,可供选择的工具众多,然而真正符合需求,能够真正解决业务问题的监控系统软件却凤毛麟角。
笔者在自己的运维从业生涯中用过的监控系统有Cacti、Nagios等,以及笔者公司开发的监控告警系统,直到接触了Zabbix,才发现这个灵活而强大的自动化监控工具正是笔者所寻找的。随着近年来云计算、容器技术的大规模普及,软件架构已经从单体架构走向微服务架构,对监控的灵活性和可靠性的要求越来越高,出现了更多有趣的监控软件,如Prometheus、Influx家族,这些监控软件解决了在当前环境中面临的一些问题,提供了非常优秀的监控解决方案,但这并不妨碍Zabbix的继续流行。从2012年开始,国内Zabbix的用户群体在逐步扩大,当前Zabbix已经成为运维人员必须掌握的技能之一。究其原因,得益于Zabbix灵活的架构设计、极强的扩展能力、丰富的监控能力、易于与外部集成的能力,从硬件监控,到操作系统,再到服务进程,以及网络设备,其无所不能的监控功能令人叹为观止,相信这也是大多数Zabbix爱好者选择它的主要原因。
当然,在Zabbix的使用过程中,会面临上手容易、精通较难的问题,原因在于Zabbix过于灵活,其配置的颗粒度非常细致,这也会让大多数用户刚接触学习它的时候一头雾水,所以查看官方文档和阅读一本相关书籍的学习方式都是明智的选择。
笔者从2012年开始使用Zabbix,曾公开自己的使用文档,很高兴文档对不少初学Zabbix的朋友有所帮助,但随着向笔者咨询问题的人数增多,其中多数问题是重复的,且笔者解答问题的精力有限,于是萌生出书的想法,在其后的2014年,正式出版了《Zabbix企业级分布式监控系统》一书,并被广大Zabbix爱好者喜爱。时光荏苒,2018年,Zabbix 4.0版本正式发布,所以本书也需要升级换代,在此情况下,笔者对书籍内容进行了大幅度的重构,并对书籍的内容和深度进行了扩展,让本书可以真正成为Zabbix用户的案头首选参考书。本书得以改版,我们的编辑付睿老师功不可没,在2016—2017年的时候,她一直催促笔者更新内容。由于笔者当时是被动更新的,并没有想好新加什么内容,并且笔者基于原有书稿做了一些更新,但内容无法令自己满意,于是就没有继续下去,当时Zabbix是3.0版本。直到2018年,笔者觉得是时候更新内容了。
如何阅读本书
本书共分3部分内容,笔者按照从零基础开始学习的路线进行章节编排,从易到难逐步深入,直到读者深入掌握,并且本书对相关的内容和思想进行了拓展,让读者学习到的不仅是Zabbix,而且是一个监控体系。
第1部分为基础部分,包括第1~6章。首先介绍监控系统的原理,让初次接触监控的读者了解监控系统的组成部分,从宏观上认识监控系统。接下来讲解了Zabbix的架构、Zabbix的安装、监控配置、自定义监控项、告警配置、告警脚本等功能。这部分内容适合从零基础开始系统地学习Zabbix监控系统,对稍有经验的使用者来说,重点掌握Zabbix对数据存储的处理(第3章),以及第5章和第6章的内容。
第2部分为中级部分,包括第7~11章。首先对Zabbix的触发器使用以及内部源码实现进行了深入讲解,对Zabbix的多种监控方式进行了详述(如IPMI、SNMP、JMX、ODBC等)。接着,对自动化功能进行了深入讲解,介绍了分布式监控系统,配有大量自定义脚本的监控案例,并对监控项自动发现(LLD)功能进行了深入讲解,其后对Zabbix的数据可视化方案和拓展实现进行了研究,适合对Zabbix有一定基础的读者深入学习。通过对这部分内容的学习,读者将会深入理解Zabbix的整体功能。
第3部分为高级部分,包括第12~16章。首先介绍Zabbix的性能调优,从底层实现机制讲解,从而理解Zabbix在使用过程中遇到性能瓶颈的问题,以及如何解决这些问题,并让读者学会使用Zabbix API来扩展Zabbix,从而为构建运维平台提供了更多的扩展性。同时,这部分也讲解了如何定制RPM包,源码构建安装,使用Elasticsearch作为后端数据存储,以及如何使用SaltStack来自动化部署和配置,通过一个实例来讲解如何构建企业级分布式监控系统。最后一章,探讨了监控系统的整体实现与使用场景,与DevOps、ITIL的整合使用,以及告警轮班等深度场景,让读者在更丰富的场景中使用Zabbix,并理解IT运维中的关键思想,将监控用于更广泛的场景,适合对Zabbix非常熟悉的读者进行深入应用。通过对这部分内容的学习,读者能够深入理解Zabbix,并从更多的角度考虑监控问题。
配套代码
书中包含的相关代码,笔者已将其放到GitHub上,地址为https://github.com/zabbix-book,读者可以在生产环境中直接使用相关代码。
读者对象
• Linux系统管理员 • 运维监控系统工程师
• 系统运维工程师 • 监控系统软件开发(设计)人员
• 运维开发工程师 • IT管理人员
• 系统集成商 • 架构设计人员
勘误支持
尽管笔者和编辑都努力地对书稿进行再三校对,但因笔者水平和时间所限,书中可能存在少许的错误或不妥之处,如读者遇到,还恳请批评、指正。读者若有任何宝贵的意见或建议,可以发送邮件至本书的专题邮箱zabbix_v2@itnihao.com,笔者将尽快给予反馈解答。本书的勘误也会在随书项目中得到反馈。
内容声明
本书采用的Zabbix为4.0版本,随着Zabbix版本的更新,本书讲解的大部分使用功能与新版本相比会稍有不同。本书采用的操作系统以Linux(CentOS 7)、Windows为主,对于其他版本的操作系统并未做过多讲解。本书能保证对Zabbix几乎96%以上的功能都有细致讲解,但少许笔者认为不重要的内容并未讲解(也许对部分读者来说却非常重要),如涉及加密证书传输数据的内容,关于这部分内容读者可参考学习官方文档。另外,与本书第1版相比,第2版去掉了Zabbix协议的相关章节。本书在编写过程中,参考了大量官方文档和社区的内容,书中都给出了相关链接,如不慎遗漏,重印、改版的时候会进行增补。
本书并不能完全代替Zabbix的官方文档,读者在读完本书后,建议也阅读Zabbix的官方文档,因为在官方文档中还有更多的细节值得去研究,如将两者结合,效果会更好。
示例规范
(1)在shell环境中使用,shell命令会加粗显示。
shell# vim /etc/php.ini
(2)在MySQL环境中使用,SQL命令会加粗显示。
mysql> flush privileges;
(3)在本书中,Zabbix-Server表示zabbix_server服务或进程,其他Zabbix-Agent、Zabbix-Get、Zabbix-Proxy的情况类似。
联系方式
微博:http://weibo.com/itnihao
邮件:zabbix_v2@itnihao.com