1.作者权威,由Zabbix大中华区总代理宏时数据官方出品,实战性强,对解决监控工作中的问题非常有帮助。
2.内容新。全面介绍了zui新版本Zabbix 6.0。
3.Zabbix创始人兼CEO Alexei Vladishev对本书的编写提出指导意见并作序力荐!
本书介绍了如何设置具有内置高可用的Zabbix、使用改进的业务服务监控、设置自动报告及创建高级触发器。Zabbix提供了有关基础设施性能和故障的有效洞察手段,并能够利用其强大的功能增强监控。
本书提供了易于遵循的操作步骤,用于使用Zabbix 6.0有效地监控网络设备和应用程序的性能。
本书首先介绍了安装Zabbix 6.0,并构建了可扩展且易于管理的环境,介绍了为不同类型的监控构建模板和使用代理构建项目与触发器的操作步骤。然后,本书使用Zabbix 6.0 API进行定制,并有效地管理Zabbix 6.0服务器和数据库。本书还介绍了在Zabbix 6.0监控工作中可能遇到的问题的快速解决方案。
本书适合具有一定Zabbix应用经验并想要进一步理解Zabbix工作机制的读者阅读,包括相关企业的运维人员、技术主管、架构师、产品经理和决策者。
第3章 监 控 实 战
Zabbix提供了非常多样化的监控方式,这使得Zabbix在数据采集方面更灵活和全面。本章将介绍如何使用Zabbix提供的各种监控方式。希望通过学习本章的内容,你对Zabbix监控相关的工作原理有更深入的了解。
环境要求:需要安装一台Zabbix server。可以使用CentOS、Ubuntu、Debian、Rocky Linux或其他任何发行版本的Linux操作系统,还需要一台安装了MariaDB数据库的主机。
如果还没有上述环境,那么请先按照第1章的内容进行操作。
3.1 Zabbix agent 2
从Zabbix 5.0发布以来,Zabbix正式开始支持Zabbix agent 2。Zabbix agent 2比之前的Zabbix agent做了很多重大的改进,比如使用了新的编程语言Golang进行编写。下面将介绍如何使用Zabbix agent 2。
3.1.1 准备
在开始使用Zabbix agent 2之前,需要将其安装到想要被监控的主机上。需要有一台安装了CentOS或Ubuntu操作系统的Linux主机作为被监控对象。
3.1.2 操作步骤
下面介绍如何安装和使用Zabbix agent 2。
1. 安装Zabbix agent 2
在需要监控的Linux主机上安装Zabbix agent 2的安装源。
(1)在CentOS操作系统的Linux主机上执行以下命令:
# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/ zabbix-release-6.0-1.el8.noarch.rpm
# dnf clean all
(2)在Ubuntu操作系统的Linux主机上执行以下命令:
# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/ zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
# dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
# apt update
然后,安装Zabbix agent 2。
(1)在CentOS操作系统的Linux主机上执行以下命令安装:
# dnf -y install zabbix-agent2
(2)在Ubuntu操作系统的Linux主机上执行以下命令安装:
# apt install zabbix-agent2
提示:在向系统添加安装源的时候,请注意Zabbix下载页面的地址变化,可以在Zabbix 官网的Download页面中获取最新的安装源地址。
2. 配置Zabbix agent 2
1)配置Zabbix agent 2的被动模式
在Zabbix agent 2安装完后,执行以下命令打开配置文件进行编辑:
# vi /etc/zabbix/zabbix_agent2.conf
通过编辑此文件,可以配置Zabbix agent 2所需的配置参数。
可以在Zabbix server上执行以下命令获取IP地址:
# ip addr
编辑并配置以下参数,将“Server”等号右边的值修改为Zabbix server的IP地址。将“Hostname”的值修改为被监控主机的主机名。
Server=127.0.0.1
Hostname=Zabbix server
执行以下命令配置开机启动,并重启Zabbix agent 2。
# systemctl enable zabbix-agent2
# systemctl start zabbix-agent2
接下来,访问Zabbix的Web前端,并添加此主机进行监控。
单击“Configuration”→“Hosts”选项,然后单击页面右上角的“Create host”按钮,打开如图3.1所示的页面。要想创建此主机监控,就需要填写以下内容。
图3.1
(1)Host name:被监控主机的主机名,作为被监控对象的唯一标识。
(2)Groups:对被监控主机进行逻辑分组。
(3)Interfaces:配置特定的监控接口,也就是被监控主机的IP地址及端口(默认为10050),被监控主机通过接口进行通信。Zabbix 6.0允许被监控主机不配置接口,但是如果使用Zabbix agent 2进行监控,就必须配置一个接口。
将被监控主机的IP地址添加至Agent接口配置字段中。
为需要监控的主机添加一个监控模板,如果你之前使用过Zabbix,那么会发现对于Zabbix 6.0来说添加模板必须在同一个选项卡中完成。由于这是一台通过Zabbix agent 2监控的Linux主机,因此可以直接添加开箱即用的Zabbix agent模板,如图3.2所示。
图3.2
单击图3.1中的“Add”按钮,一台被监控主机就创建完成了。可以看到ZBX可用性图标变成了绿色,如图3.3所示。这表示被监控主机Zabbix agent 2已启动,并通过被动模式进行监控。
图3.3
现在已经创建好了一台被监控的Linux主机,并且为这台主机添加了一个监控模板,因此可以单击“Monitoring”→“Hosts”选项对此主机的监控指标和最新数据进行查看。这里需要注意,这些监控数据可能需要等一段时间才能显示出来,如图3.4所示。
图3.4
2)配置Zabbix agent 2的主动模式
配置Zabbix agent 2的主动模式需要更改一些配置参数。
首先执行以下命令,对配置文件进行编辑:
# vi /etc/zabbix/zabbix_agent2.conf
配置Zabbix agent 2的主动模式下对应的Zabbix server/proxy地址,将“ServerActive”的值更改为Zabbix server的IP地址,命令如下:
ServerActive=127.0.0.1
将“Hostname”的值更改为“lab-book-agent”,也就是被监控主机的主机名,命令如下:
Hostname=lab-book-agent
你可以配置多个Zabbix server或 Zabbix proxy的IP地址。例如,配置多个由分号“;”分割的IP地址,表示数据推送顺序是若前一个IP地址对应的服务端口不通,数据则会被推送给后面一个IP地址对应的服务端口。配置多个由逗号“,”分割的IP地址,表示数据推送顺序是同时推送给所有IP地址对应的服务端口。
执行以下命令,重启Zabbix agent 2服务:
# systemctl restart zabbix-agent2
然后,回到Zabbix server的主机配置页面,对刚才配置的被动模式的监控主机进行重命名操作,如图3.5所示。
图3.5
之所以这样配置,是因为对于主动模式而言,Zabbix agent 2配置文件中的“Host name”必须与Zabbix Web前端中显示的主机名相匹配,这里重点提醒必须要保持一致。
单击主机配置页面下方的“Update”按钮保存上述的更改操作。
单击“Configuration”→“Hosts”选项,然后单击页面右上角的“Create host”按钮。
接下来,填写如图3.6所示的内容创建主机。
图3.6
另外,添加主动模式的监控模板,模板名为“Linux by Zabbix agent active”,如图3.7所示。
图3.7
需要注意的是,对于主动模式来说,ZBX可用性图标不会变为绿色。因为使用被动模式,Zabbix server会确切地知道该Zabbix agent有响应,但对于主动模式来说,Zabbix server只是接收数据,无法判断这些数据是否真的来自所监控的Zabbix agent,所以在日常使用时,会保留其中一个被动模式的监控项,例如把agent.ping这个监控项配置为被动模式,把其他监控项配置为主动模式。
在配置完毕后,单击“Monitoring”→“Hosts”选项查看最新数据来验证配置是否正确。
提示:正如你所看到的那样,Zabbix agent可以在被动和主动两种模式下同时运行,所以在创建自己的Zabbix agent模板时,可以选择哪些监控项使用主动模式,哪些监控项使用被动模式。
3.1.3 工作原理
按照上述步骤操作已经配置了Zabbix agent 2,并知道了如何对其进行配置。接下来介绍在不同的模式下,Zabbix agent是如何工作的。
1. 被动模式
被动模式的工作原理如下:Zabbix agent从被监控主机上收集监控数据,每当被监控主机上的监控项按照采集间隔到达采集时间时,Zabbix server都会向Zabbix agent请求监控数据是什么,也可以认为Zabbix agent在被动等待着Zabbix server采集数据(如图3.8所示)。
图3.8
如果想时刻知道Zabbix server或Zabbix proxy是否与Zabbix agent一直保持正常的连接状态,那么我觉得使用被动模式非常适合。
2. 主动模式
主动模式的工作原理如下:当Zabbix agent上的监控项到采集时间时,Zabbix agent就会主动将该监控值发送到Zabbix server(如图3.9所示)。
图3.9
当网络环境中使用了防火墙,Zabbix server不能直接访问Zabbix agent时,主动模式就比较适合这种场景,只需要在防火墙中配置允许访问Zabbix server的10051端口。
另外,使用主动模式的Zabbix agent的效率会更高,因为Zabbix server的大部分采集性能负载都在Zabbix agent上。在大规模监控实施场景下,配置主动模式可以分摊Zabbix server大部分采集性能负载。
综上所述,Zabbix监控可以同时使用被动和主动两种模式,从而能够更灵活地配置每种类型的监控。Zabbix agent的整个工作原理如图3.10所示。
图3.10
Zabbix可以通过两种模式进行合并监控,但是也有一些特殊情况,这里需要注意一下,有些监控项必须使用主动模式。例如,使用Zabbix agent进行日志文件的监控,就必须使用主动模式来完成。
如果你有兴趣了解有关Zabbix agent的更多监控内容,可以读一下 Alexey Petrov的博文“Magic of New Zabbix Agent”。
第1章 Zabbix安装和部署 | 1
1.1 安装Zabbix server | 2
1.2 安装Zabbix前端 | 7
1.3 Zabbix server高可用 | 13
1.4 Zabbix前端 | 28
1.5 Zabbix导航菜单 | 37
第2章 用户管理 | 46
2.1 创建用户组 | 46
2.2 配置用户角色 | 52
2.3 创建第一个账号 | 59
第3章 监控实战 | 66
3.1 Zabbix agent 2 | 67
3.2 SNMP agent | 76
3.3 Simple check | 82
3.4 Zabbix trapper | 88
3.5 Calculated | 91
3.6 Dependent items | 94
3.7 External check | 99
3.8 JMX agent | 101
3.9 Database monitor | 105
3.10 HTTP agent | 109
3.11 Zabbix preprocessing | 112
第4章 触发器告警 | 120
4.1 触发器配置 | 120
4.2 新旧触发器表达式的语法 | 130
4.3 高级的触发器用法 | 132
4.4 配置告警 | 143
4.5 配置有效告警 | 152
4.6 自定义告警级别的名称 | 157
第5章 监控模板 | 160
5.1 创建监控模板 | 160
5.2 配置模板级标签 | 164
5.3 创建模板监控项 | 166
5.4 创建模板触发器 | 170
5.5 创建宏 | 173
5.6 创建LLD模板 | 178
5.7 创建嵌套模板 | 188
第6章 数据可视化 | 192
6.1 创建图形 | 192
6.2 创建拓扑图 | 200
6.3 创建仪表盘 | 209
6.4 创建资产管理 | 219
6.5 创建地理地图 | 222
6.6 创建报告 | 227
6.7 创建定时发送报告 | 231
6.8 创建业务服务监控 | 236
第7章 Zabbix自动发现 | 253
7.1 Zabbix agent主机自动发现 | 253
7.2 Zabbix snmp主机自动发现 | 260
7.3 Zabbix agent主机自动注册 | 265
7.4 Windows性能计数器LLD | 271
7.5 Zabbix JMX LLD | 279
第8章 分布式监控 | 284
8.1 Zabbix proxy安装和部署 | 285
8.2 被动模式的Zabbix proxy | 288
8.3 主动模式的Zabbix proxy | 291
8.4 Zabbix proxy监控主机 | 294
8.5 Zabbix proxy自动发现 | 299
8.6 Zabbix proxy自监控 | 303
第9章 Zabbix与外部系统集成 | 310
9.1 Zabbix配置钉钉告警 | 310
9.2 Zabbix配置飞书告警 | 321
9.3 Zabbix实时监控数据导出 | 330
第10章 Zabbix API | 336
10.1 配置Zabbix API token | 336
10.2 使用Zabbix API token | 341
10.3 为Zabbix用户创建维护周期 | 347
第11章 Zabbix日常维护 | 354
11.1 Zabbix维护周期 | 355
11.2 Zabbix备份配置 | 358
11.3 升级PHP 7.2至PHP 7.4 | 362
11.4 升级旧版本的MariaDB至MariaDB 10.6 | 365
11.5 Zabbix版本升级 | 370
11.6 Zabbix性能维护 | 375
第12章 高级数据库管理 | 386
12.1 为Zabbix数据库配置MySQL表分区 | 386
12.2 使用PostgreSQL数据库的TimescaleDB | 396
12.3 配置Zabbix数据库安全连接 | 402
第13章 云监控 | 415
13.1 配置AWS云监控 | 416
13.2 配置Azure云监控 | 424
13.3 配置华为云监控 | 431
13.4 配置Docker监控 | 438
第14章 Zabbix 7.0介绍 | 443
14.1 新增功能介绍 | 443
14.2 前端模块开发介绍 | 455