Zabbix监控系统深度实践(企业级分布式系统自动化运维必选利器,大规模Zabbix集群实战经验技巧总结,由浅入深全面讲解配置、设计、案例和内部原理)
姚仁捷 著
ISBN 978-7-121-24013-3
2014年8月出版
定价:69.00元
364页
16开
编辑推荐
国内最大规模Zabbix集群负责人力作
全面讲解Zabbix配置应用,深入剖析Zabbix内部原理
用真实工作需求驱动,以独家实践案例指引,助您监控利器出鞘
Zabbix是目前最流行的分布式图形化开源监控系统解决方案,它有健全灵活的监控数据采集、存储、告警规则配置以及图形化展示界面。丰富的功能背后是极高的复杂性,特别在国内缺乏相关的中文资料的背景下,系统管理人员很难参透工具内在的精髓和局限,从而高效地将其用于大规模监控场景。本书作者曾参与大规模Zabbix集群应用项目,系统覆盖了当时5000多台主机和几十万个监控点,近百万的监控点记录,修改了Zabbix多处源码,实现了很多自动化的监控部署和Proxy-Master的分布式监控,以及通过Zabbix Trigger自动分析等,从实践中总结了极具价值的方法、思想和技巧在本书中分享。
内容提要
《Zabbix监控系统深度实践》是一本由浅入深,全面讲解Zabbix应用与原理的技术书籍,也是作者多年实战经验的总结和浓缩。在概念篇,从一个简单但完整的入门案例讲起,案例中有最基本的概念介绍,通过案例帮助那些只要将服务器加入监控,并且看到监控数据的读者;然后逐步深入,在进阶篇介绍Zabbix的各方各面的配置;在设计篇中对Zabbix的内部原理进行深入剖析,包括Zabbix与数据库的交互Zabbix数据库表的设计等,并分享作者在Zabbix上踩过的坑以及解决问题的思路。最后会在开源部分介绍58同城开源的Zatree和Chrome的插件、手机客户端等工具。
这本书会从我们工作中的实际需求出发,以实际案例作为指引,希望对于读者而言,不仅仅是学会某些具体的操作,而是深入了解Zabbix 的设计思路,掌握解决问题的方法。
《Zabbix监控系统深度实践》适合想使用Zabbix构建监控系统的技术人员阅读,也适合有一定基础、对于Zabbix有更高的要求的读者。
目录
第一部分 概念篇
第 1 章 自动化运维和监控系统… ……………………………………………………… 2
1.1 互联网公司的运维工作…………………………………………………………………… 2
1.2 何谓自动化运维…………………………………………………………………………… 3
1.3 监控系统在运维自动化中的角色………………………………………………………… 5
1.4 监控系统的理想化模样…………………………………………………………………… 5
第 2 章 Zabbix简介……………………………………………………………………… 7
2.1Zabbix发展现状…………………………………………………………………………… 7
2.2 选择Zabbix的理由………………………………………………………………………… 8
2.3Zabbix部分名词约定……………………………………………………………………… 9
第 3 章 Zabbix安装……………………………………………………………………… 11
3.1 获取Zabbix… ………………………………………………………………………………11
3.2Zabbix Server安装…………………………………………………………………………12
3.2.1Zabbix数据库配置……………………………………………………………12
3.2.2 安装Zabbix Server……………………………………………………………13
3.2.3 安装Zabbix Web前端……………………………………………………………… 16
3.3Zabbix Agent安装……………………………………………………………………………18
3.3.1UNIX/Linux上安装Zabbix Agent………………………………………………… 18
3.3.2Windows上安装Zabbix Agent… ………………………………………………… 18
3.4 测试Zabbix Agent和Zabbix Server运行… …………………………………………………20
3.5 配置文件详解………………………………………………………………………………20
3.5.1 zabbix_server.conf……………………………………………………………20
3.5.2zabbix_agentd.conf……………………………………………………………24
第 4 章 监控第一台Host… ……………………………………………………………… 26
4.1Host在监控系统中的活动…………………………………………………………………26
4.2 添加一个用户………………………………………………………………………………27
4.3 把服务器加入Zabbix监控…………………………………………………………………27
4.4 添加Item… …………………………………………………………………………………28
4.5 添加Trigger… ………………………………………………………………………………29
4.6 设置Action… ………………………………………………………………………………31
4.7 收到第一封报警邮件吧……………………………………………………………………33
4.8Zabbix 报警流程……………………………………………………………………………33
4.9 看,Zabbix在工作呢………………………………………………………………………34
4.9.1 全局搜索框………………………………………………………………………… 35
4.9.2 查看监控数据……………………………………………………………………… 35
4.9.3 查看报警信息……………………………………………………………………… 36
4.10 添加自定义监控点… ……………………………………………………………………37
第二部分 配置篇
第 5 章 增加监控… ……………………………………………………………………… 40
5.1Host配置……………………………………………………………………………………41
5.2Item属性……………………………………………………………………………………45
5.3Item类型……………………………………………………………………………………48
5.3.1Zabbix Agent类型………………………………………………………………… 48
5.3.2SNMP类型……………………………………………………………………51
5.3.3IPMI类型…………………………………………………………………………… 52
5.3.4 日志文件监控……………………………………………………………………… 53
5.3.5 计算型Item……………………………………………………………………54
5.3.6Zabbix内部监控………………………………………………………………55
5.3.7ssh类型Item……………………………………………………………………58
5.3.8Telnet类型Item… ……………………………………………………………60
5.3.9External Check类型Item………………………………………………………60
5.3.10Aggregate类型Item………………………………………………………………60
5.3.11Trapper类型Item… …………………………………………………………62
5.3.12JMX类型Item… ………………………………………………………………… 62
5.3.13ODBC类型Item…………………………………………………………………… 64
5.4Item历史数据History和Trends………………………………………………………………66
5.5 使用Application对Item分组…………………………………………………………………67
5.6Item Key详解………………………………………………………………………………68
5.7Template模板………………………………………………………………………………69
5.7.1 新建和配置一个Template……………………………………………………69
5.7.2 建立/取消Host和Template的关联……………………………………………71
5.7.3 修改Template…………………………………………………………………73
5.7.4Template和Host… ……………………………………………………………73
5.7.5Template之间的父子关系……………………………………………………74
5.8Clone,Full Clone和Mass Update… ………………………………………………………75
5.9Windows监控………………………………………………………………………………76
5.10VMware监控………………………………………………………………………………82
5.11Zabbix监控性能……………………………………………………………………………84
第 6 章 报警配置… ……………………………………………………………………… 86
6.1Triggers………………………………………………………………………………………86
6.1.1 配置Triggers……………………………………………………………………86
6.1.2Trigger expression………………………………………………………………… 87
6.1.3Function详解…………………………………………………………………89
6.1.4Trigger依赖………………………………………………………………………… 92
6.1.5Trigger等级………………………………………………………………………… 94
6.1.6 单位………………………………………………………………………………… 95
6.2Events… ……………………………………………………………………………………95
6.3Actions… ……………………………………………………………………………………96
6.3.1Action…………………………………………………………………………97
6.3.2Operation………………………………………………………………………99
6.3.3Condition………………………………………………………………………… 104
6.3.4Escalations………………………………………………………………………… 107
6.3.5Unsupported状态的Items的报警… …………………………………………… 110
6.4Media类型……………………………………………………………………………… 111
6.5Maintenance状态………………………………………………………………………… 116
第 7 章 数据可视化… ………………………………………………………………… 118
7.1Graph… ………………………………………………………………………………… 118
7.2Network Maps… ………………………………………………………………………… 123
7.2.1 新建Maps………………………………………………………………………… 123
7.2.2 创建元素………………………………………………………………………… 124
7.2.3 选择元素………………………………………………………………………… 126
7.2.4 关联元素………………………………………………………………………… 126
7.2.5 关联指示器……………………………………………………………………… 126
7.3Screens …………………………………………………………………………………… 127
7.4Slide shows … …………………………………………………………………………… 131
第 8 章 Users和Macros……………………………………………………………… 133
8.1User和User group………………………………………………………………………… 133
8.1.1 配置User………………………………………………………………………… 133
8.1.2User group……………………………………………………………………… 135
8.2Macros… ………………………………………………………………………………… 136
8.2.1 自带宏…………………………………………………………………………… 136
8.2.2 用户自定义宏…………………………………………………………………… 137
8.2.3 自定义宏的适用范围…………………………………………………………… 139
第 9 章 IT services服务监控与Web monitoring网络监控… …………………… 140
9.1Services服务监控………………………………………………………………………… 140
9.2 服务配置………………………………………………………………………………… 141
9.3Web monitoring网络监控配置…………………………………………………………… 145
9.4 监控百度示例…………………………………………………………………………… 148
第 10 章 Zabbix前端界面…………………………………………………………… 151
10.1Monitoring板块………………………………………………………………………… 151
10.1.1Dashboard栏目……………………………………………………………151
10.1.2Overview栏目………………………………………………………………… 157
10.1.3Web栏目……………………………………………………………………… 158
10.1.4Latest data栏目……………………………………………………………159
10.1.5Triggers栏目…………………………………………………………………… 159
10.1.6Events栏目……………………………………………………………………… 160
10.1.7Graphs&Screens&Maps栏目………………………………………………161
10.2Inventory板块…………………………………………………………………………… 161
10.3Reports板块…………………………………………………………………………… 161
10.4Configuration板块……………………………………………………………………… 166
10.4.1Host groups栏目……………………………………………………………… 166
10.4.2Template栏目…………………………………………………………………… 167
10.4.3Hosts栏目……………………………………………………………………… 168
10.4.4Maintenance栏目……………………………………………………………… 170
10.4.5 其他… ………………………………………………………………………… 170
10.5Administration板块……………………………………………………………………… 171
10.5.1General栏目…………………………………………………………………… 171
10.5.2DM栏目………………………………………………………………………… 177
10.5.3Authentication栏目…………………………………………………………… 178
10.5.4Users栏目……………………………………………………………………… 179
10.5.5Media types栏目……………………………………………………………181
10.5.6Scripts栏目……………………………………………………………………… 181
10.5.7Audit栏目……………………………………………………………………… 185
10.5.8Queue栏目……………………………………………………………………… 186
10.5.9Notification栏目……………………………………………………………… 186
10.5.10Installation栏目……………………………………………………………187
10.6 前端配置… …………………………………………………………………………… 187
10.6.1 全局配置参数… ……………………………………………………………… 187
10.6.2 前端维护状态显示… ………………………………………………………… 189
10.6.3Profile设置……………………………………………………………………… 190
10.7 全局搜索框… ………………………………………………………………………… 192
第 11 章 Discovery… ………………………………………………………………… 193
11.1 基于网络的Discovery………………………………………………………………… 193
11.2Discovery的一个例子………………………………………………………………… 195
11.3Discovery Rule和Discovery Action的配置……………………………………………… 196
11.4 存活Agent自动加入监控……………………………………………………………… 199
11.5low-level discovery……………………………………………………………………… 200
第三部分 进阶篇
第 12 章 Zabbix API… ……………………………………………………………… 206
12.1Zabbix API POST参数………………………………………………………………… 206
12.2Item支持的Zabbix API方法… ………………………………………………………… 207
12.2.1Item object……………………………………………………………………… 208
12.2.2item.create…………………………………………………………………209
12.2.3item.delete…………………………………………………………………210
12.2.4item.exists……………………………………………………………………… 210
12.2.5item.get………………………………………………………………………… 211
12.2.6item.getobjects………………………………………………………………… 214
12.2.7item.isreadable/item.iswritable……………………………………………215
12.2.8item.update……………………………………………………………………… 215
12.3 如何阅读Zabbix API文档……………………………………………………………… 216
第13 章 Zabbix分布式监控………………………………………………………… 217
13.1 两种分布式架构对比… ……………………………………………………………… 217
13.2Proxy单级分布式架构………………………………………………………………… 218
13.3Proxy配置……………………………………………………………………………… 219
13.4Node多级分布式架构………………………………………………………………… 220
第 14 章 Zabbix系统优化…………………………………………………………… 227
14.1Zabbix内部运行机制…………………………………………………………………… 227
14.2Items过多造成性能下降……………………………………………………………… 228
14.3 数据库及其他调优… ………………………………………………………………… 232
第 15 章 轻量级日志监控应用………………………………………………………… 233
15.1 准备工作… …………………………………………………………………………… 233
15.2 添加 Item… …………………………………………………………………………… 234
15.3 测试… ………………………………………………………………………………… 234
15.4 配置报警… …………………………………………………………………………… 236
15.5 轮转的日志文件… …………………………………………………………………… 237
15.6 获取关键字… ………………………………………………………………………… 238
第四部分 设计篇
第 16 章 Zabbix数据库表结构解析………………………………………………… 240
16.1 表结构概述… ………………………………………………………………………… 240
16.2Hosts表………………………………………………………………………………… 241
16.3Items表………………………………………………………………………………… 244
16.4Trigger在数据库中的结构……………………………………………………………… 248
16.5Events表………………………………………………………………………………… 253
16.6Triggers和Events生成的规则…………………………………………………………… 255
第 17 章 History和Trends… ………………………………………………………… 256
17.1sync字段的含义………………………………………………………………………… 257
17.2history和trends的区别… ……………………………………………………………… 261
17.3housekeeper和trends表… ……………………………………………………………… 262
17.4Graph对于history和trends的选择……………………………………………………… 263
第 18 章 Zabbix和数据库交互详解………………………………………………… 268
18.1include/zbxdb.h… ……………………………………………………………………… 268
18.2zbxdb/db.c… …………………………………………………………………………… 270
18.3zbxdbhigh… …………………………………………………………………………… 271
第 19 章 Zabbix 2.2新功能介绍……………………………………………………… 274
19.1 数据库自动升级… …………………………………………………………………… 274
19.1.1 检查数据库版本… …………………………………………………………… 274
19.1.2mandatory和optional字段…………………………………………………275
19.1.3 数据库升级过程… …………………………………………………………… 277
19.1.4 前端提示… …………………………………………………………………… 278
19.2Web监控………………………………………………………………………………… 279
19.2.1Web监控Template化…………………………………………………………… 279
19.2.2Web监控重试机制…………………………………………………………… 279
19.2.3 使用HTTP代理………………………………………………………………… 280
19.2.4URL监控中使用页面内容作为变量………………………………………… 281
19.3 数据映射… …………………………………………………………………………… 282
19.4 网页字符串匹配… …………………………………………………………………… 282
19.5 日志文件监控… ……………………………………………………………………… 283
19.6Latest Data局部刷新…………………………………………………………………… 284
19.7 动态载入模块… ……………………………………………………………………… 285
19.8SNMP监控改进………………………………………………………………………… 289
19.8.1SNMPv3相关的增强…………………………………………………………… 289
19.8.2SNMP重试和超时机制改进…………………………………………………… 290
19.8.3lld的复杂OIDs… ……………………………………………………………… 290
第 20 章 Zabbix内置监控项实现…………………………………………………… 291
20.1system.hostname………………………………………………………………………… 291
20.2system.cpu.load… ……………………………………………………………………… 292
第五部分 社区和开源
第 21 章 典型案例分析………………………………………………………………… 296
21.1 前端显示Zabbix server停止工作问题………………………………………………… 296
21.2Item设置了但没有数据………………………………………………………………… 302
21.2.1 看页面是否有报错… ………………………………………………………… 302
21.2.2Zabbix Server和Zabbix Agent的网络是否互通… …………………………… 303
21.2.3zabbix_get是否能够获取到数据……………………………………………… 304
21.2.4 总结… ………………………………………………………………………… 304
21.3 一个扫描history全表的SQL问题… …………………………………………………… 305
21.4 解决问题的思路… …………………………………………………………………… 315
第 22 章 Zabbix代码问题和解决……………………………………………………… 316
22.1Duplicated Host问题…………………………………………………………………… 316
22.2 拼接大SQL问题………………………………………………………………………… 318
22.3nextid问题……………………………………………………………………………… 319
22.4 在Zabbix中打印日志…………………………………………………………………… 321
第 23 章 PPTV的Zabbix监控体系…………………………………………………… 322
23.1Python Zabbix API… …………………………………………………………………… 322
23.2Spider――服务器添加Zabbix监控… ………………………………………………… 324
23.3Event Console…………………………………………………………………………… 326
23.4Rule Engine… ………………………………………………………………………… 326
23.5 报警系统架构… ……………………………………………………………………… 327
第 24 章 Zatree………………………………………………………………………… 328
第 25 章 Zabbix第三方插件………………………………………………………… 331
25.1Chromix… ……………………………………………………………………………… 331
25.2Zabbix Notifier… ……………………………………………………………………… 332
25.3 手机端Zabbix App……………………………………………………………………… 333
25.3.1ZBX Mobile…………………………………………………………………… 333
25.3.2Zabbkit………………………………………………………………………… 335
第 26 章 微信公众平台报警…………………………………………………………… 338
26.1 申请微信公众平台账号… …………………………………………………………… 338
26.2 配置微信公众平台账号… …………………………………………………………… 339
26.2.1 使用SAE进行测试开发………………………………………………………… 341
26.2.2 申请测试账号… ……………………………………………………………… 342
26.2.3 获取access_token…………………………………………………………342
26.2.4 获取用户的openid……………………………………………………………… 343
26.2.5 发送第一条文字消息… ……………………………………………………… 343
26.3 微信接口请求次数限制… …………………………………………………………… 344
第 27 章 社区论坛……………………………………………………………………… 345
附录 Zabbix自带宏… ………………………………………………………………… 347
后记……………………………………………………………………………………… 349
作者简介
姚仁捷:资深工程师,现就职于唯品会上海研发中心工作,负责日志平台建设,包括日志基础架构,数据可视化和报警系统的开发。
国内最早研究Zabbix的技术人员之一,Zabbix PythonAPI作者。曾担任社区内最大的Zabbix集群――PPTV监控系统项目负责人。精通Zabbix集群运维、使用和二次开发,深入了解Zabbix源码,善于从代码级别分析解决问题。
资深《冰与火之歌》粉丝,业余跑步爱好者,乐于尝试并推广一切可以给互联网用户带来便利和优质体验的技术。
媒体评论
Zabbix是目前很流行的分布式图形化开源监控系统解决方案。它有健全灵活的监控数据采集、存储、告警规则配置以及图形化展示界面,已经被越来越多的互联网公司所应用,成为运维基础架构系统的重要组成部分。
三年前,姚仁捷作为聚力传媒(PPTV)的系统工程师,参与并承担PPTV生产环境运维监控系统的建设工作。在短短三个月的时间里,完成了从方案选取、部署测试、小范围应用、全面上线的一整套工作,从无到有建设了覆盖数千台设备的运维监控系统。我作为项目负责人,对于他的成就感到非常欣慰。
本人作为姚仁捷的同事、朋友,向有志于运维自动化的朋友们郑重推荐此书!
陈文春
聚力传媒(PPTV)系统平台部高级总监
Zabbix是一个用于基础架构监控和告警的开源解决方案,可以说是近几年来国内外中小型互联网企业中最流行的一种。它结合了Cacti绘图和Nagios的告警机制,并拥有非常简易的Web配置界面,再配合一些标准的监控模板,就能很轻松地上手了。姚仁捷曾经在PPTV负责过Zabbix大规模集群的工作,积累了丰富的经验和技巧,本书是他多年实践工作的结晶,从功能到部署,从原理到案例,全面讲解了Zabbix相关知识,值得一读!
程国强
携程网站运营系统开发总监
Zabbix是近几年涌现出来的开源企业级监控工具,集数据采集,图表绘制,报警等功能于一身,适合中小型企业快速的从无到有建立一个完备的监控体系。丰富的功能背后是极高的复杂性,特别在国内缺乏相关的中文资料的背景下,系统管理人员很难参透工具内在的精髓和局限,从而高效地将其用于大规模监控场景。姚仁捷是国内Zabbix大规模应用场景的实践先驱,在源代码级对Zabbix的工作机制进行过研究及优化。相信本书可以帮助后来者少走弯路,趋利避害,让Zabbix成为监控项目实施中的利器。
吴晓刚
携程网站运营中心系统开发部高级经理
Zabbix是近年来非常流行的分布式监控工具,但是上手容易,精通难。八牛曾经是国内最大规模Zabbix集群的维护者,在Zabbix运维、优化及二次开发方面都有丰富的经验。本书作为他多年经验的结晶,不但详细阐述了Zabbix的部署运用,还有针对性地解析了Zabbix架构设计的关键点和具体实现方式,更列举了常见的疑难问题和解决方案,堪称监控领域难得的精品书籍,相信不同层次的读者都会有所收获。
饶琛琳
新浪网技术保障部系统架构师
前言
本书的由来
我从职业生涯开始至今,就一直在和监控系统打交道。
我最早在eBay 容量规划小组工作,使用监控系统查看服务器状态及网站运营指标;后来到PPTV 运维部,通过监控系统的数据了解上线发布的结果和网站的健康程度等情况;现在到了唯品会,我们的监控系统能够从业务、技术两个维度考察当前公司网站的运作情况。
在有监控系统之前,工程师需要到服务器上去敲命令来获取系统数据;为了分析问题,可能还需要将数据复制到本地计算机的Excel 里进行画图;最要命的是,在出现问题的时候无法知道,只有在用户报障后才能察觉。这是多么骇人听闻的场景!
而当我们有了一个好的监控系统后,这些问题就迎刃而解了。我们可以在一个界面中浏览整个机房的服务器状态、可以在Web 前端上方便地查看监控数据、可以回溯寻找事故发生时候系统的问题和报警情况。现在,我们的工程师们已经可以一边悠闲地喝着咖啡,一边分析问题了。
监控系统是整个运维自动化体系中非常重要的环节。从服务器上架到最后被回收重用,都有监控系统的身影。服务器上架时,它需要添加监控;服务器工作过程中,监控系统要时刻注意服务器的健康,并且在服务器出现异常时,要发出报警通知对应的人员;在服务器被回收时,监控系统要取消服务器的监控。这些都需要监控系统拥有API,能够方便地跟外部其他系统一起工作,把自己的工作自动化起来。
国内的互联网巨头们,可以自行开发一套监控系统。而对于绝大多数企业来说,开源的Zabbix 是非常棒的选择。它能够非常好地实现以上这些需求。可以说,在目前Zabbix 是最热门的开源监控系统。
本书的内容结构
从周围的QQ 群、论坛等地方,我发现大家对于Zabbix 的学习都是非常零散的,缺少一个系统的学习过程和解决问题的正确思路。在这本书的前面,我会先向大家介绍一个最简单的入门案例,案例中有最基本的概念介绍,通过案例帮助那些只要将服务器加入监控,并且看到监控数据的读者。后面深入一些,会介绍Zabbix 的方方面面的配置,适合打算使用Zabbix高级功能的读者。在接下来的部分,会深入剖析Zabbix 的内部原理,包括Zabbix 与数据库的交互,Zabbix 数据库表的设计等,我在Zabbix 上踩过的坑以及解决问题的思路,等等,希望能授之以渔。在本书的最后部分,主要是介绍Zabbix 在开源方面的进展,最主要的就是58同城开源的Zatree,以及Chrome 的插件和手机客户端。
这本书会从我们工作中的实际需求出发,介绍Zabbix 的使用方法和其配置管理。在这些内容之后,会有深入一些的对于Zabbix 实现的讲解,希望对于读者而言,不仅仅是学会某些具体的操作,而是深入了解Zabbix 的设计思路,掌握解决问题的方法。
作者联系方式
由于经验的不足,书中可能会有一些不足之处,大家可以联系微博@ 超大杯摩卡星冰乐,或者是我的邮箱[email protected]。
声明
在刚开始进行写作时,我考虑到很多读者是用中文版的Zabbix,所以文中的Zabbix 的术语都是使用中文。但后来我觉得对于Zabbix 的术语,研究人员是需要了解它的英文说法的,这样在同行之间才能更好的交流,也可以在Google 上更好地检索信息。基于这个原因,我将之前的中文术语全部又换成了英语。由于这些术语非常多,虽然编辑帮我细致的检查,难免有疏漏,非常抱歉。希望大家能够谅解。
致谢
在前言的最后,要感谢很多人。首先感谢的是我的父母,没有你们,就没有我。然后要感谢我的老婆,因为要忙于写书,好多时候不能陪你。最后要感谢的是诸超、陈文春、吴晓刚、周昕毅、朱宁和刘海阳等同事的帮助,在我写书的过程中,给出了很多宝贵的建议。谢谢各位。