描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121368776
1.基于稳定版本Zabbix 4.0,对Zabbix的各项功能进行了详细而深入的讲解,让读者真正通过一本书就能够完全掌握Zabbix监控系统的核心技术。
2.本书是一本实战性很强的工具书,配有大量的真实监控案例,书中所写内容均可以在生产环境中直接应用。
3.本书第1版收获了大量读者好评,被称为监控领域的“红宝书”。本书第2版在第1版的基础上,增加了作者的新的研究成果,扩充了大量内容,由浅入深、由易到难地介绍了Zabbix的各个知识点。
本书基于稳定版本Zabbix 4.0,对Zabbix的各项功能进行了详细而深入的讲解,包括监控系统规划、安装包定制、架构高可用、性能调优、指标数据采集、自动化处理功能、触发器使用与原理、告警配置、Zabbix API、数据可视化、网络拓扑自动发现、内部实现原理以及部分源码分析等内容,让读者真正通过一本书就能够完全掌握Zabbix监控系统的核心技术。本书第1版内容收获了大量读者好评,是一本实战性很强的工具书,读者将其称为监控领域的“红宝书”,书中所写内容均可以在生产环境中直接应用。而在第2版中,采纳了以往读者的宝贵意见,增加了作者的*研究成果,扩充了大量内容,但继续保持由浅入深、由易到难的写作风格。通过合理的章节编排,本书内容分为初级、中级和高级3个部分,从入门的安装与配置,到复杂的高级使用,都进行了讲解,并配有大量的真实监控案例。书中包含作者参与过的真实企业级监控系统构建项目的相关经验,通过阅读掌握本书的内容,可以让Zabbix监控系统的学习和使用从此不再困难。本书适合想了解、学习和规划构建监控系统的人员阅读,可作为学习入门Zabbix的工具书,也适合想更深入理解Zabbix监控系统的读者阅读。
目 录
第1章 开篇——监控系统简介 1
1.1 监控系统的功能概述 1
1.2 监控系统的实现原理 2
1.2.1 模块组成 2
1.2.2 采集协议 2
1.2.3 采集模式 3
1.2.4 监控指标 3
1.2.5 代理架构 3
1.2.6 数据存储 4
1.2.7 告警功能 5
1.2.8 可扩展性 5
1.2.9 总结归纳 6
1.3 监控系统的开源产品 7
1.3.1 Cacti 7
1.3.2 Nagios 8
1.3.3 InfluxDB套件 9
1.3.4 Prometheus 10
1.3.5 OpenFalcon 11
1.3.6 Netdata 12
1.3.7 ELK家族 13
1.3.8 Zabbix 14
第2章 Zabbix简介 16
2.1 Zabbix的用户群体都有谁 16
2.2 使用Zabbix需要具备什么基础 17
2.3 Zabbix是一个什么样的产品 18
2.4 为何选择Zabbix作为监控系统 19
2.5 该选用Zabbix的哪个版本 20
2.6 Zabbix的架构是什么样的 21
2.7 Zabbix的功能特性都有哪些 22
第3章 安装与部署 25
3.1 安装环境概述 25
3.1.1 硬件环境需求 25
3.1.2 软件环境需求 28
3.1.3 网络环境需求 30
3.2 Zabbix-Server服务器端的安装 30
3.2.1 安装Zabbix-Server 33
3.2.2 安装MySQL 33
3.2.3 配置zabbix_server.conf 36
3.2.4 防火墙、SELinux和权限的设置 38
3.2.5 配置Zabbix-Web 40
3.2.6 相关故障的处理 46
3.2.7 zabbix_server程序的参数 49
3.3 Zabbix-Agent客户端的安装 51
3.3.1 安装Zabbix-Agent 51
3.3.2 防火墙的设置 51
3.3.3 配置zabbix_agentd.conf 52
3.4 SNMP监控配置 52
3.5 在Windows中安装Zabbix-Agent 53
3.5.1 安装与配置 53
3.5.2 注册服务 53
3.5.3 启动服务 54
3.6 在其他平台安装Zabbix-Agent 56
3.7 Zabbix-Get的使用 56
3.8 Zabbix相关术语(命令) 57
3.9 Zabbix-Server对数据的存储 58
3.9.1 监控数据的存储 58
3.9.2 MySQL表分区实例 62
3.10 高可用和安全 70
3.10.1 高可用 70
3.10.2 通信安全 70
3.10.3 禁用Zabbix的guest用户 70
3.11 Zabbix数据库备份 70
3.12 升级Zabbix 73
3.12.1 同版本升级的方法 73
3.12.2 跨版本升级的方法 74
3.12.3 数据库自动升级的原理 74
3.12.4 升级失败的处理案例 75
第4章 快速配置和使用 77
4.1 配置流程 77
4.2 添加主机组 78
4.2.1 如何划分主机组 78
4.2.2 如何添加主机组 78
4.2.3 层级主机分组 80
4.3 添加模板 81
4.4 添加主机 82
4.5 配置图形 86
4.6 配置大屏 92
4.7 配置幻灯片 94
4.8 配置地图 96
4.8.1 添加背景图 96
4.8.2 添加地图 96
4.9 使用IT服务 102
4.10 使用报表 105
4.11 资产管理 108
4.12 图形共享 109
4.13 全局搜索 110
4.14 最新数据 111
4.15 故障 112
4.16 数据的导入/导出 112
4.17 用户权限 113
4.17.1 用户组 113
4.17.2 用户组权限 114
4.17.3 用户 116
4.17.4 匿名用户 117
4.18 调试模式 117
4.19 与LDAP对接 118
4.20 维护模式 119
4.21 故障确认 121
4.22 批量更新 123
第5章 处理监控指标数据 124
5.1 添加新的监控项 124
5.1.1 监控项的含义 124
5.1.2 如何添加监控项 124
5.2 监控指标的自定义 130
5.2.1 key的格式 130
5.2.2 key名称的定义范围 130
5.2.3 key的参数数组应用实例 131
5.2.4 用户自定义参数 131
5.3 Zabbix内置的监控方式 133
5.3.1 Zabbix-Agent监控方式 134
5.3.2 Simple check监控方式 140
5.3.3 日志监控方式 144
5.3.4 计算型监控方式 152
5.3.5 聚合型监控方式 156
5.3.6 内部检测监控方式 163
5.3.7 SSH监控方式 163
5.3.8 Telnet监控方式 167
5.3.9 扩展检测监控方式 169
5.4 监控项指标数据的预处理 171
5.4.1 预处理概述 171
5.4.2 预处理的运行流程 172
5.4.3 预处理的数据类型 173
5.5 配置宏 177
5.5.1 全局宏 177
5.5.2 模板宏 178
5.5.3 主机宏 178
5.5.4 监控项宏 179
5.5.5 宏的函数运算 180
5.5.6 宏使用总结 181
5.5.7 宏的上下文 182
5.6 配置值映射 183
第6章 精通告警配置 185
6.1 告警流程 185
6.2 告警触发器的配置 186
6.2.1 Trigger的作用 186
6.2.2 Trigger的故障等级定义 187
6.2.3 Trigger的配置步骤 187
6.2.4 Trigger告警依赖 191
6.2.5 Trigger中的数值单位 192
6.2.6 Trigger表达式 192
6.3 告警处理的配置 200
6.3.1 如何发送告警 200
6.3.2 Action功能概述 200
6.3.3 Action配置步骤 201
6.3.4 告警处理措施 203
6.3.5 在告警消息中使用宏 207
6.3.6 告警恢复措施 208
6.3.7 告警更新措施 209
6.3.8 发送告警消息的步骤总结 210
6.3.9 查看告警消息的发送记录 211
6.3.10 执行远程命令 211
6.3.11 不支持的Item发送告警 215
6.4 邮件告警配置 215
6.4.1 创建Media类型 215
6.4.2 创建用户 216
6.4.3 创建Action 217
6.5 自定义脚本告警 218
6.5.1 自定义脚本告警的原理 218
6.5.2 电话告警 220
6.5.3 短信接口告警 221
6.5.4 微信告警 221
6.6 邮件告警脚本的配置 222
6.6.1 Zabbix-Server自定义告警脚本 222
6.6.2 Zabbix-Server重启服务 224
6.6.3 Zabbix-Web配置自定义脚本 225
6.6.4 告警接收邮件的配置 226
6.6.5 查看邮件发送状态 227
6.7 告警升级机制 227
6.7.1 告警升级的作用 227
6.7.2 告警升级的配置 228
6.8 触发器标签配置 230
6.8.1 标签设置 230
6.8.2 标签的复杂匹配 231
6.9 手动关闭告警 233
6.10 如何取消告警发送 235
6.11 如何删除故障信息 235
6.12 告警聚合 236
6.12.1 告警聚合的原理 236
6.12.2 基于触发器的告警聚合 236
6.12.3 基于全局的告警聚合 239
6.13 告警配置故障排查 242
6.13.1 告警消息未发送示例 242
6.13.2 邮件服务器连接失败示例 243
第7章 探究告警触发器 244
7.1 Trigger函数的意义 244
7.2 Trigger函数的分类 244
7.3 Trigger函数——比较与查找 245
7.3.1 求最近两值差的绝对值——abschange 245
7.3.2 求最大值与最小值的差——delta 248
7.3.3 判断最近两值是否相同——diff 251
7.3.4 求最近两值的变化量——change 254
7.3.5 数值的位与运算——band 256
7.3.6 数据失联——nodata 261
7.3.7 获取最新数据——last 264
7.3.8 求前一个值——prev 266
7.4 Trigger函数——计算 268
7.4.1 求最大值——max 268
7.4.2 求最小值——min 271
7.4.3 求平均值——avg 273
7.4.4 值求和——sum 276
7.4.5 统计个数——count 278
7.5 Trigger函数——时间 286
7.5.1 返回当前时间(年月日时分秒)——now 286
7.5.2 返回当前日期(年月日)——date 288
7.5.3 返回当前时间(时分秒)——time 289
7.5.4 本月第几天——dayofmonth 291
7.5.5 本周第几天——dayofweek 292
7.5.6 时间对比——fuzzytime 293
7.6 Trigger函数——日志 295
7.6.1 日志ID——logeventid 295
7.6.2 获取日志等级——logseverity 296
7.6.3 获取日志来源——logsource 297
7.7 Trigger函数——字符串匹配 299
7.7.1 正则表达式不区分大小写——iregexp 299
7.7.2 正则表达式区分大小写——regexp 301
7.7.3 字符串匹配——str 302
7.7.4 字符串长度——strlen 304
7.8 Trigger函数——趋势预测 305
7.8.1 百分线——percentile 305
7.8.2 趋势预测——forecast 307
7.8.3 剩余时间——timeleft 311
7.8.4 趋势预测计算型监控方式 314
7.9 参考资料 318
第8章 剖析监控方式 319
8.1 Zabbix支持的监控方式 319
8.2 Zabbix监控方式的逻辑 320
8.3 Zabbix-Agent的工作模式 321
8.3.1 工作模式概述 321
8.3.2 被动模式的配置 323
8.3.3 主动模式的配置 324
8.4 Zabbix-Trapper(zabbix_sender)监控方式 326
8.4.1 Zabbix-Trapper的配置步骤 326
8.4.2 Zabbix-Trapper的配置示例 326
8.4.3 使用zabbix_sender程序发送数据 328
8.4.4 使用zabbix_sender程序批量读取文件 329
8.5 SNMP监控方式 330
8.5.1 SNMP协议概述 330
8.5.2 SNMP协议的工作方式 331
8.5.3 SNMP协议的工作原理 331
8.5.4 SNMP MIB简介 334
8.5.5 SNMP相关术语 336
8.5.6 配置Zabbix-Server的SNMP监控 337
8.5.7 SNMP监控中的LLD原理 340
8.6 SNMPTraps监控方式 343
8.6.1 SNMPTraps的概念 343
8.6.2 SNMPTraps的工作原理 343
8.6.3 SNMPTraps的安装与配置 343
8.6.4 SNMPTraps的测试 346
8.7 IPMI监控方式 348
8.7.1 IPMI的概念 348
8.7.2 IPMI的特性 349
8.7.3 配置Zabbix-Server监控IPMI 349
8.7.4 Zabbix自带的IPMI模板 350
8.7.5 在Linux系统中使用OpenIPMI 350
8.7.6 创建IPMI模板 352
8.7.7 IPMI监控主机 353
8.8 JMX监控方式 354
8.8.1 JMX在Zabbix中的运行流程 354
8.8.2 JMX监控的安装和配置 355
8.8.3 安装Zabbix-Java-Gateway 355
前 言
本书由来
“运筹帷幄之中,决胜千里之外。”在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管理人员
√ 系统集成商 √ 架构设计人员
勘误支持
尽管笔者和编辑都努力地对书稿进行再三校对,但因笔者水平和时间所限,书中可能存在少许的错误或不妥之处,如读者遇到,还恳请批评、指正。读者若有任何宝贵的意见或建议,可以发送邮件至本书的专题邮箱[email protected],笔者将尽快给予反馈解答。本书的勘误也会在随书项目中得到反馈。
内容声明
本书采用的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
邮件:[email protected]
评论
还没有评论。