Prometheus架构组件

news2025/4/16 14:07:02

Prometheus 是一个开源的监控与告警系统,专为动态的云原生环境(如 Kubernetes)设计。其架构基于主动拉取(Pull)模型,支持多维数据模型和灵活的查询语言(PromQL)。以下是 Prometheus 的核心架构组件及其工作原理的详细说明:


1. Prometheus 核心架构图

+-------------------+     +------------+     +--------------+
| 监控目标          |     | Prometheus |     | Alertmanager |
| (Exporters/Apps)  |<----| Server     |---->|              |
+-------------------+     +-----+------+     +-------^------+
                                |                    |
                                | 存储/查询          | 告警通知
                                v                    |
                         +-------------+     +-------v------+
                         | 可视化工具  |     | 通知渠道      |
                         | (Grafana)   |     | (Email/Slack)|
                         +-------------+     +--------------+

2. 核心组件与功能

(1) Prometheus Server
  • 功能:数据抓取、存储、处理查询和触发告警。
  • 子模块
    • Retrieval(抓取模块):根据配置定期从监控目标(如 Exporters、应用程序)拉取指标数据。
    • Time Series Database(TSDB):高效存储时间序列数据(默认本地存储,支持远程写入)。
    • HTTP Server:提供 API 和 Web UI 用于查询(PromQL)和管理。
(2) 监控目标(Targets)
  • Exporters:将第三方系统(如 Node、MySQL、Redis)的指标转换为 Prometheus 可读格式。
    • 示例:Node Exporter(主机监控)、cAdvisor(容器监控)。
  • Instrumented Applications:应用程序直接通过客户端库(如 Go、Java、Python)暴露指标。
    • 暴露端点:http://<app>:<port>/metrics
  • Pushgateway:处理短暂任务(如批处理作业)的指标推送。
    • 任务将指标推送到 Pushgateway,Prometheus 再从 Pushgateway 拉取。
(3) Alertmanager
  • 功能:接收 Prometheus Server 生成的告警,进行去重、分组、静默,并通过渠道(邮件、Slack 等)通知。
  • 流程
    1. Prometheus Server 根据告警规则(alerting_rules.yml)触发告警。
    2. 告警发送至 Alertmanager。
    3. Alertmanager 按配置的路由策略分发告警。
(4) 服务发现(Service Discovery)
  • 作用:动态发现监控目标(如 Kubernetes Pods、云服务实例)。
  • 支持的发现机制
    • Kubernetes:自动发现集群内的 Pods、Services、Endpoints。
    • Consul/Etcd:基于服务注册中心发现目标。
    • 文件发现:通过 JSON/YAML 文件静态配置目标列表。
    • 云服务商:AWS EC2、Azure VM 等。
(5) 数据存储与远程集成
  • 本地存储:默认使用 TSDB 存储数据,适合单节点中小规模场景。
  • 远程存储:通过 remote_writeremote_read 集成外部存储(如 Thanos、Cortex、InfluxDB),解决长期存储和高可用问题。

3. 工作流程

  1. 配置:定义抓取目标(scrape_configs)和告警规则(alerting_rules.yml)。
  2. 服务发现:动态识别需要监控的端点(如 Kubernetes Pod IP)。
  3. 数据抓取:Prometheus Server 定期(如 15s)从目标拉取指标(HTTP 请求 /metrics)。
  4. 存储:抓取的指标存储于本地 TSDB,支持压缩和分块管理。
  5. 查询与告警
    • 用户通过 PromQL 查询数据(如 rate(http_requests_total[5m]))。
    • 触发告警规则时,发送告警至 Alertmanager。
  6. 告警处理:Alertmanager 过滤、分组并通知用户。
  7. 可视化:通过 Grafana 或 Prometheus Web UI 展示监控仪表盘。

4. 关键特性

(1) 拉取模型(Pull-based)
  • 优势:集中控制抓取频率,避免客户端推送压力。
  • 适用场景:可控的网络环境,如内部服务监控。
(2) 多维数据模型
  • 数据结构:每个时间序列由 指标名称 + 标签组 唯一标识。
    • 示例:http_requests_total{method="POST", path="/api", status="200"}
  • 灵活性:通过标签过滤、聚合数据(如按 method 统计请求量)。
(3) PromQL 查询语言
  • 功能:支持实时聚合、切片、预测和连接操作。
    • 示例查询:sum(rate(container_cpu_usage_seconds_total[5m])) by (pod)
(4) 动态服务发现
  • 自动化:适应云环境中 IP 频繁变化的场景(如 Kubernetes Pod 重启)。

5. 典型应用场景

  1. Kubernetes 集群监控:结合 kube-state-metricscAdvisor 监控容器资源使用。
  2. 微服务性能分析:通过客户端库(如 Spring Boot Actuator)暴露应用指标。
  3. 主机与中间件监控:使用 Node ExporterMySQL Exporter 监控基础设施。
  4. 批处理作业监控:通过 Pushgateway 收集短期任务的运行状态。

6. 局限性及解决方案

局限性解决方案
单点存储瓶颈使用 Thanos/Cortex 实现远程存储和联邦集群
仅支持拉取模型结合 Pushgateway 处理短暂任务
无长期数据保留集成远程存储(如 InfluxDB)
告警依赖静态配置结合服务发现动态更新告警目标

总结

Prometheus 的架构以 高效拉取模型多维数据动态服务发现 为核心,结合 Alertmanager 和可视化工具,为云原生应用提供了强大的监控能力。尽管存在单点存储和长期数据管理的挑战,但通过与生态系统工具(如 Thanos、Grafana)集成,可扩展为生产级监控解决方案。

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

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

相关文章

算法思想之位运算(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之位运算(一) 发布时间&#xff1a;2025.4.12 隶属专栏&#xff1a;算法 目录 算法介绍六大基础位运算符常用模板总结 例题位1的个数题目链接题目描述算法思路代码实现 比特位计数题目链接题目描述算法思路…

【基于Servlet技术处理表单】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 功能架构2. 核心代码实现3. 测试用例 总结 一、实验背景与目的 本次实验旨在深入理解Servlet工作原理&#xff0c;掌握JSP与Servlet的协同开发&#xff0c;实现前端表单与后端数据处理的交互。具体目标包括&#xff1a;设…

[OS] mmap | fd是什么 | inode机制 | vfs封装

Linux 下一切皆文件 * 统统抽象为文件&#xff0c;系统封装一层结构体之后&#xff0c;通过指针来访问 * 文章后面的 几个思考题都挺好的 * 后面涉及到的inode 机制&#xff0c;去年暑假的这篇文章&#xff0c;有详细的记录到过 【Linux】(26) 详解磁盘与文件系统&#xff1a;从…

STL详解 - vector的模拟实现

目录 一、整体设计 1.1 核心结构 1.2 迭代器实现 二、核心接口实现 2.1 构造函数系列 &#x1f334;默认构造 &#x1f334;迭代器范围构造 &#x1f334;元素填充构造 2.2 拷贝控制 &#x1f335;拷贝构造函数 &#x1f335;赋值运算符&#xff08;现代写法&#xf…

C++第三方库【JSON】nlohman/json

文章目录 优势使用API从文件中读取json从json文本创建json对象直接创建并操作json对象字符串 <> json对象文件流 <> json对象从迭代器读取像使用STL一样的访问STL容器转化为 json数组STL容器 转 json对象自定义类型转化为 json对象 限制 优势 直观的语法&#xff…

超细的ollama下载以及本地部署deepseek项目

Ollama 是一个开源的本地化大语言模型&#xff08;LLM&#xff09;运行和部署工具&#xff0c;专注于让开发者能够快速、高效地在本地运行和管理各种开源大语言模型&#xff08;如 LLaMA、Mistral、GPT 系列等&#xff09;。它提供了一个统一的接口&#xff0c;简化了模型下载、…

【Sequelize】关联模型和孤儿记录

一、关联模型的核心机制 1. 关联类型与组合规则 • 基础四类型&#xff1a; • hasOne&#xff1a;外键存储于目标模型&#xff08;如用户档案表存储用户ID&#xff09; • belongsTo&#xff1a;外键存储于源模型&#xff08;如订单表存储用户ID&#xff09; • hasMany&…

Sentinel实战教程:流量控制与Spring Boot集成

Sentinel实战教程:流量控制与Spring Boot集成 1. Sentinel简介与核心概念 1.1 什么是Sentinel? Sentinel是阿里巴巴开源的流量控制组件,主要用于微服务架构中的流量防护。它通过限流、熔断、热点防护等机制,帮助系统在高并发场景下保持稳定运行。 1.2 核心功能与术语 流…

循环神经网络 - 扩展到图结构之递归神经网络

本文我们来学习递归神经网络(Recursive Neural Network&#xff0c;RecNN)&#xff0c;其是循环神经网络在有向无循环图上的扩展 。 递归神经网络是一类专门设计来处理具有层次结构或树形结构的数据的神经网络模型。它与更常见的循环神经网络&#xff08;Recurrent Neural Net…

Maven超级详细安装部署

1.到底什么是Maven&#xff1f;搞清楚这个 Maven 是一个项目管理工具&#xff0c;主要用于 Java 项目的构建、依赖管理和文档生成。 它基于项目对象模型&#xff08;POM&#xff09;&#xff0c;通过 pom.xml 文件定义项目的配置。 &#xff08;简单说破&#xff1a;就是工程…

电机控制-隆博戈观测器(Luenberger state observer)

本文围绕基于无传感器控制策略的状态观测器展开&#xff0c;介绍其在电机领域的应用、原理、性能表现及无传感器驱动的优劣&#xff1a; 应用场景&#xff1a;适用于燃油泵、风扇等大量固定转速和低成本应用场景。工作原理&#xff1a;状态观测器利用完整的电机微分模型&#…

RK3506+net9+VS2022跨平台调试C#程序

下载GetVsDbg.sh &#xff0c;这脚本会下载一个压缩包&#xff0c;然后解压缩&#xff0c;设置x权限等等。但是目标板子连不上&#xff0c;就想办法获取到下载路径&#xff0c;修改这个脚本&#xff0c;显示这个下载链接后&#xff0c;复制一下&#xff0c;用电脑下下来 修改好…

【16】数据结构之基于树的排序算法篇章

目录标题 选择排序简单选择排序树形选择排序 堆排序堆的定义Heap小跟堆大根堆堆的存储堆的代码设计堆排序的代码设计 排序算法综合比较 选择排序 基本思想&#xff1a;从待排序的序列中选出最大值或最小值&#xff0c;交换该元素与待排序序列的头部元素&#xff0c;对剩下的元…

华熙生物亮相消博会,这次又带来了什么样的变化?

首先&#xff0c;从展示层面来看&#xff0c;华熙生物在消博会上构建科技桥梁&#xff0c;展台主视觉展示糖生物学发展历程与自身发展交织历程&#xff0c;这象征着中国生物科技企业从产业突围到定义全球标准的蜕变。这一展示不仅提升了华熙生物的品牌形象&#xff0c;更向外界…

大象机器人推出myCobot 280 RDK X5,携手地瓜机器人共建智能教育机

摘要 大象机器人全新推出轻量级高性能教育机械臂 myCobot 280 RDK X5&#xff0c;该产品集成地瓜机器人 RDK X5 开发者套件&#xff0c;深度整合双方在硬件研发与智能计算领域的技术优势&#xff0c;实现芯片架构、软件算法、硬件结构的全栈自主研发。作为国内教育机器人生态合…

【初阶数据结构】——算法复杂度

一、前言 1、数据结构是什么&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的⽅式&#xff0c;指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤&#xff0c;所以我们要学各式各样的数据结构&#xff0c; 如&…

Google-A2A协议全面解析:一文掌握Agent-to-Agent协议的核心与应用

前言&#xff1a; 在当今人工智能技术飞速发展的时代&#xff0c;智能体&#xff08;Agent&#xff09;已悄然融入我们生活的各个角落。无论是个人智能助手&#xff0c;还是企业的自动化工具&#xff0c;各类AI代理的应用愈发广泛。但目前这些智能体之间大多处于孤立状态&…

Linux-服务器添加审计日志功能

#查看audit软件是否在运行(状态为active而且为绿色表示已经在运行) systemctl start auditd #如果没有在运行的话,查看是否被系统禁用 (audit为0表示被禁用) cat /proc/cmdline | grep -w "audit=0" #修改/etc/default/grub里面audit=0 改为audit=1 #更新GRUB…

基于机器视觉的多孔零件边缘缺陷检测(源码C++、opencv、凸包、凸缺陷检测)

&#x1f451;主页&#xff1a;吾名招财 &#x1f453;简介&#xff1a;工科学硕&#xff0c;研究方向机器视觉&#xff0c;爱好较广泛… ​&#x1f4ab;签名&#xff1a;面朝大海&#xff0c;春暖花开&#xff01; 基于机器视觉的多孔零件边缘缺陷检测&#xff08;源码C、ope…

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

一、引言 CSS3 作为最新的 CSS 标准&#xff0c;引入了众多新特性&#xff0c;如弹性布局、网格布局等&#xff0c;极大地丰富了网页样式的设计能力。然而&#xff0c;CSS3 的样式规则繁多&#xff0c;记忆所有规则对于开发者来说几乎是不可能的任务。在实际开发中&#xff0c…