zabbix基础整理

2019-11-01  本文已影响0人  唯爱熊

什么是zabbix

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

架构

Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。
参考官档:https://www.zabbix.com/documentation/4.0/zh/manual/introduction/overview

Server

Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。

数据库

所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。

Web 界面

为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。

Proxy

Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。

Agent

Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。

数据流

另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 *Server X *创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。

监控功能

主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制;

监控主机 zabbix 有专用的 agent,可以监控Linux、Windows、FreeBSD等。

监控网络设备 zabbix 通过多种协议进行数据采集:

1.SNMP:(Simple Network Management Protocol),这是一个非常古老的且通用的监控协议,几乎任何设备都支持用此方式进行系统监控。

2.Agent:在被监控端安装专门的监控程序,将数据采集后通过Agent发送至Server。

3.IPMI:智能平台管理接口。可在常用的服务器上看到类似以太网口的接口。

4.JMX:Java Management Extensions

可监控对象:

监控硬件设备:服务器、路由器、交换机等
监控系统 :CPU、内存、磁盘、网络、进程、 TCP等
监控服务:tmcat、 redisnginx、 php、 to、 memcache、 mysql等
监控WEB :请求时间、响应时间、加载时间等
故障监控:宕机,服务器不可用,主机不可达等

zabbix工作原理

一个完整的监控系统所需指标:

1.采样:周期性的获取某个被监测指标的相关数据

2.存储:将采集到的数据存储在指定的存储系统中,Zabbix默认是MySQL

对于数据的存储可分为两大类:

历史数据:可理解为过去某一时间点的数据

趋势数据:可理解为过去某一段时间的数据

3.展示:采集完数据后,为了使数据能更直观的展现在用户面前,可将采集到的数据做二次处理,做成各类图形。Zabbix就是使用的PHP程序将采集的数据通过Web GUI直观的展示给用户。

4.报警:当监控的指标出现异常时需要监控系统能自动的发出告警信息,甚至在出现报警后能自动完成修复。

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

zabbix agent 需要安装到被监控的主机上,它负责定期收集各项数据,并发送到 zabbix server 端,zabbix server 将数据存储到数据库中,zabbix web 根据数据在前端进行展示和绘图。这里 agent 收集数据分为主动和被动两种模式:

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

被动:server 向 agent 请求获取监控项的数据,agent 返回数据。

zabbix的工作进程

参考官档:https://www.zabbix.com/documentation/4.0/zh/manual/concepts

默认情况下 zabbix 包含6个进程:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选的,这个需要单独安装。

zabbix_agentd

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

zabbix_get

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

zabbix_sender

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

zabbix_server

zabbix 服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server(说明:当然不是数据都是主动提交给zabbix_server,也有的是 server 主动去取数据)

zabbix_proxy

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

zabbix_java_gateway

zabbix2.0之后引入的一个功能。顾名思义:Java网络,类似agentd,但是只用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者proxy。

zabbix常用监控架构

在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构:server-client、master-node-client、server-proxy-client 三种。

1.server-client 架构

zabbix的最简单的架构,监控服务器和被监控机之间不经过任何代理,直接由 zabbix server 和 zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境。

2.server-proxy-client 架构

其中 proxy 是server、client 之间沟通的一个桥梁,proxy 本身没有前端,而且其本身并不存放数据,只是将 agentd 发来的数据暂时存放,而后再提交给server,该架构经常是和 master-node-client 架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控。

3.master-node-client 架构

该架构是 zabbix 最复杂的监控架构,适用于跨网络、跨机房、设备较多的大环境。每个node 同时也是一个 server 端,node下面可以接 proxy,也可以直接接client。node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向 master 同步,master 的故障或损坏不影响 node 其下的架构的完整性。


上一篇下一篇

猜你喜欢

热点阅读