zabbix简介

背景

要确保服务的可靠性,离不开对服务的监控和报警,固然还有服务运行的所在机器上的一些状态指标监控. 就是当某些指标不符合咱们的需求时,咱们可以在第一时间发现异常。这时候,咱们能够本身写脚本去实现,也能够借助一些第三方工具。这里,咱们讨论监控工具。它须要按期的对被监控主机进行检查,信息收集等操做。当被监控主机出现异常时,可以及时报警,通知管理员,而且须要记录这些一场,以便咱们分析这些数据,查缺补漏。那么,一个监控工具就应该具有采集信息,存储信息,展现信息,报警通知等功能,而zabbix就能够作到这些。zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。除了zabbix,你可能还据说过cacti, nagios, ganglia等相似的监控系统,可是这里咱们只聊zabbix。linux

那么咱们经过zabbix可以监控哪些硬件资源呢,理论上来讲,只要是与咱们的业务有关的硬件资源,都应该被监控,好比 主机、交换机、路由器、UPS等等,可是,监控它们的前提是能与它们进行通信,那么问题来了,因为硬件的不一样,致使咱们没法使用统一的方法去监控它们,这个时候,就须要监控程序有必定的通用性,或者说,监控程序须要可以与多种硬件设备通信,才能知足咱们的监控需求,举个例子:若是被监控的对象是一台安装了linux操做系统的服务器,那么咱们能够经过ssh或者telnet这种远程工具与被监控对象创建起通信的通道,但是若是被监控的对象是一台安装了其余操做系统的服务器呢,更甚之,被监控的对象并非服务器,而只是一台交换机或者路由器呢,因此,zabbix若是想要可以全面的监控这些对象,则须要可以经过各类方法与它们进行通信。ios

 

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虚拟机时,使用这种方法也是很是不错的选择。

 

zabbix的核心组件

好了,咱们刚才提到了zabbix agent,通常状况下,咱们将zabbix agent部署到被监控主机上,由agent采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端接收到的信息存储于zabbix的数据库中,咱们把zabbix的数据库端称为zabbix database, 若是管理员须要查看各类监控信息,则须要zabbix的GUI,zabbix的GUI是一种Web GUI,咱们称之为zabbix web,它是用PHP编写的,因此,若是想要使用zabbix web展现相关监控信息,须要依赖LAMP环境,不论是zabbix server,或是zabbix web,他们都须要链接到zabbix database获取相关数据,这样说可能不容易理解,对比下图理解上述概念,就容易许多.web

 

zabbix分布式监控

当监控规模变得庞大时,咱们可能有成千上万台设备须要监控,这时咱们是否须要部署多套zabbix系统进行监控呢?若是部署多套zabbix监控系统,那么监控压力将会被分摊,可是,这些监控的对象将会被尽可能平均的分配到不一样的监控系统中,这个时候,咱们就没法经过统一的监控入口,去监控这些对象了,虽然分摊了监控压力,可是也增长了监控工做的复杂度,那么,咱们到底该不应创建多套zabbix监控系统从而分摊巨大的监控压力呢?其实,zabbix天生就有处理这种问题的能力,由于zabbix支持分布式监控,咱们能够把成千上万台的被监控对象分红不一样的区域,每一个区域中设置一台代理主机,区域内的每一个被监控对象的信息被agent采集,提交给代理主机,在这个区域内,代理主机的做用就比如zabbix server,咱们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样,zabbix proxy分摊了zabbix server的压力,同时,咱们还可以经过统一的监控入口,监控全部的对象,当监控规模庞大到须要使用zabbix proxy时,zabbix的架构以下图,咱们能够对比下图,理解上述描述。数据库

此处,咱们再把刚才说到的各类组件总结一遍:服务器

  • zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
  • zabbix server:负责接收agent发送的报告信息,而且负责组织配置信息、统计信息、操做数据等。
  • zabbix database:用于存储全部zabbix的配置信息、监控数据的数据库。
  • zabbix web:zabbix的web界面,管理员经过web界面管理zabbix配置以及查看zabbix相关监控信息,能够单独部署在独立的服务器上。
  • zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy表明server端,完成局部区域内的信息收集,最终统一发往server端。

 

zabbix的工做模式

咱们知道,agent端会将采集完的数据主动发送给server端,这种模式咱们称之为主动模式,即对于agent端来讲是主动的。网络

其实,agent端也能够不主动发送数据,而是等待server过来拉取数据,这种模式咱们称之为被动模式架构

聪明如你必定已经明白,不论是主动模式仍是被动模式,都是对于agent端来讲的,并且,主动模式与被动模式能够同时存在,并不冲突。ssh

管理员能够在agent端使用一个名为zabbix_sender的工具,测试是否可以向server端发送数据。分布式

管理员能够在server端使用一个名为zabbix_get的工具,测试是否可以从agent端拉取数据。工具

 

好了,咱们已经了解了zabbix的一些基本概念,其实zabbix还有不少经常使用术语,可是如今咱们并无遇到实际的使用场景,空口白话的描述显得特别无力,并且难以理解,咱们就先无论它们了,等到用到它们的时候,咱们再作解释。

相关文章
相关标签/搜索