本文转载于:http://ghoulich.xninja.org/2016/07/11/analysis-of-zabbix-agent-work-mode/

ZABBIX

Zabbix探针工作模式解析

2016年7月11日 GHOULICH 1条评论

Zabbix探针(Agent)有两种工作模式:被动模式(Passive Check)和主动模式(Active Check)。本文将会详细介绍两种工作模式的工作原理和特点。

1. 实验环境

1.1 Zabbix Server
  • 操作系统:CentOS 6.6 x86_64

  • IP地址:10.24.17.207

  • 版本:2.4.8

  • 安装方法:参考《在CentOS上通过编译源码安装Zabbix服务端》安装

1.2 Zabbix Agent
  • 操作系统:Windows 7 SP1 64位

  • IP地址:10.24.16.133

  • 版本:2.4.4

  • 安装方法:参考《在Windows上安装Zabbix Agent》安装

1.3 Wireshark
  • 版本:2.0.4

2. 被动式探针

2.1 描述

如果探针工作在被动模式下,那么Zabbix服务器会定时对探针进行轮询,以监控项关键字为请求参数,探针收到请求后查询这个监控项关键字对应的监控数据,最后返回给服务器。被动式探针的监控项配置如下图所示(只摘选关键参数):

上图中的几个关键配置参数,如下所述:

  • Name:监控项的名称,必填参数。

  • Type:监控项的类型,Zabbix提供了很多种类型的监控项。如果是由被动式探针提供监控数据,那么此处应当选择“Zabbix agent”。

  • Key:监控项的关键字,相当于监控项在Zabbix系统内部的名称,例如:system.cpu.load[percpu,avg1]。

  • Host interface:受监控服务器的IP地址(或主机名)和端口号。

  • Update interval:监控数据的更新时间间隔,以秒为单位。Zabbix服务器会按照这个时间间隔,以监控项的关键字为参数,向探针请求查询相应的监控数据。

  • Flexible intervals:这个参数可用于配置在某个时间段按照某个指定的时间间隔更新监控数据。例如,可以配置为周一至周五的09:00至18:00,按照30秒的时间间隔更新监控数据。

2.2 配置参数

若要使用被动式探针,则需要在zabbix_agentd.conf配置文件(Windows平台上的探针配置文件为zabbix_agentd.win.conf)中指定如下几个配置参数:

  • Server 
    用于指定Zabbix服务器的主机名或IP地址。这个参数是一个以逗号分隔的IP地址(或主机名)列表,Zabbix探针只会接受列表中指定主机的入站连接。例如:

Server=10.24.17.207,10.24.16.232,10.24.16.87
  • ListenPort 
    用于指定Zabbix探针监听的端口号,默认值为10050,取值范围为1024-32767。例如:

ListenPort=10050
  • ListenIP 
    用于指定Zabbix探针监听的IP地址,这个参数适用于受监控主机具有多块网卡或多个IP地址的情况。这个参数是一个以逗号分隔的IP地址列表,如果探针需要从Zabbix服务器获取主动式的监控项列表,那么它会使用列表中的第一个IP地址。例如:

ListenIP=10.24.16.133
  • StartAgents 
    用于指定为了处理被动式监控项而预先建立的zabbix_agentd的进程实例的数量,默认值为3。如果将这个参数设置为0,那么便会禁用探针的被动模式,探针也就不会监听任何TCP端口了。例如:

StartAgents=3
2.3 工作流程

被动模式的工作流程如下图所示:

2.4 流程分析

当安装Zabbix探针时,也会同时安装一个名为zabbix_get的实用工具,可用于模拟被动式探针和Zabbix服务器之间的网络通信流程。zabbix_get的使用方法请参考《zabbix_get和zabbix_sender工具的使用方法》。流程分析的步骤如下所述:

  • Step-1 在Zabbix探针的主机上,确保探针配置文件(路径为C:\zabbix_agents\conf\zabbix_agentd.win.conf)的相关参数设置如下:

## 探针只接受Zabbix服务器和自身的入站连接Server=10.24.17.207,10.24.16.133## 探针监听10050端口ListenPort=10050## 探针监听自身的IP地址ListenIP=10.24.16.133## 开始建立3个被动式探针的进程StartAgents=3
  • Step-2 在Zabbix探针的主机上,启动Wireshark,选择上述配置文件中的监听IP所对应的网络适配器,并且将过滤器设置为tcp.port==10050,然后应用过滤器,最后启动抓包,具体步骤如下图所示: 

  • Step-3 在Zabbix服务器上,在bash中执行以下命令:

cd /usr/local/Zabbix/bin/./zabbix_get -s 10.24.16.133 -p 10050 -k "system.cpu.load[percpu,avg1]"
  • Step-4 在Zabbix探针的主机上,可以看到Wireshark捕获的数据包,如下图所示: 

由捕获的数据包可知,探针和服务器之间的通信流程如下所述:

  • 数据包183~185:探针和服务器之间三次握手,建立TCP连接;

  • 数据包186:服务器向探针发送前导字符ZBXD

  • 数据包193:探针确认已经收到前导字符;

  • 数据包194:服务器向探针发送监控项关键字system.cpu.load[percpu,avg1]

  • 数据包195:探针确认已经收到监控项关键字,并向服务器捎带发送前导字符ZBXD

  • 数据包196:探针向服务器发送监控数据0.075000,并且断开连接;

  • 数据包197:服务器确认已经收到前导字符;

  • 数据包198:服务器确认已经收到监控数据,并且断开连接;

  • 数据包199:探针确认断开连接。

3. 主动式探针

3.1 描述

如果探针工作在主动模式下,那么探针会定时向Zabbix服务器请求刷新主动式监控项列表,然后会主动地定时向Zabbix服务器发送主动式监控项列表对应的监控数据。主动式探针的监控项配置如下图所示(只摘选关键参数):

  • Name:监控项的名称,必填参数。

  • Type:监控项的类型,Zabbix提供了很多种类型的监控项。如果是由主动式探针提供监控数据,那么此处应当选择“Zabbix agent (active)”。

  • Key:监控项的关键字,相当于监控项在Zabbix系统内部的名称,例如:system.cpu.load[percpu,avg1]。

  • Update interval:监控数据的更新时间间隔,以秒为单位。当探针向Zabbix服务器请求主动式监控项列表时,也会取得这个参数。探针会根据这个时间间隔,主动向Zabbix服务器发送监控数据。

3.2 配置参数

若要使用主动式探针,则需要在zabbix_agentd.conf配置文件(Windows平台上的探针配置文件为zabbix_agentd.win.conf)中指定如下几个配置参数:

  • ServerActive 
    用于指定能够接收监控数据的Zabbix服务器。这个参数是一个以逗号分隔的的“IP:端口号”(或“主机名:端口号”)配对的列表。如果不指定端口号,则使用默认端口号10051。如果不指定这个参数,则禁用探针的主动模式。例如:

ServerActive=10.24.17.207:10051
  • Hostname 
    用于指定受监控主机的主机名,它是唯一的、区分大小写的。这个主机名必须和Zabbix前端页面上注册的受监控主机的主机名完全相同,否则探针将不能成功刷新自己的主动式监控项列表。例如:

Hostname=Windows-Agent
  • RefreshActiveChecks 
    用于指定探针的主动式监控项列表的刷新时间间隔,以秒为单位。例如:

RefreshActiveChecks=120
  • BufferSend 
    用于指定探针的缓冲发送时间,以秒为单位。监控数据在缓冲区中的保存时间不会超过这个参数指定的时间。例如:

BufferSend=5
  • BufferSize 
    用于指定缓冲区的大小,也就是监控数据的最大数量。如果缓冲区满了,那么探针便会向Zabbix服务器或代理发送所有已经收集的监控数据。例如:

BufferSize=100
3.2 工作流程

主动模式的工作流程如下图所示:

3.3 流程分析

当安装Zabbix探针时,也会同时安装一个名为zabbix_sender的实用工具,可用于模拟主动式探针和Zabbix服务器之间的网络通信流程。zabbix_sender的使用方法请参考《zabbix_get和zabbix_sender工具的使用方法》。流程分析的步骤如下所述:

  • Step-1 在Zabbix探针的主机上,确保探针配置文件(路径为C:\zabbix_agents\conf\zabbix_agentd.win.conf)的相关参数设置如下:

## 指定Zabbix服务器的IP和端口号ServerActive=10.24.17.207:10051## 指定探针的主机名Hostname=Windows-Agent## 刷新主动式监控项列表的时间间隔为120秒RefreshActiveChecks=120## 监控数据在缓冲区中的存活时间为5秒BufferSend=5## 缓冲区能够存放100条监控数据BufferSize=100
  • Step-2 在Zabbix的前端页面上,确保探针主机的主机名和配置文件中的Hostname参数相同,并且主机状态为Enabled,如下图所示: 

  • Step-3 在Zabbix的前端页面上,配置一个测试用的主动式监控项,各个配置参数如下图所示: 

  • Step-4 在Zabbix探针的主机上,启动Wireshark,选择上述配置文件中的监听IP所对应的网络适配器,并且将过滤器设置为tcp.port==10051,然后应用过滤器,最后启动抓包,具体步骤如下图所示: 

  • Step-5 在Zabbix探针的主机上,在CMD命令行中执行以下命令:

cd C:\zabbix_agents\bin\win64zabbix_sender -c C:\zabbix_agents\conf\zabbix_agentd.win.conf -k active.test.item -o 342.45
  • Step-6 在Zabbix的前端页面上,可以看到探针主动发送给Zabbix服务器的监控数据,如下图所示: 

  • Step-7 在Zabbix探针的主机上,可以在CMD命令行中看到zabbix_sender工具的输出信息,如下图所示: 

  • Step-8 在Zabbix探针的主机上,可以看到Wireshark捕获的数据包,如下图所示: 

由捕获的数据包可知,探针和服务器之间的通信流程如下所述:

  • 数据包77~79:探针和Zabbix服务器之间进行三次握手,建立TCP连接;

  • 数据包80:探针向Zabbix服务器发送前导字符ZBXD

  • 数据包81:Zabbix服务器确认收到探针发送的前导字符;

  • 数据包82:探针向Zabbix服务器发送json格式的监控数据,如下图所示: 

  • 数据包83:Zabbix服务器确认收到探针发送的监控数据;

  • 数据包84:Zabbix服务器向探针发送前导字符ZBXD

  • 数据包85:Zabbix服务器向探针发送JSON格式的响应消息,如下图所示: 

  • 数据包86:探针确认收到Zabbix服务器发送的响应消息;

  • 数据包87:探针请求断开TCP连接;

  • 数据包88:Zabbix服务器确认断开TCP连接。

4. 总结

  • 在被动模式中,监控数据是由Zabbix服务器定时向探针轮询的。因此,Zabbix服务器的性能压力较大,而探针的性能压力较小,这是探针最常用的工作模式。

  • 在主动模式中,监控数据是由探针主动发送给Zabbix服务器的,存在更新主动式监控项列表和发送监控数据的两次网络通信。因此,Zabbix服务器的性能压力较小,而探针的性能压力较大,并且会有额外的网络开销。

  • 由实际应用可知,探针可以同时工作在被动模式和主动模式中。

转载于:https://blog.51cto.com/as007012/1868977

Zabbix探针工作模式解析相关推荐

  1. 山特UPS电源三种工作模式解析

    最近一周陆续接到几个终端客户的售后电话.或是因为机房发生了停电事故,或是突然发现UPS电源红灯故障.因为大部分客户对UPS的工作模式很不了解,导致一次故障后UPS一直处于旁路工作模式,所以本人写来此文 ...

  2. 转载pll工作模式解析

    PLL共有四种工作模式,只有理解了这四种工作模式的特点,才能在设计中选用恰当的模式,完成自己设计的预期功能.这四种工作模式分别是普通模式(Normal Mode).零延迟缓冲模式(Zero Delay ...

  3. LVS负载均衡(LVS简介、三种工作模式、持久化连接)

    一.LVS简介及原理 1.LVS概述 LVS(Linux Virtual Server)即Linux虚拟服务器,在Linux平台运行.LVS被集成到Linux内核模块中被分为2个部分,用户态(ipvs ...

  4. Spring源码解析之:Spring Security启动细节和工作模式--转载

    原文地址:http://blog.csdn.net/bluishglc/article/details/12709557 Spring-Security的启动加载细节 Spring-Security的 ...

  5. Spring源码解析之:Spring Security启动细节和工作模式

    本文基于spring-security 3.1.1的源码进行分析.本文原文连接: http://blog.csdn.net/bluishglc/article/details/12709557 转载请 ...

  6. stm32IO口八种工作模式详细解析(附原理图)

    目录 工作模式介绍 常用IO口工作模式分析 实际应用 很多小伙伴们在初学stm32时都对stm32的IO口工作模式的原理和配置不了解,所以我整理发表此篇文章作为自己复习和他人参考资料.(注:该文章参考 ...

  7. Zabbix 主动与被动监控模式

    zabbix 主动与被动监控模式∶ 学习主动模式与被动模式工作原理,主动模式模板制作,然后添加主机并关联主动模式模板,然后验证主动模式监控数据和图形. 1∶被动模式 [无论是模式还是被动模式,都是站在 ...

  8. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701 相关资源下载 :  -- 三星 ARM Archit ...

  9. linux bin模式,binlog有哪些工作模式?Linux云计算运维入门

    Linux运维是现下较为火热的职业岗位之一.学习Linux技术的人们越来越多.Linux运维学习过程中,binlog有什么意义?binlog有哪些工作模式?都有哪些优缺点?binlog有哪些企业使用场 ...

最新文章

  1. 看腾讯运维应对“18岁照片全民怀旧”事件的方案,你一定不后悔!
  2. oracle统计一个班男生女生,一条sql统计一个班级的男女人数
  3. 网络里找不到工作组的计算机,win7系统看不到工作组计算机怎么办?win7系统看不到工作组计算机解决方法...
  4. 第一次接触AgilePoint业务流程及任务管理(BPM)
  5. python装饰器副作用_对Python 装饰器的理解心得
  6. SPOJ - QTREE2 Query on a tree II(LCA)
  7. 几个重要的RedHat Linux内核文件介绍 (1)
  8. 【机械仿真】基于matlab GUI 汽车悬架(钢板弹簧+减震器)设计【含Matlab源码 1631期】
  9. python 通信_深入浅出通信原理(Python代码版)
  10. 2017锤子科技发布会
  11. python合并视频和音频_Python批量合并处理B站视频
  12. kali liunx安装拼音输入法,必须成功,只需5步
  13. window7系统电脑屏幕亮度调节
  14. 人工智能在金融领域发展中,主要面临哪些风险?
  15. 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
  16. 适用于射频器件生产厂家的自动化测试软件
  17. 裸辞一时爽,断缴火葬场——细说社保的转移、续保与自缴
  18. 云服务器挂软件用哪个系统,云服务器挂软件用什么系统
  19. 光电直读远传水表特点和优势
  20. 前端开发:vue-router的使用以及两种模式的区别

热门文章

  1. 【历史上的今天】2 月 20 日:Python 代码首次发布;Facebook 收购 WhatsApp;DEC 创始人出生
  2. 千里眼摄像头支持对象存储吗_监控专用对象存储的畅想
  3. java浮动广告_[Java教程]JavaScript制作浮动广告_星空网
  4. 如何找到SQL server数据库的数据源地址
  5. 我的世界java版合成表_合成 - Minecraft Wiki,最详细的官方我的世界百科
  6. 万字解读区块链游戏行业:洞察游戏的未来
  7. Windows 服务
  8. 物理单位对应(如:电阻与电容相乘)
  9. 网站推广的途径有以下几种:
  10. python根据模板生成pdf文件_如何使用ReportLab从各种页面模板生成PDF?