Zabbix 监控平台搭建实验
前言
本文重点在于Zabbix监控平台的工作原理与运行原理,后面会将详细的搭建流程展示,如有错误和遗漏的地方,欢迎大家指正,谢谢。
基础理论说明
Zabbix 是什么?
Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。( 基于 GPL V2 )
zabbix由2部分构成,zabbix server 与可选组件 zabbix agent。
为什么需要对各类系统进行监控?
在系统构建时的正常流程中,通常是不允许未被监控的系统或应用上线的,因为未被监控的系统存在不可预知性、故障未知性等不稳定因素,且无法及时被发现并排除。这对整个架构或系统来说都是很大的风险隐患。所以我们原则上是需要对整个架构或系统进行监控,随时监测系统各方面的指标是否正常,以提高整个系统的稳定性。
Zabbix是如何实现系统监控的?
一个完整的监控系统所需指标:
1.采样:周期性的获取某个被监测指标的相关数据
2.存储:将采集到的数据存储在指定的存储系统中,Zabbix默认是MySQL
对于数据的存储可分为两大类:
历史数据:可理解为过去某一时间点的数据
趋势数据:可理解为过去某一段时间的数据
3.展示:采集完数据后,为了使数据能更直观的展现在用户面前,可将采集到的数据做二次处理,做成各类图形。Zabbix就是使用的PHP程序将采集的数据通过Web GUI直观的展示给用户。
4.报警:当监控的指标出现异常时需要监控系统能自动的发出告警信息,甚至在出现报警后能自动完成修复。
Zabbix支持的数据采集协议
1.SNMP:(Simple Network Management Protocol),监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议。
2.Agent:Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等。
3.IPMI:智能平台管理接口(Intelligent Platform Management Interface)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。
4.JMX:Java Management Extensions(不常见)
Zabbix 进程构成
zabbix 安装完成后会产生 5 个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、 zabbix_server,zabbix_java_gateway 是可选,这个需要另外安装。
1.zabbix_agentd:客户端守护进程,此进程收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等。
2.zabbix_get:zabbix 工具,单独使用的命令,通常用于排错。
3.zabbix_sender:zabbix 工具,用于发送数据给 server 或者 proxy ,在脚本完成之后使用 sender 主动将数据提交 。
4.zabbix_server:zabbix 服务端守护进程,所有数据都是被提交或主动提交到 zabbix_server 端。
5.zabbix_proxy:zabbix 代理守护进程。功能类似 server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到 server 里。
6.zabbix_java_gateway:zabbix2.0 之后引入的一个功能。顾名思义:Java 网关,类似 agentd,但是只用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者 proxy。
Zabbix实现监控的两种模式
Zabbix监控客户端分为主动监控与被动监控,主被动模式以客户端为参照,Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加 StartAgents=0。
Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy。
Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,Server处理接收到的数据。
以下的总结和问题部分来自网