Prometheus架构详解

1 Prometheus简介

Prometheus 是一个开源的系统监控报警工具套件,它最初由SoundCloud开发,并于2016年成为CNCF(云原生计算基金会)托管的第二个项目(第一个是kubernetes)。Prometheus 以其简单高效的方式收集指标而闻名,能更好地与容器平台、云平台配合,这使得它在现代云原生环境中非常受欢迎。Prometheus 被广泛应用于各种场景中,包括但不限于:

  • 应用性能监控:监控应用程序的健康状态和性能指标。
  • 基础设施监控:监控服务器、存储设备、网络设备等基础设施的状态。
  • 业务监控:监控业务层面的关键性能指标(KPIs)。

Prometheus的主要优势如下:

  • 独立性:Prometheus 服务器本身是一个独立的二进制文件,易于部署和管理。
  • 多维度数据模型:数据以多维键值对的形式存储,便于灵活查询。
  • 无中介:Prometheus 通过HTTP协议直接抓取被监控系统的度量信息,不需要中间代理。
  • 丰富的数据存储:Prometheus 内置的时间序列数据库(TSDB)能够高效存储大量的时间序列数据。
  • 强大的查询语言:PromQL 提供了强大的查询功能,支持复杂的聚合操作。
  • 灵活的告警机制:通过Alertmanager 可以配置复杂的告警规则并处理告警消息。
  • 插件化设计:支持各种Exporter,能够轻松集成到现有系统中。

2 架构

Prometheus的架构设计旨在提供一个简单、高效且可扩展的监控解决方案,核心组件包括Prometheus Server、Exporters、PushGateway、Service Discovery、Alertmanager以及数据可视化工具(如Grafana)等。其整体架构如下图所示:
在这里插入图片描述

  1. 客户端

    • Short-lived jobs:对于那些生命周期较短的任务,可能在Prometheus来pull之前就消失了。Prometheus提供了PushGateway机制。客户端(或服务端)安装官方的PushGateway,这些任务可以将它们的监控数据组织成Key-Value形式并推送到PushGateway,然后Prometheus Server会定期从PushGateway拉取数据。这里需要注意的是PushGateway不一定要安装在被监控端,也可以安装在服务端,甚至是一台不相关的主机上,换句话来说,它只是一个中间转发的媒介,确保即使是在任务结束之后,Prometheus也能获取到必要的监控数据。
    • Jobs supported by Prometheus:Prometheus支持多种服务(如cAdvisor, Kubernetes, Etcd, Gokit等)直接向Prometheus暴露监控数据。这些服务通常被称为“Jobs”,它们通过内置的端点直接与Prometheus交互,无需额外的中间层。
    • Exporter:Exporter是Prometheus生态系统中的重要组成部分。它们通常作为中间层运行在被监控系统旁边,负责从不同的后端系统中提取度量数据,并将其转换为Prometheus可以理解的格式。这样,即使原有的监控目标不直接支持 Prometheus,也可以通过 Prometheus 提供的 Client Library 编写该监控目标的监控采集程序。例如,可以通过 Node Exporter 来监控 Linux 或 Windows 主机的硬件资源使用情况。常用的 Exporter 包括 Mysql Exporter、JMX Exporter、Consul Exporter 等。
  2. Prometheus Server

    Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

    • 数据获取 (Data Retrieval):Prometheus Server 可以通过静态配置的方式来管理其监控的目标,同时也支持结合 Service Discovery 动态地发现和管理监控目标。这种方式允许 Prometheus Server 在网络中自动识别服务实例,并从这些实例中拉取监控数据。
    • 数据存储 (Data Storage):Prometheus Server 内置了时序数据库功能,能够将采集到的监控数据按时间序列的形式存储在本地磁盘上。此外,Prometheus 社区也提供了与外部时序数据库集成的方案,以满足特定场景下的存储需求。
    • 数据查询 (Data Querying):Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。
  3. Server discovery

    Prometheus为了适应动态变化的环境,提供了服务发现机制来自动管理监控目标列表。在现代云原生环境中,资源使用方式通常是按需的,这意味着没有固定的监控目标,所有的监控对象(包括基础设施、应用和服务)都在动态变化。对于 Prometheus 这一类基于 Pull 模式的监控系统,显然无法继续使用static_configs的方式静态地定义监控目标。因此,Prometheus 引入了一个中间的代理人(即服务注册中心),这个代理人掌握着当前所有监控目标的访问信息,Prometheus 只需要向这个代理人询问有哪些监控目标即可。这种模式被称为服务发现。

    Prometheus 支持多种服务发现机制,包括但不限于以下几种:

    • Consul:Consul 是一种服务网格工具,可以用来发现和监控服务。Prometheus 可以集成 Consul 来动态发现服务实例,在微服务架构的应用程序中,Consul 常被用作服务发现注册软件,Prometheus 与其集成从而动态发现需要监控的应用服务实例。
    • DNS SD:DNS 服务发现是一种基于 DNS 的服务发现机制,适用于那些使用 DNS 解析服务位置的环境。
    • Kubernetes SD:在 Kubernetes 这类容器管理平台中,Kubernetes 掌握并管理着所有的容器以及服务信息,Prometheus 只需要与 Kubernetes 打交道就可以找到所有需要监控的容器以及服务对象。
    • EC2 SD:在 AWS 的 EC2 环境中,Prometheus 可以使用 EC2 服务发现来自动发现和监控运行中的实例。
  4. AlertManager

    AlertManager 是 Prometheus 架构中的另一个关键组件,负责处理来自 Prometheus Server 的警报。支持基于PromQL创建告警规则,当 Prometheus Server 检测到告警规则被触发时,会产生警报,并将这些警报发送给 AlertManager。AlertManager 负责汇总、去重、抑制和路由这些警报,确保警报信息能够及时、准确地通知到相关人员或系统。

    • 汇总与去重:AlertManager 会汇总来自多个 Prometheus Server 的警报,并去除重复的警报,以减少无效的通知。
    • 抑制 (Silencing):管理员可以设置抑制规则,临时屏蔽特定的警报,避免在维护窗口期间产生不必要的警报。
    • 路由 (Routing):AlertManager 支持基于警报标签的路由策略,可以根据预定义的规则将警报发送给不同的接收者或接收组,确保警报能够发送给最合适的人或系统进行处理。
    • 通知 (Notification):AlertManager 支持多种通知方式,包括电子邮件、PagerDuty、OpsGenie、WeChat Work 等,也可以通过Webhook自定义告警处理方式,以便快速响应警报。

    Prometheus 自带的 AlertManager 模块可以与诸如 PagerDuty 这样的商业化服务集成,实现警报和邮件的发送功能。然而,在国内使用 AlertManager 结合 PagerDuty 可能会遇到一些不便。因此,通常的做法是将Prometheus的数据集成到 Grafana 中进行展示,并在 Grafana 中配置警报,以实现更简便的本地化警报管理。

  5. 监控数据可视化

    监控数据可视化是监控系统不可或缺的一部分,它帮助用户直观地理解系统的健康状况和性能表现。Prometheus Web UI是Prometheus内置的一个可视化管理界面,通过Prometheus UI用户能够轻松的了解Prometheus当前的配置,监控任务运行状态等。但在生态系统中常用的数据可视化工具是 Grafana,它是一个开源的度量仪表板和可视化工具,支持多种数据源,包括 Prometheus,使得用户可以轻松地创建图表和仪表板来展示监控数据。Grafana 不仅限于数据展示,还可以配置警报。用户可以在 Grafana 中设置基于 Prometheus 数据的警报规则,当监控数据达到预设的阈值时,可以触发警报。Grafana 可以通过多种渠道发送警报通知,包括邮件、短信、Webhook 等,确保问题能够被及时发现并处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539871.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

华为云服务综合实验

一、实验需求 本次实验内容基于华为云平台模拟企业web集群的构建,其中涉及的知识点包括Linux系统知识、nginx服务的安装及配置应用、云数据库 RDS(Relational Database Service,简称RDS)、虚拟私有云vpc、安全组、SFS弹性文件服务器以及负载均衡等。要求学生通过本…

基于SSM的“大学生兼职平台”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“大学生兼职平台”的设计与实现(源码数据库文档开题报告) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统结构图 兼职平台首页 企业信息 用户注册界面 在线留…

光伏场地建设规划 - 华为OD统一考试(E卷)

2024华为OD机试(C卷D卷E卷)最新题库【超值优惠】Java/Python/C合集 题目描述 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公…

Android中SharedPreferences 的基本使用

1.SharedPreferences简介 SharedPreferences 是 Android 平台为应用开发者提供的一个轻量级的存储辅助类&#xff0c;用来保存应用的一些常用配置&#xff0c;它提供了 putString()、putString(Set<String>)、putInt()、putLong()、putFloat()、putBoolean() 六种数据类…

uniapp+renderJS+google map开发安卓版APP非小程序

背景需求 需要在uniapp中接入google地图,研究了一番,都没有找到合适的,现在说一下教程。 效果图 前期工作 这两点缺一不可,否则你啥也看不到。 1、电脑安装L-O-U梯 用于访问G-OO-G-LE的API或者创建google map key。 2、手机安装L-O-U梯 用于显示google地图。我就是手…

二叉树(下)

目录 判断树是否相同 判断树是不是另一棵树的子树 二叉树翻转 判断平衡二叉树 二叉树层序遍历 这篇主要提供一些关于二叉树例题的讲解&#xff0c;如果对二叉树及其基本操作有疑问的可以转至&#xff1a; 二叉树&#xff08;上&#xff09;-CSDN博客二叉树&#xff08;中&…

苹果手机删除的视频怎么恢复?记住这3个秘诀

我们的手机相册中保存着大量珍贵的视频&#xff0c;这些视频记录着日常生活的美好时刻。但是&#xff0c;如果不小心删除了怎么办呢&#xff1f;别担心&#xff0c;今天我们将揭示3个解决手机删除的视频怎么恢复问题的秘诀&#xff0c;下面&#xff0c;跟着小编的步伐&#xff…

Google Gemini 与 OpenAI 激烈竞赛:语音 AI 与未来智能体的技术演进

引言 最近&#xff0c;人工智能领域频频传出令人震惊的消息&#xff0c;尤其是在Google Gemini 和OpenAI两大巨头的竞争中&#xff0c;语音AI和未来智能体的技术发展更是成为焦点。视频中的相关报道提到&#xff0c;Google已经将其最新的语音助手Google Gemini Alive推广给更多…

兔子检测系统源码分享

兔子检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

SpringBoot+vue集成sm2国密加密解密

文章目录 前言认识SM2后端工具类实现引入依赖代码实现工具类&#xff1a;SM2Util 单元测试案例1&#xff1a;生成服务端公钥、私钥&#xff0c;前端js公钥、私钥案例2&#xff1a;客户端加密&#xff0c;服务端完成解密案例3&#xff1a;服务端进行加密&#xff08;可用于后面前…

【AI视频】Runway Gen-2:图文生视频与运动模式详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;仅图片生成视频方法一&#xff1a;通过Midjourney生成图片方法二&#xff1a;通过Runway预览生成图片注意点 &#x1f4af;图加文生成视频方式一&#xff1a;Midjourney…

DRAFTSIGHT® 2025 新增功能TOP10

1导入 STEP 文件 * • 让所有用户都能从本地磁盘导入 STEP 文件。 • 通过导入 STEP 设计数据&#xff0c;加快 3D 设计工作流程。 优点 通过导入 STEP 3D 模型&#xff0c;现在设计有了更多可能&#xff0c;工作流程效率也得到了提高。 2表格增强 * • 体验增强的表格功能…

全国各省山峰分布SHP数据

数据是GIS的血液&#xff01; 我们在《中国主要山脉矢量示意图分享》和《755M全球山脉数据集分享》文中&#xff0c;分享了全球和全国的山脉分布数据。 现在再为你分享全国各省山峰分布SHP数据&#xff0c;你可以在文末查看该数据的领取方法。 全国各省山峰分布 全国各省山…

【每天学点AI】一个例子带你了解Python装饰器到底在干嘛!

今天我们来聊聊一种能给你的代码变得“加料”的神器——Python装饰器。 就像一杯咖啡&#xff0c;原本它是苦的&#xff0c;为了让它符合我的口味&#xff0c;我给它添加了糖&#xff0c;添加之后就完美的符合了我的口味。 那么&#xff0c;装饰器又是如何给代码进行“加料”呢…

首席数据官的起源?首席数据官CDO职能及对公司价值?

首席数据官&#xff08;CDO&#xff09;的角色诞生于数字化转型的大背景之下。 美国引领了这一趋势&#xff0c;芝加哥在2011年任命了首位市政级首席数据官&#xff0c;紧接着2013年&#xff0c;联邦政府也设立了相应的职位。 到了2019年1月&#xff0c;特朗普签署的《基于循…

Image matting入门

概念 matting就是扣图&#xff0c;本质是预测前景与背景&#xff0c;将前景扣出来。主要应用于影视行业&#xff0c;如拍电影绿幕扣图。和图像分割的区别在于多一个模糊地带&#xff0c;非01分类&#xff0c;变成了预测alpha通道。前景F&#xff0c;背景B&#xff0c;图像I可以…

【OceanBase诊断调优】—— 断连接问题根因分析

背景 当前用户请求执行的链路主要如下&#xff0c;请求从客户端发送到ObProxy&#xff0c;ObProxy将请求路由到对应的ObServer节点&#xff0c;ObServer处理请求发送回包给ObProxy&#xff0c;ObProxy回给客户端。目前整条链路上都可能发生断连接的场景&#xff0c;比如请求处…

【C++ 高并发内存池】高并发内存池项目简介

文章目录 1. 高并发内存池解决的问题2. 内存碎片3. 定长内存池 1. 高并发内存池解决的问题 ⚽概念&#xff1a;高并发内存池是一种专门设计用于高并发环境下的内存管理机制。它的原型是Google的一个开源项目tcmalloc&#xff0c;全称Thread-Caching Malloc&#xff0c;实现了高…

关于SpringBoot项目使用maven打包由于Test引起的无法正常打包问题解决

一、问题描述 在日常工作中&#xff0c;在接手项目时&#xff0c;项目未必是“正常”的&#xff0c;一般平常搭建项目&#xff0c;都不会采用一键式生成的方式&#xff0c;现在说下旧项目&#xff0c;可能项目结构并不是那么简洁&#xff0c;通常都带有与main同层级的test&…

基于Springboot+vue实现的Cosplay论坛系统

基于springbootvue实现的Cosplay论坛系统 &#xff08;源码L文ppt&#xff09;4-066 2.3 系统功能分析 Cosplay论坛系统中采用了Java的springboot框架进行开发&#xff0c;在数据库上选择MYSQL&#xff0c;在功能上Cosplay论坛系统我划分为了普通用户管理模…