【企业级监控】Zabbix自动发现+自动注册+主被动详细

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

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、查看检测到的数据
  • “检测”——>“主机”,找到主机,查看“最新数据”和“图形”
    在这里插入图片描述
    在这里插入图片描述

相关推荐

  1. Zabbix 企业分布式监控

    2024-07-16 21:30:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 21:30:03       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 21:30:03       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 21:30:03       42 阅读
  4. Python语言-面向对象

    2024-07-16 21:30:03       53 阅读

热门阅读

  1. ns3-gym入门(二):linear-mesh例子详解

    2024-07-16 21:30:03       11 阅读
  2. 数据结构与算法-09贪心算法&动态规划

    2024-07-16 21:30:03       13 阅读
  3. 访问者模式(大话设计模式)C/C++版本

    2024-07-16 21:30:03       15 阅读
  4. Logstash常用的filter四大插件

    2024-07-16 21:30:03       16 阅读
  5. RTOS中断与任务的同步

    2024-07-16 21:30:03       14 阅读
  6. 哈希表(知识点+leetcode)以及字符串哈希

    2024-07-16 21:30:03       18 阅读
  7. 运维检查:mysql表自增id是否快要用完

    2024-07-16 21:30:03       17 阅读
  8. C++设计模式(装饰器模式)

    2024-07-16 21:30:03       13 阅读
  9. 哪些点权衡素材优秀与否

    2024-07-16 21:30:03       15 阅读
  10. 前端反显后端图片、上传预览图片

    2024-07-16 21:30:03       16 阅读
  11. 使用AIOHTTP模块:提高网络请求效率

    2024-07-16 21:30:03       19 阅读
  12. Redis--过期删除策略和数据淘汰策略

    2024-07-16 21:30:03       19 阅读
  13. actual combat 35 —— es

    2024-07-16 21:30:03       19 阅读