zabbix基于web界面的企业级开源监控软件,可以实现集中监控管理的应用程序。除了zabbix,还有cacti、nagios、ganglia等监控系统zabbix服务器需要LAMP环境或LNMP环境,提供分布式系统监控与网络监视功能。具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表、图表的绘制等功能。监测对象可以是Linux或Windows服务器,也可以是路由器、交换机等网络设备,通过SNMP、zabbix Agent、PING、端口监视等方法提供对远程网络服务器等监控、数据收集等功能。
1.zabbix支持的通讯方式
agent:通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
ssh/telnet:通过远程控制协议进行通讯,比如ssh或者telnet。
SNMP:通过SNMP协议与被监控对象进行通讯,SNMP协议的全称为Simple Network Management Protocol ,被译为 “简单网络管理协议”,通常来说,无法在路由器、交换机这种硬件上安装agent,但是这些硬件往往都支持SNMP协议,SNMP是一种比较久远的、 通行的协议,大部分网络设备都支持这种协议,其实SNMP协议的工作方式也可以理解为master/agent的工作方式,只不过是在这些设备中内置了 SNMP的agent而已,所以,大部分网络设备都支持这种协议。
IPMI:通过IPMI接口进行监控,可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。
JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展),监控JVM虚拟机。
2.环境要求
一般将zabbix agent部署到被监控主机上,由agent采集数据,报告给负责监控的中心主机zabbix master/server,负责将从agent端接收到的信息存储于zabbix的database, 查看各种监控信息,则需要zabbix的GU(Web GUI),zabbix web,zabbix web使用php编写,需要LAMP环境。
zabbix支持分布式监控,可以被监控对象分成不同的区域,每个区域中设置一台代理主机zabbix proxy,zabbix proxy再将收集到的信息统一提交给zabbix server处理,这样,zabbix proxy分摊了zabbix server的压力。
3.zabbix的工作模式
agent端会将采集完的数据主动发送给server端,称之为主动模式,即对于agent端来说是主动的。
agent端不主动发送数据,等待server过来拉取数据,称之为被动模式。
不管是主动模式还是被动模式,都是对于agent端来说的,而且,主动模式与被动模式可以同时存在,并不冲突。
在agent端使用一个名为zabbix_sender的工具,测试是否能够向server端发送数据。
在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据。
4.zabbix架构
在生产环境中,zabbix根据网络环境、监控规模等外界因素分为三种架构:server-client(直接连接)、master-node-client(Node架构)、server-proxy-client(proxy架构)。
4.1 server-client架构
server-client架构是zabbix最简单的架构,监控机和被监控机之间不经过任何代理,直接在zabbix server(监控服务器) 和zabbix agent(agent:部署在被监控端,用于采集数据)之间进行数据交互,适用于网络比较简单,设备较少的监控环境。
4.2 master-node-client架构
master-node-client架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client。node有自己的配置文件和数据库,其要做的就是将配置信息和监控数据向master同步。当master宕机后,node可以保证架构的完整性。
4.3 server-proxy-client架构
proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server。该架构经常是和master-node-client架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控。
5.zabbix工作进程
默认情况下 zabbix 包含6个进程:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选的,这个需要单独安装。
5.1 zabbix_agentd
客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
5.2 zabbix_get
zabbix 工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令。通常用于排错。例如在 server 端获取不到客户端的内存数据,可以使用 zabbix_get 获取客户端的内容的方式来做故障排查。
5.3 zabbix_sender
zabbix 工具,用于发送数据给 server 或者 proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致 zabbix 超时。于是在脚本执行完毕之后,使用 sender 主动提价数据。
5.4 zabbix_server
zabbix 服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server(说明:当然不是数据都是主动提交给zabbix_server,也有的是 server 主动去取数据)
5.5 zabbix_proxy
zabbix 代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到 server 里。
5.6 zabbix_java_gateway
zabbix2.0之后引入的一个功能。顾名思义:Java网络,类似agentd,但是只用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者proxy。
————Blueicex 2020/2/23 08:20 blueice1980@126.com