Zabbix监控系统深度实践

Zabbix监控系统深度实践(企业级分布式系统自动化运维必选利器,大规模Zabbix集群实战经验技巧总结,由浅入深全面讲解配置、设计、案例和内部原理

姚仁捷 著 

ISBN 978-7-121-24013-3

20148月出版

定价:69.00

364

16

编辑推荐

国内最大规模Zabbix集群负责人力作

全面讲解Zabbix配置应用,深入剖析Zabbix内部原理

用真实工作需求驱动,以独家实践案例指引,助您监控利器出鞘

Zabbix是目前最流行的分布式图形化开源监控系统解决方案,它有健全灵活的监控数据采集、存储、告警规则配置以及图形化展示界面。丰富的功能背后是极高的复杂性,特别在国内缺乏相关的中文资料的背景下,系统管理人员很难参透工具内在的精髓和局限,从而高效地将其用于大规模监控场景。本书作者曾参与大规模Zabbix集群应用项目,系统覆盖了当时5000多台主机和几十万个监控点,近百万的监控点记录,修改了Zabbix多处源码,实现了很多自动化的监控部署和Proxy-Master 的分布式监控,以及通过Zabbix Trigger自动分析等,从实践中总结了极具价值的方法、思想和技巧在本书中分享。

内容提要

Zabbix监控系统深度实践》是一本由浅入深,全面讲解Zabbix应用与原理的技术书籍,也是作者多年实战经验的总结和浓缩。在概念篇,从一个简单但完整的入门案例讲起,案例中有最基本的概念介绍,通过案例帮助那些只要将服务器加入监控,并且看到监控数据的读者;然后逐步深入,在进阶篇介绍Zabbix的各方各面的配置;在设计篇中对Zabbix的内部原理进行深入剖析,包括Zabbix与数据库的交互Zabbix数据库表的设计等,并分享作者在Zabbix上踩过的坑以及解决问题的思路。最后会在开源部分介绍58同城开源的ZatreeChrome的插件、手机客户端等工具。

这本书会从我们工作中的实际需求出发,以实际案例作为指引,希望对于读者而言,不仅仅是学会某些具体的操作,而是深入了解Zabbix 的设计思路,掌握解决问题的方法。

Zabbix监控系统深度实践》适合想使用Zabbix构建监控系统的技术人员阅读,也适合有一定基础、对于Zabbix有更高的要求的读者。

目录

第一部分 概念篇

1 自动化运维和监控系统…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 2

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 AgentZabbix Server运行…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯20

3.5 配置文件详解…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯20

3.5.1  zabbix_server.conf…………………………………………………………20

3.5.2 zabbix_agentd.conf…………………………………………………………24

4 监控第一台Host… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 26

4.1 Host在监控系统中的活动…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯26

4.2 添加一个用户…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯27

4.3 把服务器加入Zabbix监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯27

4.4 添加Item… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯28

4.5 添加Trigger… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯29

4.6 设置Action… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31

4.7 收到第一封报警邮件吧…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯33

4.8 Zabbix 报警流程…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯33

4.9 看,Zabbix在工作呢…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯34

4.9.1 全局搜索框………………………………………………………………………… 35

4.9.2 查看监控数据……………………………………………………………………… 35

4.9.3 查看报警信息……………………………………………………………………… 36

4.10 添加自定义监控点…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯37

第二部分 配置篇

5 增加监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 40

5.1 Host配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯41

5.2 Item属性…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯45

5.3 Item类型…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯48

5.3.1 Zabbix Agent类型………………………………………………………………… 48

5.3.2 SNMP类型……………………………………………………………………51

5.3.3 IPMI类型…………………………………………………………………………… 52

5.3.4 日志文件监控……………………………………………………………………… 53

5.3.5 计算型Item…………………………………………………………………54

5.3.6 Zabbix内部监控………………………………………………………………55

5.3.7 ssh类型Item……………………………………………………………………58

5.3.8 Telnet类型Item……………………………………………………………60

5.3.9 External Check类型Item………………………………………………………60

5.3.10 Aggregate类型Item……………………………………………………………… 60

5.3.11 Trapper类型Item…………………………………………………………62

5.3.12 JMX类型Item………………………………………………………………… 62

5.3.13 ODBC类型Item…………………………………………………………………… 64

5.4 Item历史数据HistoryTrends…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯66

5.5 使用ApplicationItem分组…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯67

5.6 Item Key详解…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯68

5.7 Template模板…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯69

5.7.1 新建和配置一个Template…………………………………………………69

5.7.2 建立/取消HostTemplate的关联……………………………………………71

5.7.3 修改Template………………………………………………………………73

5.7.4 TemplateHost……………………………………………………………73

5.7.5 Template之间的父子关系……………………………………………………74

5.8 CloneFull CloneMass Update… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯75

5.9 Windows监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯76

5.10 VMware监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82

5.11 Zabbix监控性能…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯84

6 报警配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 86

6.1 Triggers…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯86

6.1.1 配置Triggers……………………………………………………………………86

6.1.2 Trigger expression……………………………………………………………… 87

6.1.3 Function详解…………………………………………………………………89

6.1.4 Trigger依赖………………………………………………………………………… 92

6.1.5 Trigger等级………………………………………………………………………… 94

6.1.6 单位………………………………………………………………………………… 95

6.2 Events… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯95

6.3 Actions… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯96

6.3.1 Action………………………………………………………………………97

6.3.2 Operation………………………………………………………………………99

6.3.3 Condition………………………………………………………………………… 104

6.3.4 Escalations………………………………………………………………………… 107

6.3.5 Unsupported状态的Items的报警……………………………………………… 110

6.4 Media类型…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 111

6.5 Maintenance状态…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 116

7 数据可视化…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 118

7.1 Graph… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 118

7.2 Network Maps… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 123

7.2.1 新建Maps………………………………………………………………………… 123

7.2.2 创建元素………………………………………………………………………… 124

7.2.3 选择元素………………………………………………………………………… 126

7.2.4 关联元素………………………………………………………………………… 126

7.2.5 关联指示器……………………………………………………………………… 126

7.3 Screens …⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 127

7.4 Slide shows … ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 131

8 UsersMacros…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 133

8.1 UserUser group…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 133

8.1.1 配置User……………………………………………………………………… 133

8.1.2 User group…………………………………………………………………… 135

8.2 Macros… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 136

8.2.1 自带宏…………………………………………………………………………… 136

8.2.2 用户自定义宏…………………………………………………………………… 137

8.2.3 自定义宏的适用范围…………………………………………………………… 139

9 IT services服务监控与Web monitoring网络监控…⋯⋯⋯⋯⋯⋯⋯⋯ 140

9.1 Services服务监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 140

9.2 服务配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 141

9.3 Web monitoring网络监控配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 145

9.4 监控百度示例…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 148

10 Zabbix前端界面…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 151

10.1 Monitoring板块…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 151

10.1.1 Dashboard栏目……………………………………………………………151

10.1.2 Overview栏目………………………………………………………………… 157

10.1.3 Web栏目……………………………………………………………………… 158

10.1.4 Latest data栏目……………………………………………………………159

10.1.5 Triggers栏目…………………………………………………………………… 159

10.1.6 Events栏目……………………………………………………………………… 160

10.1.7 Graphs&Screens&Maps栏目………………………………………………161

10.2 Inventory板块…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 161

10.3 Reports板块…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 161

10.4 Configuration板块…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 166

10.4.1 Host groups栏目……………………………………………………………… 166

10.4.2 Template栏目…………………………………………………………………… 167

10.4.3 Hosts栏目……………………………………………………………………… 168

10.4.4 Maintenance栏目……………………………………………………………… 170

10.4.5 其他…………………………………………………………………………… 170

10.5 Administration板块…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 171

10.5.1 General栏目…………………………………………………………………… 171

10.5.2 DM栏目………………………………………………………………………… 177

10.5.3 Authentication栏目…………………………………………………………… 178

10.5.4 Users栏目……………………………………………………………………… 179

10.5.5 Media types栏目……………………………………………………………181

10.5.6 Scripts栏目……………………………………………………………………… 181

10.5.7 Audit栏目……………………………………………………………………… 185

10.5.8 Queue栏目……………………………………………………………………… 186

10.5.9 Notification栏目……………………………………………………………… 186

10.5.10 Installation栏目……………………………………………………………187

10.6 前端配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 187

10.6.1 全局配置参数………………………………………………………………… 187

10.6.2 前端维护状态显示…………………………………………………………… 189

10.6.3 Profile设置……………………………………………………………………… 190

10.7 全局搜索框…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 192

11 Discovery… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 193

11.1 基于网络的Discovery⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 193

11.2 Discovery的一个例子⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 195

11.3 Discovery RuleDiscovery Action的配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 196

11.4 存活Agent自动加入监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 199

11.5 low-level discovery…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 200

第三部分 进阶篇

12 Zabbix API… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 206

12.1 Zabbix API POST参数…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 206

12.2 Item支持的Zabbix API方法…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 207

12.2.1 Item object……………………………………………………………………… 208

12.2.2 item.create………………………………………………………………209

12.2.3 item.delete………………………………………………………………210

12.2.4 item.exists…………………………………………………………………… 210

12.2.5 item.get……………………………………………………………………… 211

12.2.6 item.getobjects……………………………………………………………… 214

12.2.7 item.isreadable/item.iswritable…………………………………………215

12.2.8 item.update……………………………………………………………………… 215

12.3 如何阅读Zabbix API文档…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 216

13 Zabbix分布式监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 217

13.1 两种分布式架构对比…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 217

13.2 Proxy单级分布式架构…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 218

13.3 Proxy配置…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 219

13.4 Node多级分布式架构…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 220

14 Zabbix系统优化…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 227

14.1 Zabbix内部运行机制…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 227

14.2 Items过多造成性能下降…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 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.2 Hosts表…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 241

16.3 Items表…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 244

16.4 Trigger在数据库中的结构…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 248

16.5 Events表…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 253

16.6 TriggersEvents生成的规则…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 255

17 HistoryTrends… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 256

17.1 sync字段的含义…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 257

17.2 historytrends的区别…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 261

17.3 housekeepertrends表…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 262

17.4 Graph对于historytrends的选择…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 263

18 Zabbix和数据库交互详解…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 268

18.1 include/zbxdb.h… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 268

18.2 zbxdb/db.c… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 270

18.3 zbxdbhigh… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 271

19 Zabbix 2.2新功能介绍…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 274

19.1 数据库自动升级…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 274

19.1.1 检查数据库版本……………………………………………………………… 274

19.1.2 mandatoryoptional字段…………………………………………………275

19.1.3 数据库升级过程……………………………………………………………… 277

19.1.4 前端提示……………………………………………………………………… 278

19.2 Web监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 279

19.2.1 Web监控Template化…………………………………………………………… 279

19.2.2 Web监控重试机制…………………………………………………………… 279

19.2.3 使用HTTP代理………………………………………………………………… 280

19.2.4 URL监控中使用页面内容作为变量………………………………………… 281

19.3 数据映射…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 282

19.4 网页字符串匹配…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 282

19.5 日志文件监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 283

19.6 Latest Data局部刷新…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 284

19.7 动态载入模块…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 285

19.8 SNMP监控改进…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 289

19.8.1 SNMPv3相关的增强…………………………………………………………… 289

19.8.2 SNMP重试和超时机制改进…………………………………………………… 290

19.8.3 lld的复杂OIDs……………………………………………………………… 290

20 Zabbix内置监控项实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 291

20.1 system.hostname…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 291

20.2 system.cpu.load… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 292

第五部分 社区和开源

21 典型案例分析…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 296

21.1 前端显示Zabbix server停止工作问题…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 296

21.2 Item设置了但没有数据…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 302

21.2.1 看页面是否有报错…………………………………………………………… 302

21.2.2 Zabbix ServerZabbix Agent的网络是否互通……………………………… 303

21.2.3 zabbix_get是否能够获取到数据……………………………………………… 304

21.2.4 总结…………………………………………………………………………… 304

21.3 一个扫描history全表的SQL问题…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 305

21.4 解决问题的思路…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 315

22 Zabbix代码问题和解决…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 316

22.1 Duplicated Host问题…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 316

22.2 拼接大SQL问题…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 318

22.3 nextid问题…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 319

22.4 在Zabbix中打印日志…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 321

23 PPTVZabbix监控体系…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 322

23.1 Python Zabbix API… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 322

23.2 Spider——服务器添加Zabbix监控…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 324

23.3 Event Console…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 326

23.4 Rule Engine… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 326

23.5 报警系统架构…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 327

24 Zatree…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 328

25 Zabbix第三方插件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 331

25.1 Chromix… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 331

25.2 Zabbix Notifier… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 332

25.3 手机端Zabbix App…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 333

25.3.1 ZBX Mobile………………………………………………………………… 333

25.3.2 Zabbkit……………………………………………………………………… 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 Python API作者。曾担任社区内最大的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 上更好地检索信息。基于这个原因,我将之前的中文术语全部又换成了英语。由于这些术语非常多,虽然编辑帮我细致的检查,难免有疏漏,非常抱歉。希望大家能够谅解。

致谢

在前言的最后,要感谢很多人。首先感谢的是我的父母,没有你们,就没有我。然后要感谢我的老婆,因为要忙于写书,好多时候不能陪你。最后要感谢的是诸超、陈文春、吴晓刚、周昕毅、朱宁和刘海阳等同事的帮助,在我写书的过程中,给出了很多宝贵的建议。谢谢各位。


Zabbix监控系统深度实践
 

你可能感兴趣的:(zabbix)