zabbix (一) 初识
1、什么是zabbix?
Zabbix由Alexei Vladishev创建,目前由Zabbix SIA积极开发和支持。
Zabbix是一种企业级开源分布式监控解决方案。
Zabbix是监控底层存储(网络、硬件)、系统结构(操作系统、虚拟化、集群)、上层应用(数据库、应用软件)的开源监控软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这样可以快速响应服务器问题。Zabbix基于存储的数据提供出色的报告和数据可视化功能。这使得Zabbix成为容量规划的理想选择。
Zabbix支持轮询和捕获。所有Zabbix报告和统计信息以及配置参数都可通过基于Web的前端访问。基于Web的前端可确保从任何位置评估网络状态和服务器运行状况。经过适当配置,Zabbix可以在监控IT基础架构方面发挥重要作用。对于拥有少量服务器的小型组织以及拥有众多服务器的大型公司来说,情况也同样如此。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证版本2 编写和分发的。这意味着它的源代码是免费分发的,并且可供一般公众使用。
2、zabbix常用的通讯方式:
a、agent:通过代理程序。
b、SSH或者Telnet:远程控制协议。
c、SNMP:简单网络管理协议。
d、IPMI:通过IPMI硬件接口。
e、JVM:java管理扩展,通常用于监控java虚拟机。
3、zabbix核心组件?
a、zabbix-agent:部署在被监控机(也就是zabbix客户端),负责数据的收集和发送(有主动和被动模式)
b、zabbix-server:zabbix服务端,主要用于接受agent端发送过来的数据,并将数据存储到数据库(mysql、oracle等),数据的二次分析。
c、zabbix-get:zabbix服务端主动获取客户端的数据,通常用于自定义建或者web界面键不支持的情况下,用于在服务端测试是否能从客户端采集到数据。
d、zabbix-sender:客户端主动提交某一个监控项的值给服务端。
e、zabbix-web:zabbix web界面,用于展示。
f、zabbix database:数据库,存储数据,常用的有mysql、oracle、postgresql等
g、zabbix-proxy:zabbix代理,用于C/P/S分布式监控,分担服务器的压力,从客户端获取到数据,最终统一发送给服务端。
4、zabbix 模式
zabbix的模式都是对于客户端来说的
a、被动模式:server向agent请求获取监控项的数据,agent返回数据。
详细过程如下:
(1)、 Server打开一个TCP连接
(2)、Server发送请求agent.ping\n 也就是监控项<item\n>
(3)、Agent接收到请求并且响应<HEADER><DATALEN>1 返回数据是JSON格式的
(4)、Server处理接收到的数据1
(5)、关闭TCP连接
对于的配置文件修改/etc/zabbix/zabbix_agentd.conf
Server=服务端IP地址
b、主动模式:客户端主动把服务端需要的监控项的数据发送给服务端,这样对于服务端来说,压力较小。
详细过程如下:
(1)、Agent打开TCP连接(主动检测变成Agent打开)
(2)、Agent请求items检测列表
(3)、Server返回items列表
(4)、Agent 处理响应
(5)、关闭TCP连接
对于的配置文件修改/etc/zabbix/zabbix_agentd.conf
ServerActive=服务端IP地址
5、开源的监控软件有?
1)流量监控:
a、MRTG:可用来绘制网络流量图、服务器磁盘使用量、CPU负载等。
b、Cacti:基于PHP、MYSQL、SNMP、RRDtool开发的网络流量监测图形分析工具。
c、SmokePing:主要用于监视网络性能,包括ping、www服务器性能、DNS查询性能、SSH性能等。
d、Graphite:采集网站实时信息并可以进行统计的开源软件,只能显示数据,不能收集数据,收集数据通常都是第三方软件,比如zabbix等完成。
e、SmartPing:一个简单的监控网络的工具,采用ping来实现服务器的网络性能。
2)性能告警:
a、Nagios:企业级的监控方案,可以监控服务器的状态和网络等信息,还能监视本地或者远程服务器的参数,提供异常告警。
b、Zabbix:开源分布式系统,支持多种采集方式和采集客户端,有专用的Agent(客户端),同时也支持SSH、SNMP、JMX、Telnet、IPMI等多种协议。
c、Zenoss Core:开源的监控软件,通过对列表与配置管理数据库,用于发现企业的服务器、网络,采用SMTP协议收集数据。
d、Ganglia:跨平台、可扩展、高性能的分布式监控系统。基于分层设计,采用RRDtool存储数据。
e、openTSDB:使用Hbase存储所有时序(无需采样)数据,来构建一个分布式、可伸缩的时间序列数据库。常用于实时性要求较高的场合。