2025,每天10分钟,跟我学K8S(四十三)- Prometheus(一)

        前面内容,讲述了很多K8S的知识点,也了解了K8S的基础使用。从本章节开始,我们一起来学习下K8S中的监控系统。作为一名合格的devopser,知道监控是生产环境不可或缺的,我们需要时刻了解系统环境的各种指标,不管是node的指标,还是pod中运行的应用的指标,在他们出现问题时候,能第一时间通过告警的方式通知到我们。

        而Prometheus作为和K8S都是云原生计算基金会出品的产品,现在基本是是K8S监控的标配了。从本章开始,我们就一起来学习它。

什么是Prometheus

        Prometheus 是一款开源的 ​​时序数据库与监控告警系统​​,专为云原生和分布式环境设计,其核心功能是通过多维数据模型和灵活的查询语言实现对系统、应用及基础设施的全方位监控。它将所有信息都存储为时间序列数据;因此实现一种Profiling监控方式,实时分析系统运行的状态、执行时间、调用次数等,以找到系统的热点,为性能优化提供依据。

一、核心特性

​1.​多维数据模型​
每个监控指标由 ​​指标名称(Metric Name)​​ 和 ​​标签(Labels)​​ 唯一标识,支持从多维度(如请求方法、状态码、服务实例等)对数据进行分析。例如,http_requests_total{method="GET", status="200"} 可细分统计不同请求的成功率。

2.​​PromQL 查询语言​
提供类似 SQL 的语法,支持复杂的数据聚合、数学运算和实时计算。例如,计算 CPU 使用率:

100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

种灵活性使其适用于趋势分析和故障排查。

​3.​主动拉取(Pull)与推送(Push)结合​

  • ​拉取模式​​:Prometheus Server 定期从配置的目标(如 Exporter、应用程序端点)主动抓取指标。
  • ​推送模式​​:通过 Pushgateway 支持短生命周期任务(如批处理作业)的指标上报。

4.​​动态服务发现​
支持 Kubernetes、Consul 等服务发现机制,自动识别并监控动态变化的服务实例,减少手动配置成本。

5.​​告警管理​
Alertmanager 负责处理告警的去重、分组和路由,支持邮件、Webhook、Slack 等多种通知渠道。

二、核心组件

​组件​​功能​​适用场景​
​Prometheus Server​核心服务,负责数据采集、存储(TSDB 时序数据库)和查询(PromQL)长期运行的监控目标(如服务器、容器)
​Exporter​将第三方系统(如 MySQL、Redis)的指标转换为 Prometheus 兼容格式间接监控非原生支持的应用或服务
​Pushgateway​临时存储短生命周期任务的指标数据,供 Server 拉取

批处理作业、一次性任务
​Alertmanager​处理告警规则触发后的通知逻辑,支持静默、抑制和路由策略告警分级管理、多级通知渠道整合
​Grafana​可视化工具,提供丰富的仪表盘模板展示 Prometheus 数据数据趋势分析、多维度可视化

三、版本选择

        目前常用的Prometheus 有3个版本提供选择,Prometheus Operator 、 kube-prometheus、kube-prometheus-stack。其内在核心都是 Prometheus ,由不同的人群在维护。

Prometheus Operator

        Prometheus Operator: 在 Kubernetes 上手动一步步搭建,然后管理 Prometheus 集群。该项目的目的是简化和自动化基于 Prometheus 的 Kubernetes 集群监控堆栈的配置。适合定制化方案,但是需要一步步的搭建。

kube-prometheus

        基于 Prometheus Operator 的预配置方案,包含 Prometheus、Alertmanager、Grafana、kube-state-metrics 等组件,提供开箱即用的监控规则和仪表盘,并且已经安排了一个名为 prometheus-k8s 的 prometheus,默认带有警报和规则,几乎一键搭建,减少用户的配置,并且带有其他 prometheus 需要的组件,如:

  • Grafana
  • kube-state-metrics
  • prometheus adapter
  • node exporter
  • ...

kube-prometheus-stack

        kube-prometheus的helm版本,由社区维护的 Helm Chart,整合了 kube-prometheus 的功能,并增加兼容性优化和扩展组件(如 Thanos),支持参数化部署和版本管理

四、适用场景

  1. ​云原生与容器监控​
    与 Kubernetes 深度集成,自动发现 Pod、Service 等资源,监控容器资源使用率(CPU、内存)及微服务性能。

  2. ​微服务架构监控​
    通过服务发现和标签机制,追踪分布式系统中的请求链路、错误率及延迟。

  3. ​基础设施监控​
    收集主机(Node Exporter)、网络设备、存储系统的指标,支持容量规划和故障预警。

  4. ​业务指标监控​
    自定义业务指标(如订单量、用户活跃度),结合 PromQL 实现实时业务分析。

五、优势与局限

  • ​优势​​:

    • ​轻量级​​:单节点部署,不依赖分布式存储。
    • ​高扩展性​​:支持联邦集群(Federation)和远程存储(如 Thanos、Cortex)。
    • ​社区生态​​:CNCF 毕业项目,拥有丰富的 Exporter 和集成工具。
  • ​局限​​:

    • ​数据精度​​:适用于可靠性监控,但不适合需要 100% 准确性的计费场景。
    • ​长期存储​​:原生 TSDB 适合短期数据,长期存储需依赖外部方案。

六、典型工作流程示例

  1. ​数据采集​​:Prometheus Server 定期从 Node Exporter 拉取主机指标。
  2. ​规则评估​​:根据 alert.rules 判断 CPU 使用率是否超阈值。
  3. ​告警触发​​:触发后 Alertmanager 发送邮件通知运维人员。
  4. ​可视化展示​​:通过 Grafana 仪表盘实时查看监控趋势。

工作流程图:

posted @ 2025-04-10 11:08  Devopser06  阅读(114)  评论(0)    收藏  举报  来源