Zabbix功能概述及架构介绍(理论篇)

1、Zabbix的功能概述

Zabbix 官网:https://www.zabbix.com

1.1 zabbix是什么

Alexei Vladishev创建了Zabbix项目,当前处于活跃的开发状态,Zabbix SIA提供支持。

Zabbix是一个企业级的、开源的、分布式的监控套件。

Zabbix可以对网络和服务进行监控。 Zabbix利用灵活的告警机制,可实现微信、短信和邮件的自动报警。Zabbix利用存储的监控数据提供监控报告及实现图形化显示。

Zabbix支持polling和trapping两种方式。所有的Zabbix报告都可以通过配置参数在WEB界面进行访问。你可以通过Web界面实时查看网络和服务的监控状况。 不管你是小型组织还是大规模的公司,Zabbix都可以通过不通的配置来扮演监控你的IT基础框架的角色。

Zabbix是零成本的,因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的。

同时,Zabbix公司也提供商业化的技术支持。


1.2 zabbix特性

Zabbix是一个高度集成的网络监控套件,通过一个软件包即可提供如下特性

  • 可用性及性能检测

  • 支持SNMP(trapping及polling)、IPMI、JMX监控

  • 自定义检测

  • 自定义间隔收集收据

  • server/proxy/agents实现分布监控环境

灵活的阀值定义

  • 允许灵活地自定义故障阀值,Zabbix中称为触发器(trigger), 存储在后端数据库中

高级告警配置

  • 可以自定义告警升级(escalation)、接收者及告警方式

  • 告警信息可以配置并允许使用宏(macro)变量

  • 通过远程命令实行自动化动作(action)

实时绘图

  • 通过内置的绘图引擎实现监控数据实时绘图

扩展的图形化显示

  • 允许自定义创建多监控项视图

  • 网络拓扑(network maps)

  • 自定义的面板(screen)和slide shows,并允许在dashboard页面显示

  • 报告

  • 高等级(商业)监控资源

历史数据存储

  • 数据存储在数据库中

  • 历史数据可配置

  • 内置数据清理机制

配置简单

  • 主机通过添加监控设备方式添加

  • 一次配置,终生监控(除非调整或删除)

  • 监控设备允许使用模板

模板使用

  • 模板中可以添加组监控

  • 模板允许继承

网络自动发现

  • 自动发现网络设备

  • agent自动注册

  • 自动发现文件系统、网卡设备、SNMP OID等

快速的web接口

  • web前端采用php编写

  • 访问无障碍

  • 你想怎么做就能做么做

  • 审计日志

Zabbix API

  • Zabbix API提供程序级别的访问接口,第三方程序可以很快接入

权限系统

  • 安全的权限认证

  • 用户可以限制允许维护的列表

全特性、agent易扩展

  • 在监控目标上部署

  • 支持Linux及Windows

二进制守护进程

  • C开发,高性能,低内存消耗

  • 易移植

具备应对复杂环境情况

  • 通过Zabbix proxy可以非常容易的创建远程监控

1.3 Zabbix功能

监控拓扑图说明:

(1)可以通过微信、短信、邮件实现自动报警机制

(2)可以通过Web页面进行配置,监控状态查看

(3)可以通过SNMP协议实现对打印机、路由器、交换机的设备的监控

     通过在植入agent的方式对服务器主机进行监控

     通过ping或者是port检查的方式实现IP和PORT的监控

zabbix.png

1.4 可实现大多数系统的监控,包括windows、Linux、unix、Solaris、Mac等等

对主机可监控项包括:

CPU:CPU负载,CPU使用率

Memory:内存使用率,可交换内存/虚拟内存使用率

Network:网络传输、网络故障、丢包

Disk:磁盘使用率,磁盘I/O

Service:进程监控、界面服务、TCP端口连接,响应时间、DNS监控、NTP监控

Log:日志监控,文本日志,事件日志

File:文件监控

Other:性能计数器(仅限于Windows系统)


1.5 自定义报警机制:

如果故障在10分钟没有被解决,可以短信或邮件通知系统管理员

如果故障在15分钟没有被解决,可以短信或邮件通知运维人员

如果故障在30分钟没有被解决,可以短信或邮件通知经理

2、zabbix程序架构


Zabbix各组件的说明:技术分享图片

Zabbix Server

Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database

Zabbix database

所有的Zabbix数据均存储在数据库中

Web GUI

为了更简单的无障碍的访问Zabbix, 所以提供了web接口。该接口作为Zabbix Server的一部分,通常和server运行在同一台主机上

注意:如果采用SQLite作为数据库,web接口和Zabbix Server必须运行在同一台主机上

Proxy

Zabbix Proxy能够代替Zabbix Server进行性能及可用性数据采集。Proxy是Zabbix部署的可选组件。 如果想分担单一Zabbix Server负载,推荐使用proxy。

Agent

Zabbix agents 部署在目标监控机上并监控本地资源和应用,将收集数据汇报给Zabbix Server


监控流程:

通过zabbix监控数据流,并采取相应的措施。

首先要创建一个host,再创建一个item来搜集数据

通过item来创建触发器(trigger)

通过触发器(trigger)来创建一个动作(action)

例如:如果你想监控一个服务器的CPU负载状况,你首先为该服务器创建一个主机条目,其次是创建一个item来监控服务器的CPU状况,并创建相应的触发机制,当cpu负载达到某个阀值,触发操作,该操作包括执行设定的动作和发送邮件报警。

可以将这些操作设置成一个模板,要监控某台主机的时候,直接套用模板即可。


3.Zabbix组件

技术分享图片
zabbix由以下几个组件部分构成:
1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;
注:zabbix node也是 zabbix server的一种 。

4.zabbix进程
技术分享图片
默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。
  • zabbix_agentd

客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
  • zabbix_get

         zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
  • zabbix_sender

zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
  • zabbix_server

zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server
备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
  • zabbix_proxy

zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。
  • zabbix_java_gateway

zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。
  
5.Zabbix常见相关术语
技术分享图片
host(主机):要监控的网络设备,可由IP或DNS名称指定
host group(主机组):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用
item(监控项):一个特定监控指标的相关数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都有"key"进行标识
trigger(触发器):一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阀值;接受到的数据大于阀值是,触发器状态将从OK转变为Problem,当数据量再次回归到合理范围时,其状态将从Problem转换回OK
event(事件):即发生的一个值得关注的事件,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等
action(动作):指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)
escalation(报警升级):发送警报或执行远程命令的自定义方案,如每隔5min发送一次警报,共发送5次等
media(媒介):发送通知的手段和通道,如Email、Jabber或SMS
notification(通知):通过选定的媒介向用户发送的有关某事件的信息
remote command(远程命令):预定义的命令,可在被监控主机处于某个特定条件下时自动执行
template(模板):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机
application(应用):一组item的集合
web scennaro(web场景):用于检测web站点可用性的一个或多个http请求
frontend(前端):zabbix的web接口
自动发现(discovery):通过定义自动发现条件,配合动作批量添加监控主机
自动注册(auto-registraion):agent 向server 发送注册请求,server 定义自动注册条件批量添加主机
低级自动发现(low_discovery):通过低级自动发现可以简单定义一种类型有多个项的的情况,如:对磁盘容量监控,通常磁盘会有多个分区,我们通过一次定义可以监控磁盘上的所有分区
维护(maintenace):定义主机合适出于维护状态
拓扑图(map):可以主机直接的拓扑
屏幕(Screents):多种类型显示到一个screent 里
IT 服务(IT service):有时一台主机宕掉可能不会影响服务,IT 服务定义服务容忍的限度
仪表盘(dashboard):监控的整体状态显示
总览(overview):显示所有机器的数据或者触发器状态
web:通过定义场景监控web 服务器
最新数据(last data):可查看主机项目获得的最新数据
事件(Event):触发器状态改变的记录

 6.Zabbix的优缺点

优点:
 开源,无软件成本投入 
 Server 对设备性能要求低 
 支持设备多,自带多种监控模板 
 支持分布式集中管理,有自动发现功能,可以实现自动化监控 
 开放式接口,扩展性强,插件编写容易 
 当监控的item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从 
 Server 端去下载需要监控的item 然后取数据上传到server 端。这种方式对服务器的负载比较小。 
  Api 的支持,方便与其他系统结合 
缺点:

         需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库

标签: Zabbix

演示站
上一篇:CentOS 7 Logstash二进制安装和启动
下一篇:oracle数据库意外宕机的分析处理案例

相关推荐

发表评论

评论列表

2019-06-20 01:09:44

不错,写的很好!总结也很好。辛苦啦。。

×
选择打赏方式:

打赏

打赏

打赏

×
选择分享方式: