企业级监控系统zabbix---什么是zabbix?

一、Zabbix概述

1.什么是zabbix

我们监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常。所以,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺。那么。一个监控工具就应该具备采集信息、存储信息、展示信息、报警通知等功能,而zabbix就可以做到这些。除了zabbix,你可能还听说过cacti、nagios、 ganglia等类似的监控系统,但是此处,我们只聊zabbix。

zabbix是一个基于WEB界面的提供 分布式系统监控以及网络监控功能 的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix由zabbix server与可选组件zabbix agent两部门组成。

  • zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
  • zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

2.zabbix监控

理论上来说,只要是与我们的业务有关的硬件资源,都应该被监控,比如主机、交换机、路由器、UPS等等。但是,监控它们的前提是能与它们进行通讯,那么问题来了,由于硬件的不同,导致我们无法使用统一的方法去监控他们,这个时候,就需要监控程序有一定的通用性,或者说,监控程序需要能够与多种硬件设备通讯,才能满足我们的监控需求.

举个例子:如果被监控的对象是一台安装了linux操作系统的服务器,那么我们可以通过ssh或者telnet这种远程工具与被监控对象建立起通讯的通道,可是如果被监控的对象是一台安装了其他操作系统的服务器呢,更甚之,被监控的对象并不是服务器,而只是一台交换机或者路由器呢?所以,zabbix如果想要能够全面的监控这些对象,则需要能够通过各种方法与它们进行通讯

3.为什么需要对各类系统运行进行监控?

当系统构建时的正常流程中,通常是不允许未被监控的系统或应用上线的,因为未被监控的系统存在不可预知性,故障未知等不确定因素,且无法及时被发现并排除的,这时整个架构或系统来说都是非常大的风险因患,所以我们在原则上是要对整个的架构或系统进行监控,随时监控各个方面的指标是否正常,以提高系统的稳定性。

4.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
    ManagementExtensions,即Java管理扩展),监控JVM虚拟机时,使用这种方法也是非常不错的选择。

5.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, zabbix web是使用php编写的。所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP环境,不管是zabbixserver,或是zabbix web,他们都需要连接到zabbix database获取相关数据
在这里插入图片描述

6.zabbix-proxy

当监控规模变得庞大时,我们可能有成千上万台设备需要监控,这时我们是否需要部署多套zabbix系统进行监控呢?
如果部署多套zabbix监控系统,那么监控压力将会被分摊,但是,这些监控的对象将会被尽量平均的分配到不同的监控系统中,这个时候,我们就无法通过统一的监控入口,去监控这些对象了,虽然分摊了监控压力,但是也增加了监控工作的复杂度,那么,我们到底该不该建立多套zabbix监控系统从而分摊巨大的监控压力呢?

其实,zabbix天生就有处理这种问题的能力,因为zabbix支持分布式监控,我们可以把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机区域内的每个被监控对象的信息被agent采集,提交给代理主机,在这个区域内,代理主机的作用就好比zabbix server,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象,当监控规模庞大到需要使用zabbix proxy时,zabbix的架构如下图,我们可以对比下图,理解上述描述。
在这里插入图片描述

7.Zabbix的常用组件

  • zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server
  • zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等
  • zabbix database:用于存储所有zabbix的配置信息,监控数据的数据库
  • zabbix web GUI:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上
  • Zabbix Proxy: 当监控节点较多时,用于减轻Server压力组件,也可用于分布式监控系统,由Proxy接收数据后统一发送给Server.

8.工作原理

一个监控系统运行的大概流程是这样的:

Zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web 根据数据在前端进行展现和绘图。

这里agent收集数据分为主动和被动两种模式:

  • 主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
  • 被动:server向agent请求获取监控项的数据,agent返回数据。

9.主动模式和被动模式

我们知道,agent端会将采集完的数据主动发送给server端,这种模式我们称之为主动模式,即对于agent端来说是主动的
其实,agent端也可以不主动发送数据,而是等待server过来拉取数据,这种模式我们称之为被动模式

不管是主动模式还是被动模式,都是对于agent端来说的,而且,主动模式与被动模式可以同时存在,并不冲突

  • 管理员可以在agent端使用一个名为zabbix_ sender的工具,测试是否能够向server端发送数据。
  • 管理员可以在server端使用一个名为zabbix_ get的工具,测试是否能够从agent端拉取数据

10.常见进程

zabbix­_agentd:客户端守护进程,负责收集客户端数据,例如cpu负载、内存、硬盘使用情况等。

zabbix_get:zabbix工具,单独使用的命令,通常在Server或者Proxy端执行获取远端客户信息的命令。通常客户排错。例如在Server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

zabbix_sender:zabbix工具,用于发送数据给Server或者Proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

zabbix­­_proxy:zabbix代理守护进程。功能类似Server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到Server里。

zabbix­_java­_gateway:Java网关,类似agentd,但是只用于Java方面。它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到Server或者proxy。

发布了184 篇原创文章 · 获赞 7 · 访问量 3599

猜你喜欢

转载自blog.csdn.net/weixin_43936969/article/details/105076951