Prometheus 基础入门文档

news2025/5/23 12:06:03

目录

概述

核心组件详解

Prometheus Server

Exporters

Alertmanager

存储解决方案

安装与配置

安装方法

基本配置

示例配置文件

数据模型与查询语言

数据模型

PromQL 查询语言

示例查询

告警系统

告警规则

示例告警规则

Alertmanager 配置

示例 Alertmanager 配置文件

集成与可视化

与 Grafana 集成

配置步骤

与 Kubernetes 集成

示例 Kubernetes 配置

其他集成

性能优化与高可用

性能优化

高可用架构

联邦集群配置示例

安全配置

示例安全配置

最新版本特性

版本发布周期

新特性与改进

社区与生态系统

结语


概述

Prometheus 是一个开源的监控和告警系统,最初由 SoundCloud 公司开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。作为一个专为云原生环境设计的监控系统,Prometheus 在容器化和微服务架构中表现出色。它通过从被监控目标的指标HTTP端点抓取指标来收集数据,具有多维数据模型、灵活查询语言、高效时序数据库和现代化告警方法等特点。

Prometheus 的核心组件包括服务器(Server)、告警管理器(Alertmanager)、各种导出器(Exporter)以及存储解决方案。作为一个开源项目,Prometheus 拥有活跃的社区支持和丰富的生态系统,与 Kubernetes、Grafana 等工具深度集成,为现代 IT 基础设施提供了全面的监控解决方案。

核心组件详解

Prometheus Server

Prometheus Server 是 Prometheus 组件中的核心部分,负责实现对监控数据的获取、存储以及查询。它通过 HTTP 协议从各种数据源中抓取指标数据,并将这些数据存储在本地的时间序列数据库(TSDB)中。Prometheus Server 可以通过静态配置管理监控目标,也可以配合服务发现机制动态发现监控目标。

Prometheus Server 的主要功能包括:

  • 数据采集:通过 HTTP 协议从各种 Exporter 拉取指标数据
  • 数据存储:使用本地时间序列数据库存储监控数据
  • 数据查询:提供灵活的 PromQL 查询语言进行数据查询和分析
  • 告警规则:定义告警触发条件,当条件满足时触发告警
  • 配置管理:通过 YAML 配置文件管理监控任务和告警规则

Exporters

Exporters 是一类将各种系统和应用的指标数据暴露为 Prometheus 可以抓取的 HTTP 服务的工具。它们负责收集被监控系统的指标数据,并将其转换为 Prometheus 标准格式。常见的 Exporters 包括:

  • Node Exporter:监控 Linux 主机的系统资源使用情况,如 CPU、内存、磁盘和网络等
  • Process Exporter:监控进程的资源使用情况
  • MySQL Exporter:监控 MySQL 数据库的运行状态
  • Blackbox Exporter:用于网络探测,如 HTTP、DNS、TCP 等服务的可达性测试
  • Kubernetes Exporter:监控 Kubernetes 集群的资源使用情况

Alertmanager

Alertmanager 是 Prometheus 的告警管理组件,负责处理 Prometheus 生成的告警信息。它接收来自 Prometheus 的告警通知,并根据配置的路由规则将告警发送到指定的通知渠道(如邮件、Slack、钉钉等)。Alertmanager 的主要功能包括:

  • 告警路由:根据告警标签将告警路由到不同的通知渠道
  • 抑制重复告警:防止在短时间内重复发送相同的告警
  • 告警分组:将相关的告警信息分组发送
  • 延迟抑制:在指定的时间段内抑制告警通知

存储解决方案

Prometheus 提供了多种存储解决方案,以满足不同的数据持久化需求:

  • 本地存储:使用默认的本地时间序列数据库存储监控数据
  • 远程存储:将监控数据写入远程存储系统,如 Amazon S3、Google Cloud Storage 等
  • 联邦集群:通过联邦机制将监控数据聚合到一个中心 Prometheus 实例中

安装与配置

安装方法

Prometheus 提供了多种安装方式,以适应不同的环境和需求:

  1. 二进制文件安装:
    • 从 Prometheus 官方网站下载对应操作系统的二进制包
    • 解压后即可使用,这是最直接的安装方式,适合对环境有充分控制权的用户
  2. Docker 容器安装:
    • 使用官方提供的 Prometheus 和 Alertmanager 镜像
    • 适合在容器化环境中部署
  3. Kubernetes 集群安装:
    • 使用官方提供的 Helm Chart 或 YAML 配置文件
    • 适合在 Kubernetes 集群中部署

基本配置

Prometheus 的核心配置文件是 prometheus.yml,主要包含以下部分:

  • Global 配置:定义全局配置参数,如时间格式、时区等
  • Scrape_configs:定义监控任务,包括目标地址、抓取间隔、标签等
  • Rule_files:定义告警规则文件路径
  • Remote_write:配置远程存储,指定远程存储的地址和配置
  • Federation:配置联邦集群,指定需要聚合的 Prometheus 实例
示例配置文件
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

rule_files:
  - alert.rules

数据模型与查询语言

数据模型

Prometheus 的数据模型基于多维时间序列,每个时间序列由以下部分组成:

  • 指标名称:标识监控的指标名称
  • 时间戳:记录指标数据采集的时间
  • 值:记录指标数据的数值
  • 标签:一组键值对,用于标识时间序列的维度信息

Prometheus 支持多种类型的指标,包括:

  • 计数器:只能增加的数值,如请求数量
  • 计时器:记录时间的数值,如请求处理时间
  • 直方图:记录数值分布的统计信息,如请求处理时间分布
  • 摘要:记录数值分布的统计摘要,如请求数、平均值、中位数等

PromQL 查询语言

PromQL(Prometheus Query Language)是 Prometheus 提供的查询语言,用于查询和分析时间序列数据。PromQL 支持以下主要操作:

  • 选择操作:通过指标名称和标签选择时间序列数据
  • 聚合操作:对时间序列数据进行聚合,如求和、平均、最大值等
  • 函数操作:调用内置函数对时间序列数据进行处理
  • 比较操作:对时间序列数据进行比较,如大于、小于、等于等
示例查询
  • 查询所有 CPU 使用率:
sum by (instance) (node_cpu_seconds_total)
  • 查询内存使用率:
(node_memory_used_bytes{unit="MiB"} / node_memory_total_bytes{unit="MiB"}) * 100
  • 查询 HTTP 请求数量:
increase(http_requests_total[5m])

告警系统

告警规则

Prometheus 的告警规则允许你基于 PromQL 表达式定义告警触发条件。当 PromQL 表达式查询结果持续多长时间(During)后触发告警。告警规则文件是 YAML 文件,定义了告警条件和告警信息。

示例告警规则
groups:
  - name: example
    rules:
      - alert: High CPU Usage
        expr: (node_cpu_seconds_total{mode="user"} / node_cpu_seconds_total) * 100 > 90
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "High CPU Usage"
          description: "CPU usage is above 90% for more than 5 minutes."

Alertmanager 配置

Alertmanager 负责处理和分发告警信息。其配置文件主要包含以下部分:

  • Global 配置:定义全局参数,如通知渠道的默认参数
  • Route 配置:定义告警路由规则,根据告警标签将告警路由到不同的通知渠道
  • Inhibit 配置:定义抑制规则,防止在短时间内重复发送相同的告警
  • Receivers 配置:定义通知渠道,如邮件、Slack、钉钉等
示例 Alertmanager 配置文件
global:
  resolve_timeout: 5m

route:
  receiver: "email"
  routes:
    - match:
        severity: "critical"
      receiver: "slack"

receivers:
  - name: "email"
    email_configs:
      - to: "alert@example.com"
        send_resolved: true

  - name: "slack"
    slack_configs:
      - channel: "#alerts"
        send_resolved: true

集成与可视化

与 Grafana 集成

Grafana 是一个流行的可视化工具,支持与 Prometheus 集成,提供丰富的监控仪表板和可视化效果。要将 Prometheus 与 Grafana 集成,需要在 Grafana 中添加 Prometheus 数据源。

配置步骤
  1. 在 Grafana 中点击左侧导航栏中的 “Data Sources”
  2. 点击 “Add data source”
  3. 选择 “Prometheus” 作为数据源类型
  4. 填写 Prometheus 服务器的 URL(默认为 http://localhost:9090
  5. 点击 “Save & Test” 完成配置

与 Kubernetes 集成

Prometheus 提供了专门的 Kubernetes Exporter,用于监控 Kubernetes 集群的资源使用情况。在 Kubernetes 集群中部署 Prometheus 时,可以使用官方提供的 Helm Chart 或 YAML 配置文件。

示例 Kubernetes 配置
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: node-exporter
spec:
  selector:
    matchLabels:
      app: node-exporter
  endpoints:
    - port: http
      interval: 30s

其他集成

Prometheus 拥有丰富的生态系统,支持与多种工具和平台集成,包括:

  • Prometheus Operator:在 Kubernetes 集群中管理 Prometheus 实例
  • Thanos:提供 Prometheus 的长期数据存储和全局查询能力
  • Cortex:提供可扩展的 Prometheus 服务,支持大规模监控数据存储和查询

性能优化与高可用

性能优化

Prometheus 的性能优化主要关注减少资源消耗、提高查询效率和降低基数问题。以下是一些性能优化的最佳实践:

  • 合理设置抓取间隔:根据监控需求设置合理的抓取间隔,避免频繁抓取导致资源消耗过高
  • 配置数据保留策略:设置适当的数据保留时间,避免存储空间不足
  • 优化标签使用:减少高基数标签的使用,避免内存消耗过高
  • 使用联邦集群:将监控数据分散到多个 Prometheus 实例中,提高系统性能
  • 配置远程存储:将历史数据存储到远程存储系统中,释放本地存储空间

高可用架构

为了提高 Prometheus 的可用性,可以采用以下高可用架构:

  • 简单 HA 架构:部署多个 Prometheus 实例,每个实例具有相同的配置,通过负载均衡器对外提供服务
  • 简单 HA + 远程存储:在简单 HA 架构的基础上,配置远程存储,将监控数据写入远程存储系统
  • 联邦集群架构:部署多个 Prometheus 实例,通过联邦机制将监控数据聚合到一个中心 Prometheus 实例中
联邦集群配置示例
federate:
  - targets:
      - 'http://prometheus1:9090'
      - 'http://prometheus2:9090'

安全配置

Prometheus 提供了多种安全功能,用于保护监控数据和告警信息。以下是一些安全配置的最佳实践:

  • Basic Auth 验证:配置 Basic Auth 验证,限制对 Prometheus UI 和 API 的访问
  • TLS 加密:配置 TLS 加密,保护数据传输过程中的安全性
  • 访问控制:配置访问控制列表,限制对特定监控数据和告警信息的访问
  • 静默告警:配置静默告警,防止在指定时间段内发送告警信息
示例安全配置
security:
  auth:
    type: basic
    basic:
      users:
        - name: admin
          password: admin123

最新版本特性

版本发布周期

Prometheus 采用定期发布新版本的策略,通常每 4 周发布一个新版本。Prometheus 的版本号遵循语义化版本控制(Semantic Versioning),格式为 MAJOR.MINOR.PATCH

Prometheus 提供了长期支持版本(LTS),只接收错误、安全性和文档修复,时间窗口为一年。LTS 版本使得依赖 Prometheus 的公司可以限制升级风险,同时仍然获得重要的安全修复。

新特性与改进

Prometheus 的新版本通常包含以下改进:

  • 性能提升:优化查询引擎和存储引擎,提高系统性能
  • 功能增强:增加新的功能和特性,如支持新的指标类型、提供新的查询函数等
  • 安全性改进:修复已知的安全漏洞,提高系统安全性
  • 兼容性改进:提高与各种系统和工具的兼容性,如 Kubernetes、Grafana 等

社区与生态系统

Prometheus 拥有活跃的开源社区和丰富的生态系统,社区成员积极参与开发、测试和文档编写等工作。Prometheus 的生态系统包括以下组件:

  • Exporters:将各种系统和应用的指标数据暴露为 Prometheus 可以抓取的 HTTP 服务
  • 可视化工具:如 Grafana,提供丰富的监控仪表板和可视化效果
  • 告警工具:如 Alertmanager,提供现代化的告警功能
  • 存储解决方案:如 Thanos、Cortex,提供可扩展的数据存储和查询能力

结语

Prometheus 是一个功能强大、灵活多变的监控和告警系统,适用于各种规模和复杂度的 IT 基础设施。通过合理配置和使用,Prometheus 可以帮助运维人员全面了解系统状态、及时发现潜在问题、优化系统性能和提高可用性。

随着技术的发展和用户需求的变化,Prometheus 也在不断演进和改进,提供更好的功能和性能。通过积极参与社区和生态系统,Prometheus 将继续引领监控领域的创新和发展。

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

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

相关文章

【苍穹外卖】Day01—Mac前端环境搭建

目录 一、安装Nginx (一)安装Homebrew (二)Homebrew安装Nginx 1. 执行安装命令: 2. 验证安装: (三)启动与停止Nginx 二、配置Nginx 1. 替换nginx.conf 2. 替换html文件夹 三…

软考中级软件设计师——设计模式篇

一、设计模式核心分类 设计模式分为 3 大类,共 23 种模式(考试常考约 10-15 种): 分类核心模式考试重点创建型模式工厂方法、抽象工厂、单例、生成器、原型单例模式的实现(懒汉、饿汉)、工厂模式的应用场…

Axure系统原型设计列表版方案

列表页面是众多系统的核心组成部分,承担着数据呈现与基础交互的重要任务。一个优秀的列表版设计,能够极大提升用户获取信息的效率,优化操作体验。下面,我们将结合一系列精心设计的列表版方案图片,深入探讨如何打造出实…

微软全新开源命令行文本编辑器:Edit — 致敬经典,拥抱现代

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、引言:命令行的新利器二、Edit:致敬经典,拥抱现代1. 命令行的“新升级”2. 为什么要有 Edit?三、核心功能与特性一览1. 完全开源、MIT 许可证…

年会招标抽奖活动软件———仙盟创梦IDE

年会是企业一年的总结与欢庆时刻,而抽奖环节更是点燃全场气氛的关键。如何让抽奖环节既大气又充满仪式感?选对抽奖软件至关重要!本文精心挑选了 3 款兼具实用性与氛围感的年会抽奖软件,从界面设计到功能特色,全方位为你…

智防火灾,慧控能耗:物联网赋能金融行业电气安全革新

摘要 随着金融行业对电气安全需求的不断提升,传统用电管理模式已难以满足现代金融机构对火灾防控、能耗管理和智能运维的要求。本文基于物联网、云计算及大数据分析技术,提出一套针对金融行业的安全用电解决方案。该方案通过智能化硬件部署与平台化管理…

在 JavaScript 中正确使用 Elasticsearch,第二部分

作者:来自 Elastic Jeffrey Rengifo 回顾生产环境中的最佳实践,并讲解如何在无服务器环境中运行 Elasticsearch Node.js 客户端。 想获得 Elastic 认证?查看下一期 Elasticsearch Engineer 培训的时间! Elasticsearch 拥有大量新…

更新nvidia-container-toolkit 1.17.7-1后,运行--gpus all 卡死问题

用Arch每日一滚,结果今天用 sudo docker run -it --runtimenvidia --gpus all居然卡死了,排雷排了几小时,才从开源库发现问题 nvidia-container-toolkit 1.17.7-1 是有问题的,而且在ubuntu和arch上都存在问题。 只好Downgrade 1.…

通义灵码 2.5 版深度评测:智能编程的边界在哪里?

通义灵码 2.5 版深度评测:智能编程的边界在哪里? 评测目标 全面测试智能体模式:是否真正具备自主决策能力?MCP 工具集成体验:能否提升开发效率?AI 记忆自感知能力:是否能真正理解开发者习惯&a…

电商项目-商品微服务-规格参数管理,分类与品牌管理需求分析

本文章介绍:规格参数管理与分类与品牌管理的需求分析和表结构的设计。 一、规格参数管理 规格参数模板是用于管理规格参数的单元。规格是例如颜色、手机运行内存等信息,参数是例如系统:安卓(Android)后置摄像头像素&…

零基础设计模式——创建型模式 - 工厂方法模式

第二部分:创建型模式 - 工厂方法模式 (Factory Method Pattern) 上一节我们学习了单例模式,它关注如何保证一个类只有一个实例。现在,我们来看另一个重要的创建型模式——工厂方法模式。它关注的是如何创建对象,但将创建的决定权…

蓝桥杯5130 健身

问题描述 小蓝要去健身,他可以在接下来的 1∼n 天中选择一些日子去健身。 他有 m 个健身计划,对于第 i 个健身计划,需要连续的 天,如果成功完成,可以获得健身增益 si​ ,如果中断,得不到任何…

电商虚拟户:重构资金管理逻辑,解锁高效归集与智能分账新范式

一、电商虚拟户的底层架构与核心价值 在数字经济浪潮下,电商交易的复杂性与日俱增,传统账户体系已难以满足平台企业对资金管理的精细化需求。电商虚拟户作为基于银行或持牌支付机构账户体系的创新解决方案,通过构建“主账户子账户”的虚拟账户…

腾讯2025年校招笔试真题手撕(二)

一、题目 最近以比特币为代表的数字货币市场非常动荡,聪明的小明打算用马尔科夫链来建模股市。如图所示,该模型有三种状态:“行情稳定”,“行情大跌”以及“行情大涨”。每一个状态都以一定的概率转化到下一个状态。比如&#xf…

安装完dockers后就无法联网了,执行sudo nmcli con up Company-WiFi,一直在加载中

Docker服务状态检查 执行 systemctl status docker 确认服务是否正常 若未运行,使用 sudo systemctl start docker && sudo systemctl enable docker 网络配置冲突 Docker会创建docker0虚拟网桥,可能与宿主机网络冲突 检查路由表 ip route sho…

【深度学习新浪潮】2025年谷歌I/O开发者大会keynote观察

1. 2025年谷歌I/O开发者大会keynote重点信息 本次Google I/O大会的核心策略是降低AI使用门槛与加速开发者创新,通过端侧模型(Gemini Nano)、云端工具(Vertex AI)和基础设施(TPU)的全链路优化,进一步巩固其在生成式AI领域的领先地位。同时,高价订阅服务和企业级安全功…

案例分享——福建洋柄水库大桥智慧桥梁安全监测

项目背景 洋柄水库桥位于社马路(社店至马坪段)上,桥梁全长285m,桥梁中心桩号K15082跨径组合为 14x20m,全桥宽:33.8m,分左右双幅:上部结构采用空心板梁:桥采用柱式墩。 通过对桥梁结构长时间的定期观测,掌握桥梁在混凝…

鸿蒙操作系统架构:构建全场景智慧生态的分布式操作系统

鸿蒙操作系统(HarmonyOS)是华为推出的面向全场景的分布式操作系统,旨在为智能手机、智能家居、智能穿戴、车机等多种设备提供统一的操作系统平台。鸿蒙架构的核心设计理念是“一次开发,多端部署”,通过分布式技术实现设备间的无缝协同。本文将深入探讨鸿蒙的分层架构、分布…

NBA足球赛事直播源码体育直播M35模板赛事源码

源码名称:NBA足球赛事直播源码体育直播M35模板赛事源码 开发环境:帝国cms7.5 空间支持:phpmysql 带软件采集,可以挂着自动采集发布,无需人工操作! 演示地址:https://www.52muban.com/shop/184…

自动化测试报告工具

自动化测试报告工具大全与实战指南 📊🔥 在自动化测试流程中,测试用例的执行只是第一步,而测试报告的生成与可视化则是闭环的重要一环。无论是个人项目还是团队协作,高质量的测试报告都能帮助我们快速定位问题、衡量测…