1、序言
本篇是基于《zabbix 企业级分布式监控系统》作为理论基础,分别从监控分类、简介、监控方式、分布式监控和api的使用多个纬度展开介绍。
2、目录
开源社区监控的分类
zabbix简介
监控方式
分布式监控
zabbix api的使用
3、监控的分类
监控系统往往需要对物理硬件和软件的性能和参数进行数据汇集,实现集中管理和统一分析。
按工作方式分为两种,主动监控和被动监控。
监控的项目:
主机监控
网卡监控
文件监控
URL监控
应用程序监控
数据库监控
日志监控
硬件监控

开源社区监控的种类
mrtg
cacti
smokeping
grahite
nagios
zenoss core
ganglia
opentsdb
zabbix
4、zabbix简介
zabbix是什么?
zabbix是一个企业级的高度集成开源监控软件。zabbix sla 公司技术支持。
选择zabbix的理由
zabbix是一个自由开放源代码的产品
安装和配置简单
搭建环境简单
zabbix-agent数据采集的性能和速度快
将数据采集持久存储到数据库,便于对监控数据的二次分析。
非常丰富的扩展能力
开源社区的运作模式。
zabbix的架构
通用架构是C/S架构,分布式架构分为C/P/S架构或者C/N/S架构

zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息,统计信息,操作数据等。
zabbix database:用于存储所用zabbix的配置信息、监控数据的数据库。
zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及产看zabbix相关监控信息,可以单独部署在独立的服务器上。
zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
采集的方式:
agent模式,SNMP,SSH,Telnet,IPMI等多种协议。
zabbix-server的进程:
watchdog,housekeeper,alerter,discover,times等等
zabbix的功能:
数据收集
灵活的触发器
高度可定制的告警
实时的绘图功能
web监控能力
多种可视化的展示
历史数据的存储
配置非常容易
使用模板
网络发现
快速的访问接口
API功能
系统权限
程序特性
大型环境的支持
软件图:

5、监控方式
agent监控方式
主动模式
被动模式
被动模式是由key和zabbix_agentd.conf参数配置决定的,将配置中的server的参数配置成允许连接的IP(server=127.0.0.1),server根据key向agent请求数据,然后agent向server响应数据。
主动模式需要修改zabbix_agentd.conf中ServerActive=Server的IP地址。
trapper监控方式
trapper是发送任意的数据给zabbix-server采用主动推送的方式,与主动模式有一些相同,但又有区别,区别在于trapper不需要安装客户端,key的名称可以灵活定义,这意味着zabbix-server可以获取需要的任意数据。
在trapper的工作模式中,zabbix发送数据的程序是zabbix-sender。
zabbix-sender的参数:
-z:zabbix-server的ip地址
-p:zabbix-server的端口
-s:主机的名称
-k:自定义的key
-o:发送的数据
SNMP模式
simple network Management protocol的缩写,即简单网络管理协议。
分为两部分:管理进程和被管理进程。
使用SNMP可以监控路由器,交换机,打印机,UPS或者其他开启SNMP的设备。
IPMI监控方式
智能平台管理接口,可以利用IPMI监视服务器的物理特征,如温度,电压,单扇工作状态,电源供应以及机箱入侵等。
IPMI独立于CPU BIOS和OS外自行运行。
JMX监控方式
java management Extensions即java管理扩展,是java平台上的应用程序设备系统等植入管理的框架,JMX可以跨越一系列异构操作系统平台,系统体系架构和网络传输协议,灵活得开发无缝集成的系统、网络和服务管理应用。
命令的执行
system.run 是zabbix-agent的一个key,在默认情况下不允许使用,防止被黑客劫持而造成损失。(zabbix_agentd.conf中修改enableRemoteCommands=1)
zabbix_get -s 127.0.0.1 -k system.run['ls ']
6、分布式监控
zabbix的架构模式分为proxy和node。node已经在zabbix 2.4中不在支持了。

7、zabbix的API
zabbix api简介
zabbix api 是基于前端HTTP协议实现的,也就是可以通过HTTP请求实现API,API数据传输采用的Json rpc协议。
json rpc是基于json的跨语言远程调用协议,按指定的格式向服务端发起调用,服务端响应后再按照指定的格式返回调用方。
使用zabbix api的使用流程
连接 http://x.x.x.x/api_jsonrpc.php 提供用户名和密码,
并标识 HTTP 头部 Content-Type:application/json,HTTP 方法为 POST。
获取 SESSIONID
通过 SESSIONID 建立后续的连接
提交 POST 数据,格式为 JSON,其中放对应的方法,获取需要的数据。
注意用户验证方面。
8、实践
实际讲解目前API调用的相关代码流程。
1、维护模式

2、调用指定的接口文件,判断是否告警告警。

3、完成一个简单的API调用。




