ZABBIX实现原理及架构详解

简介:

ZABBIX是完全开源的工具,整合了CACTI和NAGIOS等特性。

zabbix功能很强大,如何理解zabbix的功能,我们可以和cacti、nagios的功能对比一下:

  • cacti是一款数据采集,数据存储,外加web界面展示的工具,它负责阈值范围内的实时变化,但是对超过阈值的告警功能很薄弱

    • 优点:实时监控数据变化,以web页面的方式呈现,更直观。

    • 缺点:告警不及时

  • nagios是一款告警功能很强大的工具,它不关心阈值范围内的变化,只关心状态变化(超过阈值),然后报警。报警方式通过邮件,短信等。

    • 优点:告警反映迅速。

    • 缺点:监控主机数量有限,承载低

  • zabbix    =   cacti   +  nagios

    • 优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。

    • 缺点:2.2版本带宽占用大但是升级到2.4版本后更节省了带宽资源,其它再无发现。

 

zabbix监控功能的实现

监控主机zabbix有专用的agent,可以监控Linux,Windows等 
监控网络设备zabbix通过SNMP,ssh(不多用) 
 可监控对象

    • 设备:服务器,路由器,交换机

    • 软件:OS,网络,应用程序

    • 主机性能指标监控

    • 故障监控: down机,服务不可用,主机不可达

 

支持数据库存储类型

abbix-database: MySQL, PGSQL(postgreSQL)、Oracle、DB2、SQLite

 

Zabbix架构中的组件

zabbix-server: C语言 
zabbix-agent: C语言 
zabbix-web:GUI,用于实现zabbix设定和展示,PHP开发 
zabbix-proxy: 分布式监控环境中的专用组件

 

监控流程

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

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

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

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

【主动监测】通信过程如下:

zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分:

 获取ACTIVE ITEMS列表

  • Agent打开TCP连接(主动检测变成Agent打开)

  • Agent请求items检测列表

  • Server返回items列表

  • Agent 处理响应

  • 关闭TCP连接

  • Agent开始收集数据

主动检测提交数据过程如下:

  • Agent建立TCP连接

  • Agent提交items列表收集的数据

  • Server处理数据,并返回响应状态

  • 关闭TCP连接

【被动监测】通信过程如下:

  • Server打开一个TCP连接

  • Server发送请求agent.ping\n

  • Agent接收到请求并且响应<HEADER><DATALEN>1

  • Server处理接收到的数据1

  • 关闭TCP连接

这里,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。

那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:

1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。

2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。

 

常用的监控架构平台

1、server-agentd模式:

这个是最简单的架构了,常用于监控主机比较少的情况下。

2、server-proxy-agentd模式:

这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。

下图描述了上述两种方式:

 

Zabbix逻辑架构

  • 定义一个template模板,里面包括多个items,trigger,graphs套用给host或者hostgroups。

  • server监控项目items通过zabbix poller进程(可以有多个进程实现并发处理)包括snmp,agent协议收集被监控主机信息。

  • 如果阈值超过triggers触发器规定,就是形成一个events事件,然后actions处理动作(包括运行预先定制的脚本,不成功发送email或SMS)。

  • 在服务器升级的时候提前设定maintenance维护模式不对服务器产生告警通知。 
    通过逻辑拓扑图展示工作流程

Zabbix Server启动后都有那些进程?



本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/1963871,如需转载请自行联系原作者
相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
1349 0
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
9月前
|
存储 监控 算法
园区导航系统技术架构实现与原理解构
本文聚焦园区导航场景中室内外定位精度不足、车辆调度路径规划低效、数据孤岛难以支撑决策等技术痛点,从架构设计到技术原理,对该系统从定位到数据中台进行技术拆解。
428 0
园区导航系统技术架构实现与原理解构
|
10月前
|
存储 消息中间件 canal
zk基础—2.架构原理和使用场景
ZooKeeper(ZK)是一个分布式协调服务,广泛应用于分布式系统中。它提供了分布式锁、元数据管理、Master选举及分布式协调等功能,适用于如Kafka、HDFS、Canal等开源分布式系统。ZK集群采用主从架构,具有顺序一致性、高性能、高可用和高并发等特点。其核心机制包括ZAB协议(保证数据一致性)、Watcher监听回调机制(实现通知功能)、以及基于临时顺序节点的分布式锁实现。ZK适合小规模集群部署,主要用于读多写少的场景。
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
3356 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
1048 90
|
11月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
369 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析

推荐镜像

更多