一、Zabbix介绍
Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。
Zabbix 是一个企业级的分布式开源监控方案。
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。
Zabbix公司也提供商业化的技术支持。
二、Zabbix特点
Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。
数据采集:
- 可用性和性能检查
- 支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控
- 自定义检查
- 按照自定义的间隔收集需要的数据
- 由Server/Proxy和agents执行
灵活的阀值定义
- 您可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值
高度可配置化的告警
- 可以根据升级计划,接收方和媒体类型来定制发送告警通知 * 使用宏变量可以使告警通知更有意义更高效 * 自动化动作包含执行远程命令
实时图表绘制
- 使用内置图表绘制功能可以将监控项的内容立即绘制成图表
Web监控功能
- Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间
丰富的可视化选项
- 能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示
- 网络拓扑图
- 以仪表盘的样式展现自定义的展现和幻灯片
- 报告
- 监控资源的高级(业务)视图
历史数据存储
- 数据存储在数据库中
- 可配置历史数据
- 内置数据管理机制
配置简单
- 将被监控对象添加为主机
- 主机被创建用于监控,在数据库中是唯一存在的
- 应用模板来监控设备
使用模板
- 在模板中分组检查
- 模板可以关联其他模板
网络发现
- 自动发现网络设备
- 监控代理自动注册
- 发现文件系统,网络接口和SNMP OID值
简洁的Web界面
- Web前端基于PHP
- 可从任何地方访问
- 你可以定制自己的操作方式
- 审核日志
Zabbix API
- Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的
权限管理系统
- 安全用户认证
- 特定用户可以限制访问特定的视图
功能强大并易于扩展的监控代理
- 部署在被监控对象上
- 可以部署在Linux和Windows上
二进制代码
- 为了性能和更少内存的占用,用C语言编写
- 便于移植
为复杂环境准备
- 使用Zabbix proxy代理服务器,使得远程监控更简单
三、Zabbix功能总结
①具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)
②支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)
③支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)
④支持分布式,能集中展示、管理分布式的监控点
⑤扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)编写插件容易,可以自定义监控项,报警级别的设置。
⑥数据收集
可用和性能检测
支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET
自定义的检测
自定义收集数据的频率
服务器/代理和客户端模式
灵活的触发器
可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值
高可定制的报警
发送通知,可定制的报警升级,收件人,媒体类型
通知可以使用宏变量有用的变量
自动操作包括远程命令
实时的绘图功能
监控项实时的将数据绘制在图形上面
WEB 监控能力
ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间
三、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的一种 。
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的一种 。
四、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。
五、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):触发器状态改变的记录
六、Zabbix的优缺点
优点:
开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
开放式接口,扩展性强,插件编写容易
当监控的item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从
Server 端去下载需要监控的item 然后取数据上传到server 端。这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合
缺点:
需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。