1、zabbix是什么
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix至少由两部分组成,zabbix server与可选组件zabbix agent。它具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表,图表的绘制等功能。检测对象可以是linux或者windows服务器,也可以是路由器,交换机等网络设备。
zabbix server可以通过snmp ,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,ALX,Free BSD,Open BSD,OS X等平台上。
2、为什么要使用zabbix
对于运维人员来说,监控是非常重要的,因为如果想要保证公司先生业务整体能够稳定运行,那么我们需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器,网络设备等硬件资源,如果我们想要能够更加方便集中的的监控他们,我们则需要依靠一些外部工具,而zabbix就是被广泛使用的可以实现集中监控管理的应用程序。
我们监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常,所以监控工具需要定期的对被监控的主机进行检查,信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺,那么,一个监控工具就应该具备采集信息,存储信息,展示信息报警通知等功能,而zabbix就可以做到这些。类似的监控系统还有cacti,nagios等
3、zabbix的安装使用
zabbix agent需要安装在被监控的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,cpu等信息的收集。
zabbix agent可以运行在Linux、Solaris、HP-UX、Free BSD、Windows等系统上。
zabbix server可以单独监视远程服务器的服务状态,同时也可以与zabbix agent配合,可以轮询zabbix agent主动接受监视数据,同同时还可被动接收zabbix agent发送的数据。
4、zabbix监控环境
要想搭建一个zabbix 的工作环境,需要从服务器入手,与服务器通信,管理员需要使用一个zabbix前段界面,与zabbix服务器和数据库进行通信,三个关键(web界面,服务器和数据库)可以安装在统一台服务器上,但是如果你拥有一个更大更复杂的环境,将他们安装在不同的主机上也是一个选项。zabbix服务器能够监控到统一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台zabbix代理服务器。
5、zabbix的主要特点
-
安装简单,学习成本低
-
支持多语言
-
免费开源
-
自动发现服务器与网络设备
-
分布式监视以及web集中管理功能
-
可以无agent监视
-
用户安全认证和柔软的授权方式
-
通过web界面设置或者查看监视结果
-
email等通知功能
6、zabbix主要功能 -
cpu负荷
-
内存使用
-
磁盘使用
-
网络状况
-
端口监视
-
日志监视
7、zabbix通讯方式
理论上来说只要是我们的业务有关的硬件资源,都应该能被监控,比如:主机、交换机、路由器、ups等
但是,监控他们的前提是能够与它们进行通讯,由于硬件的不同,导致我们无法使用统一的方法去监控他们
这个时候就需要监控程序有一定的连贯性,或者说监控程序需要能够与多种硬件设备通讯,才能满足我们的监控需求。
比如说如果被监控的对象是一台安装了linux操作系统的服务器,那么我们可以通过ssh或者telnet这种远程工具与被监控对象建立起通讯的通道,可是如果被监控的对象是一台安装了其他操作系统的服务器,或者被监控的对象不是服务器而是一台交换机或者路由器,那么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虚拟机时,使用这种方法 |
8、zabbix各项组件介绍
一般情况下,将zabbix agent部署到监控主机上,由agent负责采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端接收到的信息存储于zabbix的数据库中,我们把zabbix的数据库端称为zabbix database,如果管理员需要查看各种监控信息,则需要zabbix的GUI,zabbix的GUI是一种Web GUI,我们称之为zabbix web,zabbix web是使用php编写的,所以要向想使用zabbix web展示相关监控信息,需要依赖lnmp环境,不管是zabbix server,或者是zabbix web,他们都需要连接到zabbix database获取相关数据。
当监控规模变得庞大时,我们可能有成千上万台设备需要监控,这时我们是否需要部署多套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端 |
9、zabbix的工作模式
agent端会将采集完成的数据主动发送给server端,这种模式被称为主动模式,即对于agent端来说是主动的。其实agent端也可以不主动发送数据,而是等待server过来拉取数据,这种模式我们称之为被动模式,被动模式与主动模式都是对于agent端来说的,而且主动模式与被动模式可以同时存在,并不冲突。
管理员可以在agent端使用一个名为zabbix——sender的工具,测试是否能够向server端发送数据。可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据。