一、Zabbix是什么

Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。

Zabbix 是一个企业级的分布式开源监控方案。

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。

Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。

基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。

Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。

基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。

适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。

Zabbix是免费的。这意味着它的源代码都是免费发行的,可供公众任意使用。

 

二、 Zabbix功能点

Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。

数据收集

◾ 可用性和性能检查

◾ 支持SNMP(包括主动轮训和被动获取),IPMI,JMX,VMware监控

◾ 自定义检查

◾ 按照自定义的间隔收集需要的数据

◾ 通过server/proxy+agents来执行

灵活的阀值定义

◾ 您可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值

高度可配置化的告警

◾ 可根据递增机制,接收方和媒介类型自定义发送告警通知

◾ 使用宏变量可以使告警通知更加高效有用

◾ 自动相应动作可包含远程命令

实时图表绘制

◾ 使用内置图表绘制功能可以将监控项的内容实时绘制成图表

Web监控功能

◾ Zabbix可以追踪模拟鼠标在Web网站上的点击操作,来检查Web的功能和响应时间

丰富的可视化选项

◾ 支持创建自定义的图表,一个试图集中展现多个监控项

◾ 网络拓扑图

◾ 以仪表盘的样式自定义大屏展现和幻灯片轮询播放

◾ 报表

◾ 监控内容的高级(业务)视图

历史数据存储

◾ 数据库数据

◾ 可配置历史数据

◾ 内置数据管理机制(housekeeping)

配置简单

◾ 将被监控对象添加为主机

◾ 在数据库中获取主机进行监视

◾ 应用模板来监控设备

使用模板

◾ 在模板中分组检查

◾ 模板可以关联其他模板

网络发现

◾ 自动发现网络设备

◾ 监控代理自动注册

◾ 发现文件系统,网络接口和SNMP OID值

快捷的Web界面

◾ PHP Web前端

◾ 可从任何地方访问

◾ 你可以定制自己的操作方式

◾ 审核日志

Zabbix API

◾ Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的

权限管理系统

◾ 安全用户认证

◾ 特定用户可以限制访问特定的视图

功能强大,易于扩展的agent

◾ 部署在被监控对象上

◾ 支持Linux和Windows

二进制代码

◾ 为了性能和更少内存的占用,用C语言编写

◾ 便于移植

为复杂环境准备

◾ 使用Zabbix proxy代理服务器,使得远程监控更简单

 

三、Zabbix结构

Zabbix由几个主要的软件组件构成,这些组件的功能如下。

Server

Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。

数据库存储

所有配置信息和Zabbix收集到的数据都被存储在数据库中。

Web界面

为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。

如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。

Proxy代理服务器

Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。

Agent监控代理

Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

数据流

此外,了解Zabbix内部的数据流同样很重要。

监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。

告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。

因此,如果你想收到Server XCPU负载过高的告警,你必须:

1. 为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)。

2. 创建一个Trigger,设置成当CPU负载过高时会触发

3. Trigger被触发,发送告警邮件 虽然看起来有很多步骤,但是使用模板的话操作起来其实很简单,Zabbix这样的设计使得配置机制非常灵活易用。

 

四、Zabbix常用术语定义

主机 (host)

- 一台你想监控的网络设备,用IP或域名表示

主机组 (host group)

- 主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。

监控项 (item)

- 你想要接收的主机的特定数据,一个度量数据。

触发器 (trigger)

- 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式

当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。

事件 (event)

- 单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册

异常 (problem)

- 一个处在“异常”状态的触发器

动作 (action)

- 一个对事件做出反应的预定义的操作。

一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成

升级 (escalation)

- 一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列

媒介 (media)

- 发送告警通知的手段;告警通知的途径

通知 (notification)

- 利用已选择的媒体途径把跟事件相关的信息发送给用户

远程命令 (remote command)

- 一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令

模版 (template)

- 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合

模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。

应用 (application)

- 一组监控项组成的逻辑分组

web 场景 (web scenario)

- 利用一个或多个HTTP请求来检查网站的可用性

前端 (frontend)

- Zabbix提供的web界面

Zabbix API

- Zabbix API允许你使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务

Zabbix server

- Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等

Zabbix agent

- 一个部署在监控对象上的,能够主动监控本地资源和应用的程序

Zabbix proxy

- 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序