第二章 监控系统-zabbix快速入门

一、zabbix简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

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

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

Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。

zabbix由两部分组成,zabbix server和可选组件zabbix agent。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux、Solaris、HP-UX、AIX、Free-BSD,open BSD,OS X等平台上。

二、Zabbix工作架构

三、Zabbix特点

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

#2.数据收集
1.可用性和性能检查
2.支持SNMP(包括主动轮训和被动获取),IPMI,JMX,VMware监控
3.自定义检查
4.按照自定义的间隔收集需要的数据
5.通过server/proxy+agents来执行

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

#4.高度可配置化的告警
1.可根据递增机制,接收方和媒介类型自定义发送告警通知
2.使用宏变量可以使告警通知更加高效有用
3.自动相应动作可包含远程命令

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

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

#6.丰富的可视化选项
1.支持创建自定义的图表,一个试图集中展现多个监控项
2.网络拓扑图
3.以仪表盘的样式自定义大屏展现和幻灯片轮询播放
4.报表
5.监控内容的高级(业务)视图

#7.历史数据存储
1.数据库数据
2.可配置历史数据
3.内置数据管理机制(housekeeping)

#8.配置简单
1.将被监控对象添加为主机
2.在数据库中获取主机进行监视
3.应用模板来监控设备

#9.使用模板
1.在模板中分组检查
2.模板可以关联其他模板

#10.网络发现
1.自动发现网络设备
2.监控代理自动注册
3.发现文件系统,网络接口和SNMP OID值

#11.快捷的Web界面
1.PHP Web前端
2.可从任何地方访问
3.你可以定制自己的操作方式
4.审核日志

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

#13.权限管理系统
1.安全用户认证
2.特定用户可以限制访问特定的视图

#14.功能强大,易于扩展的agent
1.部署在被监控对象上
2.支持Linux和Windows

#15.二进制代码
1.为了性能和更少内存的占用,用C语言编写
2.便于移植

#16.为复杂环境准备
使用Zabbix proxy代理服务器,使得远程监控更简单

四、Zabbix组件功能

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

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

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

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

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

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

#7.数据流
此外,了解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进程构成

zabbix安装完成后会产生5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,zabbix_java_gateway是可选,这个需要另外安装。

1、zabbix_agentd:客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等
2、zabbix_get: zabbix工具,单独使用的命令,通常用于排错e
3、zabbix_sender. zabbix工具,用于发送数据给server或者proxy ,在脚本完成之后使用sender主动将数据提交e
4、zabbix_server: zabbix服务端守护进程,所有的数据都是被提交或主动提交到zabbix_server端
5、zabbix proxy: zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里
6、zabbix_java_gateway: zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server或者proxy'
Zabbix server是整个Zabbix软件的核心程序。

Server通过轮询和捕获数据,计算是否满足触发器条件,向用户发送通知。它是Zabbix监控代理和Proxy代理报告系统可用性和完整性数据的核心组件。Server自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务)。Sever是一个包含了被存储了所有配置,统计方面的和可操作数据的中央仓库,它是监控系统问题升级以至于激活警告管理器的Zabbix中的实体。

基本的Zabbix服务器起作用分三个不同的组件;他们是:Zabbix服务器,Web前端和数据库存储。

Zabbix的所有配置信息都存储在服务器和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个条目时,它会被添加到数据库的item表里。然后Zabbix服务器以每分钟一次的频率查询item表中的活动列表,接着将它存储在Zabbix服务器中的缓存里。这就是为什么Zabbix前端所做的任何更改最多需要花费两分钟才能显示在最新的数据段的原因。

七、Zabbix硬件需求

规模 平 CPU 内存 数据库 受监控的主机数量
小型 C ntOS V rtual Appliance M SQL InnoDB 1 0
中型 C ntOS 2 CPU cores/2GB M SQL InnoDB 5 0
大型 R dHat Enterprise Linux 4 CPU cores/8GB R ID10 MySQL InnoDB 或 PostgreSQL &g ;1000
极大型 Re Hat Enterprise Linux 8 PU cores/16GB Fa t RAID10 MySQL InnoDB 或 PostgreSQL &gt 10000
ps: 实际上,Zabbix 环境的配置非常依赖于监控项(主动)和更新间隔。 如果是进行大规模部署,强烈建议将数据库独立部署。
posted @ 2021-12-21 14:29  年少纵马且长歌  阅读(224)  评论(0编辑  收藏  举报