Zabbix监控系统深度实践(企业级分布式系统自动化运维必选利器,大规模Zabbix集群实战经验技巧总结,由浅入深全面讲解配置、设计、案例和内部原理)前端
姚仁捷 著 ios
ISBN 978-7-121-24013-3数据库
2014年8月出版express
订价:69.00元 服务器
364页微信
16开网络
编辑推荐架构
国内最大规模Zabbix集群负责人力做app
全面讲解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.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
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历史数据History和Trends…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯66
5.5 使用Application对Item分组…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯67
5.6 Item Key详解… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯68
5.7 Template模板… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯69
5.7.1 新建和配置一个Template… …………………………………………………69
5.7.2 创建/取消Host和Template的关联……………………………………………71
5.7.3 修改Template… ………………………………………………………………73
5.7.4 Template和Host… ……………………………………………………………73
5.7.5 Template之间的父子关系… …………………………………………………74
5.8 Clone,Full Clone和Mass 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 章 Users和Macros…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 133
8.1 User和User 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 Rule和Discovery 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 Triggers和Events生成的规则…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 255
第 17 章 History和Trends… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 256
17.1 sync字段的含义…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 257
17.2 history和trends的区别… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 261
17.3 housekeeper和trends表… ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 262
17.4 Graph对于history和trends的选择…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 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 mandatory和optional字段…………………………………………………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 Server和Zabbix 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 章 PPTV的Zabbix监控体系…⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 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 的设计思路,掌握解决问题的方法。
做者联系方式
因为经验的不足,书中可能会有一些不足之处,你们能够联系微博@ 超大杯摩卡星冰乐,或者是个人邮箱baniu.yao@gmail.com。
声明
在刚开始进行写做时,我考虑到不少读者是用中文版的Zabbix,因此文中的Zabbix 的术语都是使用中文。但后来我以为对于Zabbix 的术语,研究人员是须要了解它的英文说法的,这样在同行之间才能更好的交流,也能够在Google 上更好地检索信息。基于这个缘由,我将以前的中文术语所有又换成了英语。因为这些术语很是多,虽然编辑帮我细致的检查,不免有疏漏,很是抱歉。但愿你们可以谅解。
致谢
在前言的最后,要感谢不少人。首先感谢的是个人父母,没有大家,就没有我。而后要感谢个人老婆,由于要忙于写书,好多时候不能陪你。最后要感谢的是诸超、陈文春、吴晓刚、周昕毅、朱宁和刘海阳等同事的帮助,在我写书的过程当中,给出了不少宝贵的建议。谢谢各位。