Zabbix和Prometheus之间的优势

news/2024/5/19 1:19:44 标签: zabbix, prometheus, 运维开发, 腾讯云, openstack, 网络
一、简介

1、Prometheus

Kubernetes 自从 2012 年开源以来便以不可阻挡之势成为容器领域调度和编排的领头羊。

Kubernetes 是 Google Borg 系统的开源实现,于此对应 Prometheus 则是 Google BorgMon 的开源实现。

Prometheus 是由 SoundCloud 开发的开源监控报警系统和时序列数据库。Prometheus 由两个部分组成,一个是监控报警系统,另一个是自带的时序数据库(TSDB)。

2016 年,由 Google 发起的 Linux 基金会旗下的原生云基金会(Cloud Native Computing Foundation)将 Prometheus 纳入其第二大开源项目。

Prometheus 在开源社区也十分活跃,在 GitHub 上拥有两万多 Star,并且系统每隔一两周就会有一个小版本的更新,而 Prometheus 与它的“师兄”Kubernetes 都自带云原生的光环,天然能够友好协作。

2、Zabbix

Zabbix 官方的发行版本时间可以追朔到 2012 年,时间上比 Prometheus 早了四年。

Zabbix 是由 Alexei Vladishev 开源的分布式监控系统,是一个企业级的分布式开源监控方案。能够监控各种网络参数以及服务器健康性和完整性的软件。使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。可以快速反馈服务器问题。基于已存储的数据,提供了数据可视化功能。

二、架构

1、Prometheus

Prometheus 的基本原理是通过 HTTP 周期性抓取被监控组件的状态,任意组件只要提供对应的 HTTP 接口并且符合 Prometheus 定义的数据格式,就可以接入 Prometheus 监控。

Prometheus Server 负责定时在目标上抓取 Metrics(指标)数据并保存到本地存储里面。

Prometheus 采用了一种 Pull(拉)的方式获取数据,不仅降低客户端的复杂度,客户端只需要采集数据,无需了解服务端情况,而且服务端可以更加方便的水平扩展。

如果监控数据达到告警阈值 Prometheus Server 会通过 HTTP 将告警发送到告警模块 alertmanger,通过告警的抑制后触发邮件或者 webhook。

Prometheus 支持 PromQL 提供多维度数据模型和灵活的查询,通过监控指标关联多个 tag 的方式,将监控数据进行任意维度的组合以及聚合。

2、Zabbix

Zabbix 主要Server和数据库2部分构成,Zabbix Agent属于可选组件根据需要选择即可。Zabbix Server 可以通过提供多种监控手段监视提供对远程服务器/网络状态的监视,数据收集等功能。可参考之前博文介绍此处不过多阐述。

核心组件主要是 Agent 和 Server,其中 Agent 主要负责采集数据并通过主动或者被动的方式采集数据发送到 Server/Proxy,除此之外,为了扩展监控项,Agent 还支持执行自定义脚本。

Server 主要负责接收 Agent 或者其它协议采集的监控信息,进行数据存储,展示、触发告警等。

Zabbix Server 将收集的监控数据存储到 Zabbix Database 中。Zabbix Database 支持常用的关系型数据库,如果 MySQL、PostgreSQL、Oracle 等,默认是 MySQL,Zabbix Web友好的前端页面展现及配置操作。在Zabbix 4.2 版本发布开始支持 TimescaleDB 时序数据库,如没有这方面的专业知识暂不建议使用。

三、优势与劣势

从开发语言为了应对高并发和快速迭代的需求,监控系统的开发语言已经慢慢从 C 语言转移到 Go。Go 凭借简洁的语法和优雅的并发,在 Java 占据业务开发,C 占领底层开发的情况下,准确定位中间件开发需求,在当前开源中间件产品中被广泛应用

从系统成熟度角度,Zabbix属于老牌监控系统,Zabbix在1998年就出现了系统功能比较稳定,成熟度较高。Prometheus 是最近几年才诞生新的监控工具,在功能在不断迭代更新,但站在巨人的肩膀之上,在架构设计上借鉴了很多老牌监控系统的经验。

从数据存储角度,Zabbix 采用关系数据库保存,极大限制了Zabbix采集性能,Prometheus自研一套高性能时序数据库,在V3版本可以达到每秒千万级别的数据存储,通过对接第三方时序数据库扩展历史数据存储。

配置复杂度Prometheus只有一个核心server组件,一条命令便可以启动,相比而言其它系统配置相对麻烦些。

社区活跃度目前Zabbix比较活跃,但基本都是国内的公司参与,Prometheus 在这方面占据绝对优势,社区活跃度虽然不如,但是受到 CNCF 的支持,后期的发展值得期待。

容器监控角度Prometheus相比Zabbix优势好很多,毕竟Kubernetes和Prometheus是Google Borg 的两个开源系统在适配程度可想而知。Prometheus的动态发现机制,不仅可以支持 Swarm 原生集群,还支持 Kubernetes 容器集群的监控,是目前容器监控最好解决方案。

四、结论

从整理来看,Zabbix的成熟度更高上手更快,但集成性较弱导致灵活性较差。特别是监控数据的复杂度增加后,Zabbix定制难度很高后续适配行较差,即便做了定制也没法完全利用历史数据。除非Zabbix只作为采集器数据全部存入数据仓库进行消费。

Prometheus 基本上是相反的前期上手难度可能大些,但定制灵活度高,数据也有更多的聚合可能,熟悉后使用难度远小于 Zabbix。

如果传统架构环境使用Zabbix作为基础监控系统是可行的,特别在服务器相关监控方面,占据一定优势。但如果是云环境Zabbix定制成本远高于Prometheus需考虑系统的稳定性、事件准确性的担忧。Prometheus正在成为主导及容器监控方面的标配,相信在未来可见的时间内将被广泛应用。

总而言之还是需要根据自身情况结合分析选择自己合适的监控工具满足符合企业业务的需要才是王道。

探索技术无限可能,博主具有丰富监控模板资源及开发能力和项目管理经验,欢迎添加交流一起探讨,解决你的技术难题!

微信号:king_songax


http://www.niftyadmin.cn/n/5282057.html

相关文章

如何使用不同的纹理贴图制作逼真的 3D 图形?

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在过去的很多年里,我一直在视觉效果行业工作,…

零基础学C语言——函数

这是一个C语言系列文章,如果是初学者的话,建议先行阅读之前的文章。笔者也会按照章节顺序发布。 上一篇我们介绍了表达式和语句,这一篇我们介绍C语言中的函数。 首先,我们先来看个例子: int add(int num1, int num2)…

【记录版】SpringBoot下ObjectProvider类源码及其执行机制解读

主题: SpringBoot ObjectProvider DependencyDescriptor ConstructorResolver 背景: SpringBoot是目前最受欢迎的开源框架之一,其自动配置特性让我们从以前繁复的配置中解放出来,如果愿意了解某组件封装的机制,其自…

Bytetrack学习笔记

概述 ByteTrack是字节跳动发布的一个MOT跟踪算法(“MOT”是“Multi-Object Tracking”)。先前的MOT算法一般在完成当前帧的目标检测后只会保留置信度比较大的检测框用于进行目标跟踪,比如图中置信度为0.9和0.8的目标框。而在BYTE中&#xff…

前端传输formDate格式的数据,后端不能用@RequestBody接收

写了个接口,跟前端对接,前端说怎么一直415的报错 我寻思不对啊,我swagger都请求成功了,后来发现前端一直是以formdata格式提交的数据,这样我其实是可以不加RequestBody的; 知识点: RequestBody…

心有暖阳,笃定前行,2024考研加油

2024考研学子,所有的付出终有收获,阳光终将穿透阴霾,终将上岸。 当曙光破晓的时候,你可曾记得那些星月为伴,孤独为友,理想为灯来指引前行之路的日子,那些默默扎根的日子终将化作星星在未来闪闪发…

基于Java SSM框架实现列车火车高铁票务信息管理系统项目【项目源码+论文说明】

基于java的SSM框架实现列车火车高铁票务信息管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被…

vcruntime140_1.dll文件下载安装方法分享,如何安全修复vcruntime140_1.dll

遇到vcruntime140_1.dll文件遗失是用户在使用Windows操作系统时较为普遍遭遇到的一个问题,它归类于动态链接库(DLL)文件缺失的常见情形。在今天的内容里,我们将深入探讨如何正确地下载和安装vcruntime140_1.dll文件,以…