什么是 Zabbix
Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 积极开发并提供支持。
Zabbix 是一款企业级开源分布式监控解决方案。
Zabbix 是一款可监控网络中众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云环境等健康状态和完整性的软件。Zabbix 使用灵活的通知机制,使用户能够为几乎任何事件配置基于电子邮件的告警。这使得用户能够快速响应服务器问题。Zabbix 基于已存储的数据提供出色的报表和数据可视化功能,因此非常适合进行容量规划。
Zabbix 同时支持轮询和 trapper 模式。所有 Zabbix 报表和统计信息以及配置参数都通过基于 Web 的前端 进行访问。基于 Web 的前端 可确保无论身处何地,都可以评估网络状态和服务器健康状况。如果配置得当,Zabbix 可以在 IT 基础架构监控中发挥重要作用。无论是只有少量服务器的小型组织,还是拥有大量服务器的大型公司,都是如此。
Zabbix 可免费使用。Zabbix 在 AGPL-3.0 许可证下编写并发布。这意味着其源代码可自由分发并向公众开放。
可获得由 Zabbix 公司及其全球合作伙伴提供的商业支持。
了解更多关于 Zabbix 功能 的信息。
Zabbix 的用户
世界各地许多不同规模的组织都依赖 Zabbix 作为其主要监控平台。
架构
Zabbix 由几个主要的软件组件组成。它们的职责概述如下。
服务器
Zabbix 服务器 是中心组件,agent 向其报告可用性、完整性信息和统计数据。服务器是存储所有配置、统计和运行数据的中央存储库。
数据库存储
所有配置信息以及 Zabbix 收集的数据都存储在数据库中。
Web 界面
为了能够从任何地点、任何平台轻松访问 Zabbix,系统提供了基于 Web 的界面。该界面是 Zabbix 服务器的一部分,通常(但并非必须)运行在与服务器相同的物理机器上。
Proxy
Zabbix proxy 可以代表 Zabbix 服务器收集性能和可用性数据。proxy 是 Zabbix 部署中的一个可选组件;但是,它对于分担单个 Zabbix 服务器的负载可能非常有帮助。
Agent
Zabbix agent 部署在监控目标上,用于主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix 服务器。自 Zabbix 4.4 起,提供两种类型的 agent:Zabbix agent(轻量级,支持多种平台,使用 C 编写)和 Zabbix agent 2(额外灵活,可通过插件轻松扩展,使用 Go 编写)。
数据流
此外,重要的是退一步,从整体上看一下 Zabbix 中的数据流。要创建一个用于采集数据的监控项,您必须先创建一个主机。再看 Zabbix 的另一端,要创建触发器,您必须先有一个监控项。要创建动作,您必须先有一个触发器。因此,如果您希望在 Server X 上的 CPU 负载过高时收到告警,您必须先为 Server X 创建一个主机条目,然后创建一个用于监控其 CPU 的监控项,再创建一个在 CPU 过高时激活的触发器,最后创建一个向您发送电子邮件的动作。虽然这看起来步骤很多,但借助模板功能,实际上并不复杂。不过,正是由于这种设计,才可以实现非常灵活的配置。
功能特性
Zabbix 是一个高度集成的网络监控解决方案,在单一软件包中提供了丰富的功能。
- 可用性和性能检查
- 支持 SNMP(包括 trap 和轮询)、IPMI、JMX、VMware 监控
- 自定义检查
- 以自定义时间间隔采集所需数据
- 可由服务器/proxy 和 agent 执行
- 您可以定义非常灵活的问题阈值,即触发器,并引用后端数据库中的值
- 可根据升级计划、收件人、介质类型自定义通知发送
- 可使用宏变量使通知更具意义且更有帮助
- 自动操作包括远程命令
- 监控项会立即使用内置绘图功能生成图形
- Zabbix 可以沿着网站上模拟的鼠标点击路径进行检查,并验证功能和响应时间
- 能够创建自定义图形,将多个监控项组合到单一视图中
- 网络拓扑图
- 以仪表板风格总览展示的幻灯片
- 报表
- 对受监控资源的高级别(业务)视图
- 数据存储在数据库中
- 可配置的历史数据
- 内置 housekeeping 过程
- 将受监控设备添加为主机
- 主机一旦进入数据库,即会被纳入监控
- 将模板应用到受监控设备
- 在模板中对检查项进行分组
- 模板可以继承其他模板
- 自动发现网络设备
- agent 自动注册
- 发现文件系统、网络接口和 SNMP OID
- 基于 Web 的 PHP 前端
- 可从任何地方访问
- 您可以通过点击逐步浏览
- 审计日志
- Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成及其他用途。
- 安全的用户认证
- 可将某些用户限制为只能访问特定视图
- 部署在监控目标上
- 可部署在 Linux 和 Windows 上
- 使用 C 编写,以获得高性能和较小的内存占用
- 易于移植
- 通过使用 Zabbix proxy 轻松实现远程监控
术语表
在本节中,您可以了解 Zabbix 中一些常用术语的含义。
- 任何物理或虚拟设备、应用程序、服务,或任何其他在逻辑上相关的被监控参数集合。
- 主机的逻辑分组。
主机组用于在为不同用户组分配主机访问权限时使用。
- 您希望从主机接收的某一项特定数据,即一个数据指标。
- 在将接收到的指标值保存到数据库之前,对其进行转换。
- 定义问题阈值并用于“评估”监控项中接收到的数据的逻辑表达式。
当接收到的数据高于阈值时,触发器会从“Ok”变为“Problem”状态。当接收到的数据低于阈值时,触发器会保持在“Ok”状态或返回“Ok”状态。
- 一组可直接应用到一个或多个主机的实体(监控项、触发器、图形、低级别发现规则、Web 场景)。
模板的作用是加快在主机上部署监控任务的速度;同时也使对监控任务进行批量更改更加容易。模板直接链接到各个主机。
- 模板的逻辑分组。
模板组用于在为不同用户组分配模板访问权限时使用。
- 某个值得关注事项的一次发生,例如触发器状态发生变化,或发生了发现/agent 自动注册。
- 事件的预定义标记。 它可用于事件关联、权限细分等。
- 一种以灵活且精确的方式将问题与其解决过程相关联的方法。
例如,您可以定义:由一个触发器报告的问题可以由另一个触发器解决,而后者甚至可以使用不同的数据采集方法。
- 处于“Problem”状态的触发器。
- Zabbix 提供的问题管理选项,例如添加评论、确认、更改严重性或手动关闭。
- 对事件作出响应的预定义方式。
一个动作由操作(例如发送通知)和条件(操作在何时执行)组成。
- 在动作中执行操作的自定义场景;即发送通知/执行远程命令的顺序流程。
- 变量占位符,会根据上下文解析为特定值。
- 传递通知的方式;传递渠道。
- 通过所选媒介渠道发送给用户的、关于某个事件的消息。
- 在满足某些条件时,自动在被监控主机上执行的预定义命令。
- 用于检查网站可用性的一个或多个 HTTP 请求。
- Zabbix 提供的 Web 界面。
- Web 界面中可自定义的部分,用于以称为小组件的可视单元显示重要信息的摘要和可视化内容。
- 显示某种类型和来源信息的可视单元(摘要、地图、图形、时钟等),用于仪表板中。
- Zabbix API 允许您使用 JSON RPC 协议来创建、更新和获取 Zabbix 对象(如主机、监控项、图形等),或执行任何其他自定义任务。
- Zabbix 软件的核心进程,负责执行监控、与 Zabbix proxies 和 agents 交互、计算触发器、发送通知;同时也是数据的中央存储库。
- 可代表 Zabbix 服务器收集数据的进程,从而分担服务器的部分处理负载。
- 部署在监控目标上的进程,用于主动监控本地资源和应用程序。
- 新一代 Zabbix agent,用于主动监控本地资源和应用程序,并允许使用自定义插件进行监控。
由于 Zabbix agent 2 与 Zabbix agent 共享大量功能,
因此在文档中,如果功能行为相同,“Zabbix agent”一词同时指代二者——Zabbix agent 和 Zabbix agent 2。只有在功能存在差异时,才会特别指明 Zabbix agent 2。
- 支持 Zabbix 各组件(服务器、proxy、agent、zabbix_sender 和 zabbix_get 工具)之间使用传输层安全(TLS)协议进行加密通信。
- 一种自动化过程,其中 Zabbix agent 自身会被注册为主机 并开始接受监控。
- 对网络设备的自动发现。
- 自动发现特定设备上的低级别实体(例如文件系统、网络接口等)。*
- 用于自动发现设备上低级别实体的一组定义。
- 带有某些参数变量、可用于低级别发现的指标。 在低级别发现之后,这些变量会自动替换为实际发现的参数,该指标也会自动开始采集数据。
- 带有某些参数变量、可用于低级别发现的触发器。 在低级别发现之后,这些变量会自动替换为实际发现的参数,该触发器也会自动开始评估数据。
在低级别发现中,还会使用其他一些 Zabbix 实体的原型——图形原型、主机原型、主机组原型。