编程

Zabbix 运维监控平台介绍

941 2023-04-05 00:36:00

Zabbix是一个企业级的分布式开源监控解决方案。它能够监控各种服务器的健康性、网络的稳定性以及各种应用系统的可靠性。当监控出现异常时,Zabbix通过灵活的告警策略,可以为任何事件配置基于邮件、短信、微信等告警机制。而这所有的一切,都可以通过Zabbix提供的Web界面进行配置和操作,基于Web的前端页面还提供了出色的报告和数据可视化功能。这些功能和特性使运维人员可以非常轻松地搭建一套功能强大的运维监控管理平台。

1.Zabbix组件构成

从图中可以看,Zabbix主要有几个组件构成,分别介绍如下。

(1)Zabbix server

Zabbix server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。它主要负责接收客户端发送的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。

(2)Zabbix Database Storage

Zabbix Database Storage主要用于存储数据,所有配置信息和Zabbix收集到的数据都被存储在数据库中。常用的存储设备有MySQL、Oracle、SQLite等。(

(3)Zabbix Web界面

Zabbix Web界面是Zabbix提供的GUI接口,通常(但不一定)与Zabbix server运行在同一台物理机器上。

(4)Zabbix proxy代理服务器

Zabbix proxy代理服务器是一个可选组件,常用于分布监控环境中,代理server可以替Zabbix server收集性能和可用性数据,汇总后统一发往Zabbix server端。

(5)Zabbix agent监控代理

Zabbix agent部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发往Zabbix server端或Zabbix proxy端。

2.Zabbix服务进程

根据功能和用途,默认情况下Zabbix包含5个进程,分别是zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外还有一个zabbix_java_gateway是可选的功能,需要另外安装。下面分别介绍它们各自的作用。

(1)zabbix_agentd

zabbix_agentd是Zabbix agent监控代理端守护进程,此进程收集客户端数据,例如,CPU负载、内存、硬盘、网络使用情况等。

(2)zabbix_get

zabbix_get是Zabbix提供的一个工具,通常在Zabbix server或者Zabbix proxy端执行,用来获取远程客户端信息。这其实是Zabbix server去Zabbix agent端拉取数据的过程,此工具主要用来进行用户排错。例如,在Zabbix server端获取不到客户端的监控数据时,可以使用zabbix_get命令测试获取客户端数据来做故障排查。

(3)zabbix_sender

zabbix_sender也是Zabbix提供的一个工具,用于发送数据给Zabbix server或者Zabbix proxy。这其实是Zabbix agent端主动推送监控数据到Zabbix server端的过程,通常用于耗时比较长的检查或者有大量主机(千台以上)需要监控的场景。此时通过主动推送数据到Zabbix server,可以在很大程度上减轻Zabbix server的压力和负载。

(4)zabbix_proxy

zabbix_proxy是Zabbix proxy的代理守护进程。功能类似Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交或者被提交到Zabbix server上。

(5)zabbix_java_gateway

zabbix_java_gateway是Zabbix2.0之后引入的一个功能。顾名思义:Java网关,主要用来监控Java应用环境,类似zabbix_agentd进程。需要特别注意的是,它只能主动去推送数据,而不能等待Zabbix Server或者Zabbix Proxy来拉取数据。它的数据最终会给到Zabbix Server或者Zabbix Proxy上。

(6)zabbix_server

zabbix server是整个Zabbix系统的核心进程。其他进程zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到Zabbix server来统一进行处理。

3.Zabbix监控术语

在Zabbix监控系统中,有一些常用的术语,这些术语可能和其他监控系统的叫法不同,但含义相同,这里进行简单介绍。

(1)主机(host)

主机表示要监控的一台服务器或者网络设备,可以通过IP或主机名指定。

(2)主机组(host group)

主机组是主机的逻辑组。它包含主机和模板,但同一个主机组内的主机和模板没有任何直接的关联。主机组通常在给用户或用户组指派监控权限时使用。

(3)监控项(item)

监控项表示一个监控的具体对象,例如,监控服务器的CPU负载、磁盘空间等。item是Zabbix进行数据收集的核心,相对某个监控对象,每个item都由key来标识。

(4)触发器(trigger)

触发器其实就是一个监控阈值表达式,用于评估某监控对象接收到的数据是否在合理范围内。如果接收的数据大于阈值时,触发器状态将从OK转变为Problem;当接收到的数据低于阈值时,又转变为OK状态。

(5)应用集(Applications)

应用集是一组监控项组成的逻辑集合。

(6)动作(action)

动作指对于监控中出现的问题事先定义的处理方法,例如,发送通知、何时执行操作、执行的频率等。

(7)告警媒介类型(media)

告警媒介类型表示发送通知的手段,告警通知的途径,如Email、Jabber或者SMS等。

(8)模板(template)

模板是一组可以被应用到一个或多个主机上的实体集合。一个模板通常包含了应用集、监控项、触发器、图形、聚合图形、自动发现规则、Web场景等几个项目。模板可以直接链接到某个主机。模板是学习Zabbix的一个难点和重点。为了实现批量、自动化监控,通常会将具有相同特征的监控项汇总到模板中,然后在主机中直接引用即可,实现快速监控部署。