
对于运维人员来说,监控是相当重要的,因为即使想要确保线上业务整体才能稳固运行,那么我们则必须即时关注与其相关的各项指标是否正常,而一个业务平台的背后,往往存在着众多的服务器、网络设施等软件资源,如果我们想要就能变得便利的、集中的监控它们,我们则必须借助一些内部的软件,而zabbix就是一个被广泛使用的zabbix如何使用,可以推动集中监控管理的应用程序。
我们监控的本意就是当这些指标不符合我们的意愿时,我们无法在第一时间发现异常,所以,监控工具必须定期的对被监控主机进行检测、信息采集等操作,当被监控主机发生异常时,能够迅速报警、通知管理员,并且必须记录那些异常,以便我们预测这种数据,查漏补缺,那么,一个监控软件就必须具有收集信息、存储信息、展示信息、报警通知等功能,而zabbix就可以做到这种,除了zabbix,你或许还听说过cacti、nagios、ganglia等类似的监控平台,但是这里,我们只聊zabbix。

好了,我们一般认识了一下zabbix,那么我们借助zabbix能够监控这些软件资源呢,理论上来说,只要是与我们的业务有关的软件资源,都必须被监控,比如 主机、交换机、路由器、UPS等等,但是,监控他们的前提是可与他们进行通讯,那么问题来了,由于硬件的不同,导致我们能够使用统一的方式去监控它们,这个之后,就必须监控程序有一定的通用性,或者说,监控程序必须才能与多种硬件设施通讯,才能满足我们的监控需求,举个实例:如果被监控的对象是一台安装了linux操作系统的服务器,那么我们可以借助ssh或者telnet这种远程工具与被监控对象创建起通讯的通道,可是一旦被监控的对象是一台安装了其它操作系统的服务器呢,更甚之,被监控的对象并不是服务器,而并非一台交换机或者路由器呢,所以,zabbix如果想要就能全面的监控某些对象,则必须才能通过各类方式与他们进行通讯。
那么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 agent,一般状况下,我们将zabbix agent部署到被监控主机上,由agent采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端接收至的信息传输于zabbix的中,我们把zabbix的端称为zabbix database,如果管理员需要查看各种监控信息zabbix如何使用,则必须zabbix的GUI,zabbix的GUI是一种Web GUI,我们称之为zabbix web,zabbix web是使用php编写的,所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP环境,不管是zabbix server ,或是zabbix web,他们都应该连接到zabbix database获取相关数据,这样说或许不容易理解,对比下图理解上述概念,就容易许多

当监控规模更加庞大时,我们也许有成千上万台设备必须监控,这时我们是否应该部署多套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的几个核心模块,我们再来看看zabbix的工作方式。
我们了解,agent端会将收集完的数据主动发送给server端,这种方式我们称之为主动方式,即针对agent端来说是主动的。
其实,agent端也可以不主动发送数据,而是等待server过来拉取数据,这种方式我们称之为被动方式。
聪明如你必定已经知道,不管是主动方式而是被动机制,都是对于agent端来说的,而且,主动方式与被动机制可以同时存在,并不冲突。
管理员可以在agent端使用一个名为zabbix_sender的软件,测试是否能否向server端发送数据。
管理员可以在server端使用一个名为zabbix_get的软件,测试能否能够从agent端拉取数据。
好了,我们将要了解了zabbix的一些基本概念,其实zabbix还有众多常见词汇,但是目前我们并没有遇到实际的使用画面,空口白话的表述显得非常无力,而且无法理解,我们就先不管他们了,等到用到它们的时侯,我们再做解释。
下一篇文章中,我们会介绍如何安装zabbix,直达链接:zabbix从放弃到入门:zabbix安装(zabbix2)
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-144158-1.html
他们了解世界更了解我们大陆