文章目录
- 概念
- 基本概念
- 核心组件
- 基础架构
- proxy架构
- 工作模式
- 监控配置的相关概念
- zabbix常用命令
- 触发器
- 触发器表达式
- 发现(Discovery)
- 网络发现
- 发现
- 动作
- Active agent自动注册
- 自动发现(LLD)
- 网络发现、自动注册 与 自动发现的区别
- 分布式监控 - Proxy代理
- 参考
- 官方指南
- zabbix系列文章
- 自动发现与自动注册
- 代理
概念
基本概念
- zabbix支持的通讯方式
- agent:通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选。
- ssh/telnet:通过远程控制协议进行通讯,比如ssh或者telnet。
- SNMP:通过SNMP协议与被监控对象进行通讯,SNMP协议(Simple Network Management Protocol,即 简单网络管理协议)。通常,我们无法在路由器、交换机这种硬件上安装agent,但是大部分网络设备都支持这种协议,其实SNMP协议的工作方式也可以理解为master/agent的工作方式。(学习资料:SNMP介绍与netsnmp库使用)
- IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。
- JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展),常用于 监控JVM虚拟机时。
核心组件
- zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
- zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
- zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
- zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
- zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
基础架构
- 如图,我们将zabbix agent部署到被监控主机上,由agent采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端接收到的信息存储于zabbix的数据库中,我们把zabbix的数据库端称为zabbix database, 如果管理员需要查看各种监控信息,则需要zabbix的GUI,zabbix的GUI是一种Web GUI,我们称之为zabbix web。
proxy架构
- 当监控规模变得庞大时,zabbix支持分布式监控,我们可以把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,代理主机的作用就好比zabbix server,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理。这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象,当监控规模庞大到需要使用zabbix proxy时,zabbix的架构如下图,我们可以对比下图,理解上述描述。
工作模式
- 主动模式(Active):agent端会将采集完的数据主动发送给server端,即对于agent端来说是主动的。
- 被动模式(Passive):agent端不主动发送数据,而是等待server过来拉取数据。
- 总结:主动/被动模式都是对于agent端来说的,主动模式与被动模式可以同时存在,并不冲突。
- zabbix_sender:管理员可以在agent端使用该工具,测试是否能够向server端发送数据。
- zabbix_get:管理员可以在server端使用该工具,测试是否能够从agent端拉取数据。
监控配置的相关概念
- 抽象流程:我们想监控的指标在zabbix中称为“监控项”(item),如 磁盘使用率。如果想获取指标的值,必须使用 “键”(key, item key),key 类似对应命令的“命令别名”,通过 key,可以监控cpu、内存、硬盘灯常用指标信息,还可自定义key。
- 监控项(Item):
- 键(Key, item key):
- 应用集(Application):一组监控项
- 触发器(Triggers):一个条件表达式,通过触发器定义被监控项的阈值。
- 被触发为 “Problem”,未被触发(回到合理范围)为 “OK”。
- 事件(Events):当触发器的状态发生改变时,会产生对应的“事件”。zabbix中,有“触发器事件”等几种事件。
- 动作(Actions):当某个事件产生时,需要对应的处理措施。
zabbix常用命令
- zabbix_get:Server 查看 Agent数据
-
zabbix_get -s IP -k key
:zabbix_get -s 172.16.0.13 -k system.cpu.switches
- 启动/重启agent:systemctl restart zabbix-agent
- 查看启动情况:ps aux|grep zabbix
触发器
- Name:触发器名称
- Severity:严重程度
- Expression:触发器表达式
- PROBLEM event generation mode:表达式处于“Problem”状态时,重复地生成“问题事件”。
- Description:描述
- URL:为触发器添加url,方便快速定位到触发器所对应的监控项,我们可以把对应监控项的“最新数据”的图片链接填入url处。
触发器表达式
- Item(监控项):指定监控项。
- Function(功能):如何定义监测值,比如,最近T次监测或T分钟以内,磁盘剩余出现小于13%的情况,在功能栏则选择“最新的值<N”。
- Last of (T)(最后一个T):定义“最近T次内,磁盘剩余小于13%”
- Time shift(排班):定义“T分钟内,磁盘剩余小于13%”
- Result(阈值):设置阈值为13。
- 示例:011这台主机上的分区剩余率如果最近两次被检测到的值大于13,则触发。
发现(Discovery)
网络发现
- 通过网络发现配置,无需过多管理,也能在快速变化的环境中使用Zabbix。
- Zabbix网络发现基于:
- IP范围
- 可用的外部服务(FTP、SSH、WEB、POP3、IMAP、TCP、ICMP ping等)
- 来自Zabbix客户端的信息(仅 未加密模式)
- 来自snmp客户端的信息
- 注意:不支持 发现网络拓扑
- 官方指南:配置网络发现规则
- 参考资料:ICMP协议与自动化ping实现
网络发现的流程:发现 -> 事件 -> 动作。
发现
- Zabbix定期扫描“网络发现规则”中定义的IP范围,并为每条规则单独配置了检测的频率。
- 每次检测到服务和主机(IP)后,网络发现模块都会生成一个发现事件。
动作
- 基于事件的网络发现动作, 可以根据设备类型、IP地址、状态、运行时间/停机时间等进行配置,查看操作 and 条件页面。
Active agent自动注册
- Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。当以前未知的active agent要求检查时,会发生自动注册。
- 被动检查:Active agent自动注册还支持对被添加的主机进行被动检查的监控。当active agent要求检查时,前提是在配置文件中已定义好了“ListenIP”或“ListenPort”配置参数,这些参数将发送到服务器。
- 配置:在 配置文件中(Zabbix server- zabbix_agentd.conf) 指定服务器。
ServerActive=10.0.0.1
- Active agent自动注册动作:当服务器从agent收到自动注册请求时,它会调用一个 动作。必须要为agent自动注册 配置一个事件源为“自动注册”的动作。(设置 网络发现 不需要使active agents自动注册。)
- 自动注册 与 代理的潜在问题
- 唯一性:同一个主机 会被 多台 代理 处理吗?
自动发现(LLD)
- 自动发现 提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。例如,zabbix可以在你的机器上自动开始监控文件系统或者网络接口,而无需为每个文件系统或网络接口手动创建监控项。此外,可以配置zabbix根据定期执行发现后得到的实际结果,来移除不需要的监控项。
网络发现、自动注册 与 自动发现的区别
- 网络发现:用于发现主机?
- 自动注册:用于 使主机被监控?
- 自动发现:用于配置 监控项?
分布式监控 - Proxy代理
- Zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server。在一定程度上分担了zabbix server 的压力。
- 实现集中式和分布式监控的 最简单方法:所有agents和proxies报告给一个Zabbix server并且所有数据都集中收集时。
- 注意:
- zabbix proxy 数据库必须和 server 分开,否则数据会被破坏。
- zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server。
- zabbix proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警、无远程命令。
- 使用 agent active 模式,一定要记住在 agent 的配置文件参数 ServerActive 加上 proxy 的 IP 地址。
- zabbix proxy功能表:
参考
官方指南
- Zabbix 4.0 手册
- zabbix自带“键”说明手册
- 触发器函数手册
- 触发器表达式
zabbix系列文章
- 基础概念与安装
- zabbix概念
- zabbix安装
- 主机与监控项
- 在zabbix中添加主机
- 在zabbix中添加监控项
- 在zabbix中添加带有参数的监控项
- 报警
- 触发器、事件、动作 的概念
- 创建触发器
- 触发器语法详解
- 定义报警媒介
- 动作详解
- 触发报警
自动发现与自动注册
- 配置教程:
- zabbix监控之自动发现/自动注册
- zabbix的自动发现和自动注册以及api注册
代理
- 配置示例:zabbix之主动模式和proxy的主动模式