编程

Zabbix 运维监控平台介绍

1776 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 的一个难点和重点。为了实现批量、自动化监控,通常会将具有相同特征的监控项汇总到模板中,然后在主机中直接引用即可,实现快速监控部署。