Zabbix基本知识梳理(概念篇)

 一、Zabbix概述

在这个云计算与虚拟化的时代,服务器的数量可以说是多的数不胜数,现在的互联网公司,服务器少的十几台,多的几万台
如果是十几台那我们还可以通过编写Shell脚本来监控服务的运行状态或者系统资源的占用情况,如果几万台,这显然是一个费力不讨好的办法
所以我们如果想要实时了解服务器或者网络设备的运行情况,并且在出现问题时,能够第一时间知道并解决,这个时候我们利用监控软件那将会是一个不错的选择
无论是大型企业还是小型企业,就目前而言,有服务器地方的肯定少不了监控,现在的监控工具非常多,比如Nagio与Cacti,这是两个比较常用的监控工具
但是都没有Zabbix灵活,Zabbix可以灵活的监控各种对象,并集Nagio与Cacti两者的优点于一身,所以功能非常强大,介于Zabbix的种种优点,所以它在市场的应用范围非常广泛

那什么是Zabbix呢?Zabbix它是一个基于Web界面的企业级高度集成开源监控工具,同时提供了基于分布式监控的解决方案,非常灵活,可以用来监控各种对象
Zabbix监控的对象可以是Linux系统,也可以是Windows系统,同时也可以是路由器或者交换机等网络设备,并支持多种告警方式
这里需要注意,如果监控的对象是Linux或者Windows服务器,那就是通过部署Agent方式来实现,如果监控的对象是路由器或者交换机等网络设备,那就是通过配置SNMP方式来实现

到目前为止,Zabbix的最新版本为:4.4,中文官方网站为:https://www.zabbix.com/cn/

1)Zabbix功能说明

报警机制:        	支持微信,邮箱,钉钉,短信,等丰富的报警机制
权限系统:              安全的用户认证,某些用户可受限于某些视图
数据收集:        	拥有多种监控架构,可自定义收集数据的频率
网络发现:              支持自动发现网络设备与服务器,Agent自动注册
实时绘图:        	通过内置的绘图方法实现监控数据实时绘图
数据存储:        	使用数据库来存储数据,历史数据的存储周期可自定义,也可以定期删除过期的历史数据

2)Zabbix监控对象

主机监控:   		  磁盘,内存,CPU,系统运行时间,系统进程数,系统负载情况
应用程序:   		  服务运行状态,并发连接数,请求数,消息队列的字节数
硬件监控:   		  服务器温度,电压,风扇的转速
网卡监控:   		  带宽使用情况,流入与流出以及错误的数据包数,Ping的往返时间以及成功率

3)Zabbix数据采集

C/S模式:客户端/服务器

B/S模式:浏览器/服务器

Zabbix使用C/S模式来采集数据,然后通过B/S模式在Web前端展示和配置

Zabbix服务端:			通过收集Agent与SNMP所发来的数据,写入数据库,然后再通过PHP+Nginx或者PHP+Apache在前端展示
Zabbix客户端:			如果是服务器则通过部署Agent的方式来采集数据,如果是网络设备则通过配置SNMP的方式来收集数据,最后将采集的数据发送给Proxy或Server

4)Zabbix重要组件

Zabbix Server:        负责接收Agent发送报告信息的核心组件,所有的操作均由它组织进行
Satabase storage:     负责存储所有配置信息以及收集的数据
Web interface:        Zabbix GUI接口,多数时候与Zabbix Server运行在同一台主机
Pxory:              代理Zabbix Server收集部分数据,然后转发到Zabbix Server,我们可以把它理解为是一个代理
Agent:                部署在被监控端,负责收集被监控端主机的数据,比如 CPU与内存,MySQL主从状态,然后发送到Server或Proxy端

5)Zabbix守护进程

Zabbix-Server:      服务端守护进程,数据有主动提交也有被动提交,主动提交即Server主动获取数据
Zabbix-agent:       客户端守护进程,用于收集被监控端的数据
Zabbix-get:         使用Zabbix-get获取客户端的内容的方式来做故障排查
Zabbix-sender:      用于发送数据给Server或proxy,用于耗时比较长的检查
Zabbix-proxy:       Zabbix代理守护进程,功能类似Server,唯一不同的是,它就像一个中转站,需要把收集的数据主动或者被动的提交到Server上去
zabbix-java-gateway:  Zabbix2.0之后引入的一个功能,类似于Agent,但是它只用于Java方面,并且它只能主动的去获取数据,而不能被动,数据最终也会提交到Server或者Proxy

6)Zabbix监控术语

主机:		       需要监控的服务器或者网络设备,可由IP地址或者域名指定
主机组:		    可以看作是主机的逻辑容器,主机组中可以包含主机,同时也可以包含模板
监控项:		    定义的监控指标,这些数据来自于被监控对象,比如监控MySQL主从就是一个监控项
触发器:		    可以理解为表达式,用于评估监控对象的特定监控项内接收到的数据是否在合理范围,即阈值,接收的数据量大于阈值时,触发器状态将从OK转Problem,当数据再次恢复到合理范围,又转变为OK
事件:		       触发器的状态改变时都会生成一个事件,该事件包含了触发器状态变更的信息,发生时间以及触发器的新状态,触发器会创建两种类型的事件,即:正常(OK),问题(Problem)
模板:		       用于定义被监控主机的预设条目集合,通常包含了监控项,触发器,应用,同时模板也可以直接链接至某个主机
应用:		       应用是一组监控项的集合
媒介:		       发送通知的手段,比如可以用邮件发送,以及短信发送
通知:		       通过选定的媒介,向用户发送有关某个事件的信息
动作:		       对于特定事件事先所定义的处理方法,比如发送通知何时执行操作

7)Zabbix监控架构

Server-Client:       暂且称它为SC架构,这是Zabbix较为简单的架构,监控与被监控节点之间不通过任何代理,直接由Server与Agent进行数据交互
Master-Node-Client:  暂且称它为MNC架构,这种架构每个Node是一个Server,它们有自己的配置文件,Node下面可以接Proxy,也可以直接与Agent进行交互
Server-Proxy-Client: 暂且称它为SPC架构,Proxy没有前端,本身也不存放数据,只是将Agent转发过来的数据暂时存放,最终还是要交给Server,这种架构一般用于跨机房或者跨网络

下图很直观的展示了Zabbix的监控架构:

【只是为了打发时间】

猜你喜欢

转载自www.cnblogs.com/lvthinks/p/12362800.html