什么是 Zabbix
Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 持续积极开发和支持。
Zabbix 是一款企业级开源分布式监控解决方案。
Zabbix 是一款用于监控网络中众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等健康状况和完整性的软件。 Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警。 这使得能够快速响应服务器问题。 Zabbix 基于存储的数据提供出色的报告和数据可视化功能。 这使 Zabbix 非常适合容量规划。
Zabbix 同时支持轮询和主动上报。 所有 Zabbix 报告和统计信息,以及配置参数,都可通过基于 Web 的前端访问。 基于 Web 的前端可确保您能够从任何位置评估网络状态和服务器健康状况。 如果配置得当,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。 这对于只有少量服务器的小型组织以及拥有大量服务器的大型公司同样适用。
Zabbix 是免费的。 Zabbix 采用 AGPL-3.0 许可证编写和发布。 这意味着其源代码可自由分发,并向公众开放。
商业支持 由 Zabbix 公司及其全球合作伙伴提供。
了解更多关于 Zabbix 功能 的信息。
Zabbix 的用户
世界各地不同规模的许多组织都将 Zabbix 作为主要的监控平台。
架构
Zabbix 由多个主要软件组件组成。 它们的职责如下所述。
服务器
Zabbix server 是 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
- 基于 PHP 的 web 前端
- 可从任何地方访问
- 你可以通过点击完成操作
- 审计日志
- Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成及其他用途。
- 安全的用户身份验证
- 可将某些用户限制在特定视图中
- 部署在监控目标上
- 可部署在 Linux 和 Windows 上
- 使用 C 语言编写,具有高性能和较小的内存占用
- 易于移植
- 通过使用 Zabbix proxy 轻松实现远程监控
术语表
在本节中,你可以了解 Zabbix 中常用的一些术语含义。
- 任何物理或虚拟设备、应用程序、服务,或任何其他在逻辑上相关的受监控参数集合。
- 主机的逻辑分组。 在为不同用户组分配主机访问权限时会使用主机组。
- 你希望从主机接收的特定数据片段,即数据指标。
- 在保存到数据库之前,对接收到的指标值进行转换。
- 定义问题阈值的逻辑表达式,用于“评估”监控项中接收到的数据。
当接收到的数据高于阈值时,触发器会从 Ok 变为 Problem 状态。 当接收到的数据低于阈值时,触发器保持在/返回到 Ok 状态。
- 一组可应用于一个或多个主机的实体(监控项、触发器、图形、低级别发现规则、Web 场景)。
模板的作用是加快在主机上部署监控任务的速度;同时也便于对监控任务进行批量修改。 模板会直接关联到单个主机。
- 模板的逻辑分组。 在为不同用户组分配模板访问权限时会使用模板组。
- 值得关注的单个事件,例如触发器状态变更,或发生发现/agent 自动注册。
- 事件的预定义标记。 它可用于事件关联、权限细分等。
- 一种灵活且精确地将问题与其解决方案进行关联的方法。
例如,你可以定义由某个触发器报告的问题可由另一个触发器解决,而后者甚至可以使用不同的数据采集方法。
- 处于 "Problem" 状态的触发器。
- Zabbix 提供的问题管理选项,例如添加评论、确认、更改严重性或手动关闭。
- 对事件作出反应的预定义方式。
动作由操作(例如发送通知)和条件(何时执行该操作)组成。
- 在动作中执行操作的自定义场景;一系列发送通知/执行远程命令的步骤。
- 一个变量占位符,会根据上下文解析为特定值。
- 传递通知的方式;传递渠道。
- 通过所选媒介渠道发送给用户的某个事件消息。
- 在满足某些条件时,自动在受监控主机上执行的预定义命令。
- 用于检查网站可用性的一个或多个 HTTP 请求。
- Zabbix 提供的 Web 界面。
- Web 界面中可自定义的部分,用于以称为小组件的可视化单元显示摘要和重要信息的可视化内容。
- 显示某类和某来源信息的可视化单元(摘要、地图、图形、时钟等),用于仪表板中。
- Zabbix API 允许你使用 JSON RPC 协议创建、更新和获取 Zabbix 对象(如主机、监控项、图形等),或执行其他任何自定义任务。
- Zabbix 软件的核心进程,负责执行监控、与 Zabbix proxy 和 agent 交互、计算触发器、发送通知;也是数据的中心存储库。
- 可代表 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 实体的 原型 - 图形原型、主机原型、主机组原型。