面试口述版:个人对 Prometheus 完整理解

结合 K8s 集群搭建 SRE 智能运维 Agent 的实操项目,我从定位、核心架构、项目落地、踩坑感悟四个层面讲下我对 Prometheus 的理解。

一、核心定位

Prometheus 是一套开源、面向云原生场景的时序监控告警系统,采用 Pull 拉取架构采集指标,配套独立的告警组件 Alertmanager,搭配 Grafana 做可视化,是当前 K8s 生态标准监控方案。 和传统监控最大区别:专门适配容器动态扩缩、多标签多维指标,天生适配 K8s 动态调度的场景,也是我自研 SRE 故障自愈 Agent 的数据来源底座。

二、四大核心核心能力

  1. 多维标签时序数据模型 所有监控指标都由「指标名 + 多组键值标签」组成,比如 kube_pod_container_status_waiting_reason{reason="CrashLoopBackOff",namespace="default",pod="crash-app"}。 标签可以区分命名空间、Pod 名称、故障类型,筛选、聚合数据非常灵活。我项目里 Pod 崩溃告警,就是靠reason="CrashLoopBackOff"这个标签精准过滤故障 Pod。

  2. Pull 拉取式采集架构 Prometheus 服务端主动访问各个服务暴露的/metrics接口拉取指标,而非客户端主动推送。 优势:被监控业务不需要感知监控服务地址,K8s 里通过 ServiceMonitor 自动发现新增 Pod、Deployment,服务扩缩容后监控自动生效,不用改配置,适配容器动态特性。 我项目中 kube-prometheus-stack 会自动创建 ServiceMonitor,自动采集节点、容器、kubelet、API Server 全套指标,无需手动配置采集目标。

  3. PromQL 专用查询语言,核心灵魂 PromQL 支持聚合、过滤、区间计算、速率统计等复杂运算,能精准算出业务、容器资源状态。 在我的项目里有两处关键使用: 一是配置告警规则,通过 PromQL 表达式识别持续崩溃的 Pod; 二是 SRE Agent 主动调用 Prometheus 告警 API,底层也是通过 PromQL 筛选出 FIRING 状态的故障告警,作为 AI 智能体的感知输入。 比如可以快速计算 Pod 近 5 分钟 CPU 使用率、接口错误率、容器异常等待状态。

  4. 分层告警体系(Prometheus 规则 + Alertmanager 分发) 我先在 Prometheus 中基于 PromQL 编写告警规则,当表达式持续满足阈值就生成告警; 告警不会直接推送,而是转发给 Alertmanager,由它统一做去重、分组、静默、路由分发。 整个项目最关键的PodCrashLooping故障告警,就是基于这套机制产出,供给 SRE Agent 抓取、交给 Ollama 大模型判断是否重启 Pod,是整个 AIOps 自愈链路的数据源。

三、项目落地实操经验

我没有手动拆分部署 Prometheus、Grafana、Alertmanager,而是直接使用官方整合的kube-prometheus-stack Helm Chart 一键安装整套监控栈:

  1. Chart 内置全套 K8s 采集规则、ServiceMonitor,自动识别集群内所有节点、Pod、控制器;
  2. 开箱自带大量监控面板模板,Grafana 直接导入就能查看节点资源、容器 CPU / 内存、Pod 生命周期状态;
  3. 部署时通过 Helm values 开启 NodePort,外部虚拟机可直接访问 Prometheus UI 和 Grafana 可视化页面;
  4. 自定义创建PrometheusRule资源,新增 Pod 持续崩溃告警规则,规则持久化存 Git,交给 Argo CD 统一管理,符合 GitOps 规范。

四、实操踩坑与个人感悟

  1. 时序监控强依赖时间同步 NTP 部署完成后 Grafana 所有图表显示 No Data,指标完全不展示。排查很久才找到根源:虚拟机系统时间和宿主机物理机时间不同步。 Prometheus 是时序数据库,所有指标携带时间戳,时间偏移过大时数据无法匹配图表窗口,直接无数据。 这件事让我明白:所有时序监控系统,集群所有节点必须统一同步 NTP 时间,是基础前置条件。

  2. GitOps 规范约束:监控配置全部代码化 自定义告警规则、Grafana 面板、采集配置全部以 YAML 形式存 Git 仓库,由 Argo CD 自动同步更新。禁止登录 Prometheus 页面手动修改规则,保证监控环境可复现、变更可追溯。

  3. Prometheus 是 AIOps 智能运维的数据底座 常规监控只做到 "人看告警、手动处理故障",而我的项目拓展了 Prometheus 能力:让自研 SRE Agent 主动拉取告警数据,送入大模型分析决策,自动删除异常 Pod 完成自愈。 这也让我理解 Prometheus 不只是单纯的可视化监控工具,还可以作为时序数据平台,对接自动化、AI 运维平台,拓展 AIOps 能力。

五、总结

Prometheus 凭借轻量化、云原生适配、灵活的 PromQL 和完整告警链路,成为 K8s 环境监控事实标准。在我的项目中,它既是集群资源可视化监控工具,也是整套 SRE 智能自愈平台的数据源头,打通了「故障采集 - LLM 决策 - 自动恢复」完整链路。同时部署、配置全程遵循 GitOps,所有监控规则代码化,运维规范、可落地到企业生产环境。

相关推荐
KIDULT°3 分钟前
Kubeadm 部署 Kubernetes v1.30.2 实战:Ubuntu24.04 三节点集群 + 排坑记录
ubuntu·云原生·容器·kubernetes·k8s
幼儿园蛋小黄4 分钟前
嵌入式学习总结:从 I2C 到 SPI 的驱动开发实战
驱动开发·学习
老当益壮梁奶奶5 分钟前
驱动学习(二):从零开始:驱动工程搭建与字符设备驱动框架详解(基于IMX6ULL)
c语言·arm开发·驱动开发·嵌入式硬件·学习
欢乐的小猪8 分钟前
Linux命令 chmod
linux·运维·服务器
叶子野格14 分钟前
《FPGA基本知识累积:看开发指南要懂的术语》
学习·fpga开发
qq_2842740517 分钟前
液压泵工作原理与性能参数笔记:能量转换与吸压油三必要条件、压力分级、排量流量与三种效率特性曲线、径向轴向柱塞泵变量原理及配流配油盘(含考点)
笔记·学习·自动化·制造
guo_wen_qiang25 分钟前
云服务器安装MongoDB-资源包安装
运维·服务器·mongodb
Happy_Sharing26 分钟前
Windows虚拟机安装ubuntu后,如何在虚拟机Ubuntu系统中访问Windows文件夹
linux·运维·ubuntu
91440623233 分钟前
安装jenkins遇到的问题总结
运维·jenkins
美味蛋炒饭.34 分钟前
java八股面试(2)
面试·职场和发展