Zabbix监控自动化
资源列表
操作系统 | 配置 | 主机名 | IP | 所需软件 |
---|---|---|---|---|
CentOS 7.9 | 2C4G | zbx | 192.168.93.101 | zabbix server 6.4.8 |
CentOS 7.9 | 2C4G | server01 | 192.168.93.102 | zabbix agent 6.4.8 |
CentOS 7.9 | 2C4G | server02 | 192.168.93.103 | zabbix agent 6.4.8 |
基础环境
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
前言
- 监控运维工作中所占的比例为30%左右,监控做的好,会省很多事情,让工作能有序地进行。理想的监控应该是自动化得,只需要配置规则,即可完成所有得事情,比如主机的自动添加和注册、模板的自动添加、分组的自动添加、出现故障后能自动处理和自动发送警告信息等。Zabbix就是具有以上自动化功能的一款监控软件,那么它是如何实现监控自动化的功能呢?
一、网络自动发现
Zabbix的网络自动发现是一个非常强大的功能,利用该功能可以完成以下工作。
- 加快部署速度
- 简化管理
- 在快速变化的环境中避免过度管理
网络自动发现基于以下信息
- IP地址范围
- 可用外部服务(FTP、SSH、WEB、POP3、IMAP、TCP等)
- 来自Zabbix agent的信息(仅支持为加密模式)
- 来自SNMP agent的信息
在进行网络自动发现的过程中,涉及到的主要工作流程有Discovery(发现)和Action(工作),虽然网络自动发现能够帮助运维人员实现自动化的管理任务,但是网络自动发现无法实现网络拓扑的自动发现。
整个网络发现的流程分为4个阶段:
- 网络发现:网络发现模块每次检测到服务和主机(IP)都会生成一个发现事件。
- 执行工作:所有工作都是居于发现事件的,基于事件的网络发现工作,可以根据设备类型、IP地址、状态、运行事件等进行配置。
- 创建主机:我们可以在执行工作过程中选择添加主机操作,包括添加主机至主机组、将主机链接到模板等。
- 移除主机:从Zabbix2.4.0开始,如果已发现的实体不在自动发现规则的IP范围内,那么由网络发现规则创建的主机将会被自动删除。
1.1、客户机配置 Zabbix Agent
- 所有客户端安装此软件包
rpm -ivh pcre2-10.23-2.el7.x86_64.rpm
rpm -ivh zabbix-agent-6.4.8-release2.el7.x86_64.rpm
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.93.101
ServerActive=192.168.93.101
Hostname=server01
[root@server01 ~]# systemctl start zabbix-agent.service
[root@server01 ~]# systemctl enable zabbix-agent.service
1.2、创建并网络发现规则
- 数据采集——>自动发现,点击创建发现规则后,按照下图添加自动发现规则
注意:自动发现规则的每次操作都会产生事件,如果配置了1000个IP,那么每次都会产生1000个事件,需要注意数据库的资源消耗,生产环境中不宜扫描太频繁。
该页面公有9项设置,含义如下:
(1)名称:网络发现规则的名称(可以自定义)
(2)、有agent代理程序自动发现:此处有两个选择,如果选择No proxy,那么这条规则将会由Zabbix server发起;如果选择某个Zabbix proxy,那么此条规则将由指定的这台Zabbix proxy执行。
(3)IP范围:网络探测的扫描范围。可以书写的格式有四种
- 单个IP地址:192.168.93.101
- IP地址范围:192.168.93.100-254
- IP子网掩码范围:192.168.93.0/24
- 列表:192.168.93.101、192.168.93.102、192.168.4.0/24
(4)更新间隔:定义Zabbix执行规则的频率
(5)检查:自动发现的网络扫描方式,参数设置如下
(6)设备唯一性准则:设备唯一标识,自动发现的清单将会以前面配置的某一项作为唯一性标识,防止重复发现。
(7)主机名称
(8)可见的名称
(9)已启用
1.3、创建自动发现工作
- 告警——>动作——>发现动作,点击“创建动作”按钮,填写动作和操作
1.3.1、填写动作参数
- 此选项中需要设置工作名称和动作条件
- 在动作选项卡中,主要与前面创建的网络发现规则做关联。在条件中添加自动发现规则,选择创建好的发现规则即可。设置的参数如下:
1.3.2、设置发现动作的操作
- 在操作选项卡中添加发现后的动作,这里主要的动作有添加主机、添加主机到群组、与模板关联。其中,链接的模板用Linux by Zabbix agent,如果需要其他模板,可自行添加。
1.4、验证
1.4.1、查看自动发现状态
- 点击“监测”选项,再点击“自动发现”界面,可以看到已经发现的设备。
1.4.2、查看监控到的主机
- 点击“数据采集”选项,再点击“主机”界面。可以看到Zabbix已经按照模板对发现的主机执行监控
1.5、备注1
如果在自动发现规则中设置的可见名称为“Zabbix 客户端”“system.uname”,最终在主机名称中看到的是:
Linux server01 3.10.0-1160.el7.x86_64 _1 SMP Mon Oct 19 16_18_59 UTC 2020 x86_64
其中,server01使用hostname命令为该主机设置的主机名。
1.6、备注2
- 如果希望主机名称用hostname命令设置的主机名(不是IP地址),修改如下配置文件内容
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
#Hostname=server01
HostnameItem=system.hostname # 190行取消注释
[root@server01 ~]# systemctl restart zabbix-agent.service
修改自动发现规则如下:
注意:在此处如果将可见名称设置为“主机名称”,在主机名称中,会显示为ip地址的形式。
1.7、验证
- 此时加入zabbix的主机名字为主机名
二、添加自动注册
- 自动发现是实现自动添加agent端的一种办法,大大减轻了运维人员的劳动量,但是,如果我们不知道agent端的地址等信息,自动发现就无法实现了,因为要设置一个IP地址范围,网络自动发现需要扫描这个IP地址端。
- 自动注册是指Agent主动且自动的向Server发起注册请求,与自动发现的功能一样,但是自动注册适用于特定的场景,如果某个条件未知(如agent的ip地址段,操作系统版本等,自动发下你需要知道这些信息),此时就无法适用于自动发现了;但是zabbix server的地址是已知的,所以可以让agnet主动发起请求,实现主机自动添加到zabbix中。
- zabbix的自动注册对于agent是主动模式,Zabbix agnet会主动上报自己的信息,发给zabbix server
- 但是在agent2的版本中,对应的agent2的被动模式,缺点是可能因为配置文件配置错误或者网络不通等原因导致Zabbix agent2可能找不到Zabbix server
2.1、删除前面创建的自动发现
- 删除“告警”——>“动作”中刚才创建的发现动作
- 删除“数据采集”——>“自动发现”中刚才的创建自动发现规则
- 删除“数据采集”——>“主机”中自动发现的主机
2.2、客户端修改Agent
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.93.101
ServerActive=192.168.93.101
Hostname=server01
[root@server01 ~]# systemctl restart zabbix-agent.service
# 备注
自动注册属于agent端的主动模式的功能,所以要设置ServerActive参数
可选参数:
HostnameItem=system.hostname:获取主机名的Key,当Hostname参数设置时,此参数无效
HostMetadata=Linux Linux_host:主机元数据标识
HostMetadataItem=system.uname:获取主机内核名称的Key,当HostMetadata设置时,此参数无效
2.3、在Web管理界面创建自动发现注册动作
告警——>动作——>自动注册动作,创建动作。
然后点击创建动作,填写名称、触发条件和操作。
2.4、设置自动注册操作
- 在操作选项卡中添加自动注册的动作,设置的内容和自动发现里面设置的基本一致,这里主要的动作有添加主机、添加到主机群组、与模板关联。其中,链接的模板用Linux by Zabbix agent,如果需要其他模板,可自行添加。
2.5、验证
- 数据采集——>主机
三、主被动模式
3.1、主被动模式介绍
Agent程序有两种工作模式:主动模式和被动模式
我们知道获取数据的方式有两种,一种是get,一种是push;在zabbix中描述主动监控和被动监控都是站在agent的一方描述的;我们把agent主动将数据发送给zabbix server这种方式采集数据,叫做主动监控;把zabbix server向zabbix agent获取数据的方式叫做被动监控,这种方式只有zabbix server周期性的请求zabbix agent,zabbix agent才会响应对应的数据给zabbix server,如果zabbix server不请求,则zabbix agent不会发送数据给zabbix server;而主动监控不管zabbix server请不请求agent,agent它都会以指定事件频率向server推送数据;默认zabbix是使用的被动监控,这也意味着zabbix server要不停的去请求各zabbix agent去采集数据,否则就没有数据。
Zabbix主动模式示意图如下所示:
在被动模式下,zabbix-agent监听10050端口,等待zabbix-server服务器的10051端口的监控信息收集请求;
在主动模式下,zabbix-agent收集监控信息并主动将数据传递给zabbix-server所在服务器的10051端口。此时agent端不再监听10050端口
zabbix-agent默认工作在被动模式下
3.2、被动模式的缺点
在被动模式下是存在一些问题的,当服务端监控的主机到达一定数量之后,由Server端去收集数据(被动模式),Zabbix出现严重的性能问题,主要表现如下:
- 当被监控端到达一个量级的时候,Web操作很卡,容器出现502
- 图层断裂
- 开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会出现问题
所以下面主要往两个优化方式考虑:
- 添加proxy节点或者Node模式做分布式监控
- 调整Agentd为主动模式
3.3、主动模式的设置
3.3.1、删除前面创建的自动注册
删除“告警”——>“动作”中刚才创建的自动注册动作
删除“数据采集”——>“主机”中自动注册的主机
3.3.2、在被监控端调整Agent为主动模式
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
#Server=192.168.93.101 # 主动模式需要注释掉此行
StartAgents=0 # 为server端的连接开启的进程,0表示关闭被动模式
ServerActive=192.168.93.101 # 主动模式的IP地址
Hostname=server01 # 客户端hostname,不配置则使用主机名
[root@server01 ~]# systemctl restart zabbix-agent.service
- 查看zabbix agent进程,此时已经没有了agent进程(在主动模式下,agent不再监听10050的端口)
[root@server01 ~]# netstat -anpt | grep 10050
3.3.3、添加主机
模板选择带有active的(本次使用的模板为Linux by Zabbix active)
可以在监控中看到监控数据,选择监测——>主机——>图形
注意:刚添加的数据可能看的不明显,等几分钟就可以看到。
注意:在主动模式下,监控的主机的状态“ZBX”不会显示为绿色
3.3.4、查看主机添加结果
- “数据采集”——>“主机”,查看监控到的主机列表
3.3.5、查看检测到的数据
- “检测”——>“主机”,找到主机,查看“最新数据”和“图形”