第1部分 Zabbix基础部分
第1章 监控系统简介 2
1.1 为何需要监控系统 2
1.2 监控系统的实现 2
1.3 监控系统的开源软件现状 4
1.4 监控系统的原理探究 11
第2章 Zabbix简介 14
2.1 Zabbix的客户 14
2.2 使用Zabbix的准备 15
2.3 Zabbix为何物 15
2.4 选择Zabbix的理由 16
2.5 Zabbix的架构 17
2.6 Zabbix的运行流程 18
2.7 Zabbix的功能特性 19
第3章 安装部署 21
3.1 安装环境概述 21
3.2 Zabbix_Server服务端的安装 25
3.3 Zabbix_Agent客户端的安装 39
3.4 SNMP监控方式的安装配置 40
3.5 Windows上安装Zabbix-Agent 40
3.6 其他平台的安装 43
3.7 zabbix_get的使用 43
参考Zabbix手册中的说明。
示例命令:zabbix_get -s 127.0.0.1 -p 10050 -k “system.cpu.load[all,avg1]”
3.8 Zabbix相关术语(命令) 44
3.9 Zabbix Server对数据的存储 45
3.10 Zabbix init脚本解释 55
3.11 高可用和安全 56
3.12 Zabbix数据库的备份 57
第4章 快速配置使用 59
配置完成后,访问`http://hostnameOrIpAddress/zabbix’来访问。
4.1 配置流程 59
Host groups – Hosts – Applications – Items – Triggers – Event – Action – User groups – Users – Medias – Audit
其中,Item、Trigger、Graphs通常使用模板进行配置,无需逐个配置。
其中,Item用于获取数据;Graphs用于向用户展示Item获取的数据;
配置Trigger不是必须的。它主要用于条件判断,如果在不满足条件时触发事件,则需要配置触发器。
配置Screens可以将多个Graphs集中显示。
简单的逻辑图就是:
下面介绍配置。
4.2 主机组的添加 61
添加主机组,将一组主机存放在一起,也可以存放模板。
建议:同一属性的主机或者模板,应该归类到同一个分组中。
分组原则:
- 以地理位置进行划分;
- 以业务单位进行划分;
- 以机器用途进行划分;
- 以系统版本划分;
- 以应用程序进行划分;
分组以后可以非常方便管理。
Configuration -> Host groups -> Create host group
数据表存储:zabbix.groups
4.3 模板的添加 63
Item、Trigger、Graph、Web、Discovery都是存在于主机之上的,很多主机又都会用到这些监控配置,因此可以将他们做成模板。
使用时,将主机添加指定模板即可。
添加模板:Configuration – Templates – Create template
继承模板:继承其他模板,从而继承其他模板中的Applications、Items、Triggers等等内容:Configuration – Templates – Create template – Linked templates
设置宏:还可以设置宏,用于在后面的Items、Triggers中引用。
4.4 添加主机 65
添加主机:Configuration – Hosts – Create Host
一般流程:设置主机信息 – 关联到模板
如果要取消关联模板,“Unlink”用于取消模板,而“Unlink and clear”取消关联并清除数据。
模板和主机都存在于zabbix.host表中。
4.5 Graphs的配置 68
用于将数据进行可视化。
在Hosts和Templates中设置Graphs:Configuration – Hosts – <Select Host> – Graphs – Create graph
各个参数的含义参考:2 Custom graphs
4.6 Screen的配置 74
集中显示多种信息,这信息可以是Graphs、Maps、Server info等等,几乎涵盖了所有的信息。
Configuration – Screens – Screens – Create screen
通过选择不同的“Resource”,可以添加多种类型的信息。参考 1 Screen elements 一文。
4.7 Slide shows的配置 78
以幻灯片的形式来显示多个Screen的内容。
同样,也是在:Configuration – Screens – Slide shows – Create slide show
4.8 Zatree的使用 79
https://github.com/spider4k/zatree
实现了cacti中树形显示主机的功能。
4.9 Map的配置 80
用网络拓扑图来展示各种设备。
Configuration – Maps – Create maps
还可以设置背景图:
- 上传背景图:Administration – General – Images – Background – Create background
- 使用背景图:Monitoring – Maps – Create map – Background image
- 如果要编辑背景图:Monitoring – Maps – <Map name> / Action – Properties
添加设备:
- Map element,用于添加设备
- 单击设备还编辑设备信息:
- 在Label中,可以使用宏来设置显示信息,参考 10 Macros 一文
还可以连接设备:
- 按住Ctrl键,选中两个设备;
- 点击Link: Add来添加连接;
- 弹出窗口中Edit可以用来编辑连接,并这只宏
在Monitoring – Maps中查看这只的Maps信息
在设备上单机右键,可以对设备进行某些操作,例如ping、traceroute等等。
有关Maps的更多信息,可以参考 2 Network maps 一文
4.10 Web监控 85
监控Web程序,下载速度、返回码、响应时间,还可以监控一组连续的Web动作。
模拟用户访问,判断返回码、返回内容的状态来判断可用性。
源码安装时要指定–with-libcurl选项。
Configuration – Hosts – Web – Create scenario
可以配置重试、超时、参数、要求的状态、要求的返回值、用户代理、请求频率、HTTP代理、认证信息;同时可以添加多个URL地址。
4.11 IT服务 92
从宏观来度量和管理基础设施的总体情况的可用性。因为又是我们并不关心基础信息的情况,而是只关心总体情况。
可以显示服务的可用时间。
4.12 报表 95
用于显示Zabbix的一些信息,比如Zabbix的状态、可用性报告、前100的触发器等等
只能呈现一些基本的图形数据。
4.13 资产管理 97
资产管理功能有限,可以禁用、启动、自动获取资产参数。
资产的配置是在Hosts中的:Configuration – Hosts – <Select Host> – Host inventory
可以使用Zabbix自带的「key」来发现资产参数,然后导入CMDB中。
第5章 深入配置使用 99
自定义Item来获取数据。
5.1 Items的添加 99
Item就是监控项,制定了获取数据的方式,获取数据的类型,获取数据的时间间隔,历史数据保存的时间,趋势数据保存时间,监控Key的分组等等。
监控项存储在zabbix.item表中,检测周期的长短影响Zabbix Server的性能。
5.2 Items key的添加 105
Item可以添加到Template中,也可以添加Host中。其中Template可以复用,可以把Template中的所有Item添加到主机中。
— 添加ITEM —
如何向模板中添加Items:
- Configuration – Templates – <Template Name> – Items – Create item
- 填写Name
- 填写Key,可以使用「Select」进行选择。参考手册「2 Item types」手册。
- 通过zabbix_get命令测试Item添加是否成功。注意zabbix_get只能用于Agent取值。
关于Items中各个属性的含义参考「1 Creating an item」手册。
— 添加ITEM KEY —
用户可以自定义在ITEM的KEY,但只能在Zabbix Agent中使用。
通过在zabbix_agentd.conf中使用UserParameter=参数实现,具体格式为UserParameter=key,command或者UserParameter=key[*],command,第二种是有参数的形式。其中,key就是上面的key_name,如果key后跟[*]表示可以传递参数;command是命令,参数将以$1, $2, $3…的顺序传递给命令。
默认情况下,参数中不允许使用\'”`*?[]{}~$!&;()<>|#@这些特殊字符,如果要使用,就要在zabbix_agentd.conf中加入UnsafeUserParameters=1配置,并重启zabbix_agent服务。$是特殊字符,如果要使用,则要使用$$来表示,例如awk '{print $$2}‘
自定义参数可以返回文本(character、log、text)和空值,如果返回是无效值,则显示ZBX_NOTSUPPORTED。
如何自定义一个Key呢?具体步骤如下:
重启zabbix_agentd服务,service zabbix_agentd restart
使用zabbix_get命令测试,zabbix_get -s 127.0.0.1 -k 'wc[/etc/passwd,root]‘
当然,为了可维护性,可以使用Include=/path/to/dir引入目录,在该目录中创建文件,存储自定义的KEY。但是,如果出现重复则会导致Zabbix Agent启动失败。
可以使用zabbix_agentd -p打印所有已知的key
Key的格式分为有参或无参两种:
- key_name[parameters]
- key_name
上述格式中的key_name的取值范围为:
- 数字、大小写字母
- 下划线(_)
- 横线(-)
- 点(.)
格式中的[parameters]是参数,是可选的。
可选参数[parameters]格式分为三种:
- 带引号的参数。参数值可以是任意内容,但是双引号需要转义;
- 不带引号的参数。参数值可以任意内容,但是除了逗号、右方括号;
- 数组。如果参数是一个数组,则需要用逗号将各个参数隔开;
5.3 Items的类型 109
5.4 宏的配置 129
5.5 维护时间 131
5.6 事件确认 132
5.7 数据的导入/导出配置 134
第6章 告警的配置 135
这一部分介绍告警的设置,下面介绍Trigger、Action配置,重点介绍Trigger的正则表达式、告警、升级告警、自定义告警脚本。
6.1 告警概述 135
告警,达到某个阈值时通知用户。
告警流程:达到触发器的阈值,执行Action通知用户,并执行某些命令来处理。
告警流程:
到用户的告警流程:
告警的配置步骤:
- 配置Trigger
- 配置User
- 配置Media
- 配置Action
6.2 Trigger的配置 136
Item负责采集数据,而Trigger负责检查是否正常,如果不正常则会触发Event,并且触发Action:
Trigger的状态分为:OK和PROBLEM
每次通过Item获取到值以后,就会通过Trigger中的表达式进行判断
Trigger中的时间函数nodate()、date()等等每隔30s就会进行重新判断。
一个Trigger对应一个Item,一个Item可以对应多个Trigger。没有必要的Item可以不配置Trigger。
同一个Item,当返回值不同时,可以设置不同的安全级别(实际上是设置多个Trigger),以实现不同界别的告警。
Trigger的配置步骤:
6.3 添加Actions 151
6.4 邮件告警配置实例 160
6.5 自定义脚本告警 163
6.6 邮件告警脚本的配置实例 165
6.7 告警升级的机制 169
6.8 告警配置故障排查 172
第2部分 Zabbix中级部分
第7章 监控方式剖析 176
7.1 Zabbix支持的监控方式 176
7.2 Zabbix监控方式的逻辑 177
7.3 Agent监控方式 177
7.4 Trapper监控方式 177
7.5 SNMP监控方式 180
7.6 IPMI监控方式 189
7.7 JMX监控方式 194
7.8 命令执行 201
第8章 分布式监控 202
8.1 代理架构 202
8.2 节点架构 205
8.3 被动模式和主动模式 206
第9章 Zabbix与自动化运维 211
9.1 监控自动化 211
9.2 网络发现 212
9.3 主动方式的自动注册 215
9.4 Low level discovery 221
9.5 Zabbix与自动化配置管理工具Saltstack 238
第10章 使用的经验技巧 242
10.1 如何有效地设置监控告警 242
10.2 监控项的使用技巧 246
10.3 触发器的使用技巧 246
10.4 触发器配置 247
10.5 谷歌浏览器告警插件 249
10.6 数据图断图的原因 250
第11章 监控案例 252
11.1 监控TCP连接数 252
11.2 监控Nginx 254
11.3 监控PHP-FPM 256
11.4 监控MySQL 260
11.6 监控DELL服务器 272
11.7 监控Cisco路由器 272
11.8 监控VMware 274
第3部分 Zabbix高级部分
第12章 性能优化 282
12.1 Zabbix性能优化概述 282
12.2 Zabbix性能优化的依据 283
12.3 配置文件的参数优化 285
12.4 Zabbix的架构优化 287
12.5 Zabbix的Items中工作模式以及Trigger的优化 287
12.6 Zabbix的数据库优化 287
12.7 其他方面 289
第13章 Zabbix API的使用 290
13.1 Zabbix API简介 290
13.2 JSON-RPC 290
13.3 Zabbix API的使用流程 293
13.4 第三方Zabbix API模块 302
第14章 使用Zabbix协议 304
14.1 Zabbix协议概述 304
14.2 Zabbix Sender协议 305
14.3 Zabbix Get协议 310
14.4 Zabbix Agent协议 310
第15章 定制Zabbix安装包 313
15.1 为什么要定制安装包 313
15.2 如何定制安装包 313
第16章 大型分布式监控案例 316
16.1 监控系统构建概述 316
16.2 监控环境架构图 317
16.3 架构实现的过程 317
16.4 业务相关的配置 335
16.5 其他需求 338
附录A 源码安装及相关配置 339