要确保服务的可靠性,离不开对服务的监控和报警,固然还有服务运行的所在机器上的一些状态指标监控. 就是当某些指标不符合咱们的需求时,咱们可以在第一时间发现异常。这时候,咱们能够本身写脚本去实现,也能够借助一些第三方工具。这里,咱们讨论监控工具。它须要按期的对被监控主机进行检查,信息收集等操做。当被监控主机出现异常时,可以及时报警,通知管理员,而且须要记录这些一场,以便咱们分析这些数据,查缺补漏。那么,一个监控工具就应该具有采集信息,存储信息,展现信息,报警通知等功能,而zabbix就能够作到这些。zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。除了zabbix,你可能还据说过cacti, nagios, ganglia等相似的监控系统,可是这里咱们只聊zabbix。linux
那么咱们经过zabbix可以监控哪些硬件资源呢,理论上来讲,只要是与咱们的业务有关的硬件资源,都应该被监控,好比 主机、交换机、路由器、UPS等等,可是,监控它们的前提是能与它们进行通信,那么问题来了,因为硬件的不一样,致使咱们没法使用统一的方法去监控它们,这个时候,就须要监控程序有必定的通用性,或者说,监控程序须要可以与多种硬件设备通信,才能知足咱们的监控需求,举个例子:若是被监控的对象是一台安装了linux操做系统的服务器,那么咱们能够经过ssh或者telnet这种远程工具与被监控对象创建起通信的通道,但是若是被监控的对象是一台安装了其余操做系统的服务器呢,更甚之,被监控的对象并非服务器,而只是一台交换机或者路由器呢,因此,zabbix若是想要可以全面的监控这些对象,则须要可以经过各类方法与它们进行通信。ios
好了,咱们刚才提到了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支持分布式监控,咱们能够把成千上万台的被监控对象分红不一样的区域,每一个区域中设置一台代理主机,区域内的每一个被监控对象的信息被agent采集,提交给代理主机,在这个区域内,代理主机的做用就比如zabbix server,咱们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样,zabbix proxy分摊了zabbix server的压力,同时,咱们还可以经过统一的监控入口,监控全部的对象,当监控规模庞大到须要使用zabbix proxy时,zabbix的架构以下图,咱们能够对比下图,理解上述描述。数据库
此处,咱们再把刚才说到的各类组件总结一遍:服务器
咱们知道,agent端会将采集完的数据主动发送给server端,这种模式咱们称之为主动模式,即对于agent端来讲是主动的。网络
其实,agent端也能够不主动发送数据,而是等待server过来拉取数据,这种模式咱们称之为被动模式。架构
聪明如你必定已经明白,不论是主动模式仍是被动模式,都是对于agent端来讲的,并且,主动模式与被动模式能够同时存在,并不冲突。ssh
管理员能够在agent端使用一个名为zabbix_sender的工具,测试是否可以向server端发送数据。分布式
管理员能够在server端使用一个名为zabbix_get的工具,测试是否可以从agent端拉取数据。工具
好了,咱们已经了解了zabbix的一些基本概念,其实zabbix还有不少经常使用术语,可是如今咱们并无遇到实际的使用场景,空口白话的描述显得特别无力,并且难以理解,咱们就先无论它们了,等到用到它们的时候,咱们再作解释。