Zabbix概念

Zabbix是什么

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

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。

Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。

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的负载的程序

Zabbix get

Zabbix get 是一种命令行应用,它可以用于与Zabbix agent进行通信,并从agent哪里获取所需的信息 该应用通常被用于Zabbix agent故障排除。

软件需要

数据库

MySQL

5.0.3或以上

使用MySQL作为Zabbix后端数据库。需要InnoDB引擎。

 

前端

Zabbix前端需要使用下列软件:

软件

版本

备注

Apache

1.3.12或以上

 

PHP

5.4.0或以上

 

PHP扩展包:

gd

2.0或以上

PHP GD扩展包必须支持PNG图片 (--with-png-dir), JPEG (--with-jpeg-dir) images and FreeType 2 (--with-freetype-dir).

bcmath

 

php-bcmath (--enable-bcmath)

ctype

 

php-ctype (--enable-ctype)

libXML

2.6.15或以上

php-xml or php5-dom,由分发者提供单独的部署包。

xmlreader

 

php-xmlreader,由分发者提供单独的部署包。

xmlwriter

 

php-xmlwriter,由分发者提供单独的部署包。

session

 

php-session,由分发者提供单独的部署包。

sockets

 

php-net-socket (--enable-sockets). 用户脚本支持所需要的组件。

mbstring

 

php-mbstring (--enable-mbstring)

gettext

 

php-gettext (--with-gettext). 用于翻译的运行。

ldap

 

php-ldap.只有当在前端使用LDAP认证时才需要。

ibm_db2

 

使用IBM DB2作为Zabbix后端数据库所需要的组件。

mysqli

 

使用MySQL作为Zabbix后端数据库所需要的组件。

oci8

 

使用Oracle作为Zabbix后端数据库所需要的组件。

pgsql

 

使用PostgreSQL作为Zabbix后端数据库所需要的组件。

sqlite3

 

使用SQLite作为Zabbix后端数据库所需要的组件。

如果需要使用默认DejaVu以外的字体, 可能会需要PHP的imagerotate功能。如果缺少这个功能,在监控(Monitoring) → 概要(Overview)的标题栏及其他位置,字体可能无法正常地显示。该功能只用在使用bundled GD编译PHP时才可用。在Debian和某些分发版本中,这个问题不存在。

 

计算Zabbix系统所需磁盘空间的计算公式:

范围

所需磁盘空间的计算公式 (单位:字节)

Zabbix配置文件

固定大小。一般10MB或更少。

历史(History)

days*(items/refresh rate)*24*3600*bytes

items : 监控项数量

days : 保留历史数据的天数

refresh rate : 监控项平均轮询时间

bytes : 保留单个值所需要占用的字节数,依赖于数据库引擎,一般大约90字节。

趋势(Trends)

days*(items/3600)*24*3600*bytes

items : 监控项数量

days : 保留趋势数据的天数

bytes : 保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,一般大约90字节。

事件(Events)

days*events*24*3600*bytes

events : 每秒事件数。最糟糕的情况下,每秒一(1)个事件。

days : 保留事件数据的天数

bytes : 保留单个事件所需要占用的字节数,依赖于数据库引擎,一般大约90字节。

因此,所需要的磁盘总空间按下列方法计算:

配置(Configuration) + 历史(History) + 趋势(Trends) + 事件(Events)

安装完Zabbix,磁盘空间不会立即被分配。数据库大小根据回收清理(housekeeper)设置,在某些时间点增长或停止增长。

时钟同步

对于Zabbix稳定运行而言,服务获得精确的系统时间是非常重要的。ntpd 是一个最流行的用于同步主机和其他服务器之间的时间的后台程序。对于所有运行Zabbix组件的系统,强烈建议这些系统的时间保持同步。

如果时间未同步,Zabbix将在建立数据连接之后,根据得到的客户端/服务器的时间戳,将获得值的时间戳转化为Zabbix server的时间,并且会根据客户端-服务器的时间差对获得值的时间戳进行调整。 为了保持简单,并且避免可能的并发问题出现,网络延迟会被忽略。因此,通过主动连接(active agent, active proxy, sender)获得的时间戳数据包含网络延迟,通过被动连接(passive proxy)获得的数据已经减去了网络延迟。所有其他检查服务器花费的时间和它们的时间戳不调整。

zabbix官网学习笔记

参考

[1]https://www.zabbix.com/documentation/3.4/zh/manual

你可能感兴趣的:(Zabbix)