# Prometheus Operator Prometheus数据丢失排查实操技术栈Prometheus Operator v0.73.x Prometheus v2.51.x Grafana v10.4.x Kubernetes v1.32.13操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案# Prometheus Operator Prometheus数据丢失排查实操## 操作环境- K8s 集群版本 v1.32.13已部署 kube-prometheus-stack v0.73.x- 命名空间 monitoring包含 Prometheus、Alertmanager、Grafana、node-exporter、kube-state-metrics- Prometheus 持久化存储 50Gi数据保留 15 天- Grafana 已配置 Prometheus 数据源导入 K8s 监控仪表盘- Alertmanager 已配置邮件和企业微信通知渠道## 对接原理Prometheus Operator 通过 CRDPrometheus、Alertmanager、ServiceMonitor、PodMonitor、PrometheusRule声明式管理 Prometheus 监控栈。Operator 监听这些 CRD自动生成 Prometheus 配置文件并以 StatefulSet 运行 Prometheus。ServiceMonitor 通过标签选择器发现 Service自动生成 scrape 配置抓取 /metrics 端点。PrometheusRule 定义告警规则和记录规则Operator 自动加载到 Prometheus。Alertmanager 处理 Prometheus 触发的告警通过路由分组、抑制、静默后发送到通知渠道。Grafana 通过 Prometheus 数据源查询指标以仪表盘可视化展示。## 详细步骤**1. Prometheus 基础操作**bash# 查看监控组件kubectl get pods -n monitoring# 访问 Prometheus UIkubectl -n monitoring port-forward svc/kps-prometheus 9090:9090# 查看 Targets# Status Targets确认所有端点 UP# 查看告警# Alerts 页面查看触发的告警规则# 执行 PromQL 查询# Graph 页面输入 up点击 Execute**2. Grafana 基础操作**bashkubectl -n monitoring port-forward svc/kps-grafana 3000:80# 访问 http://localhost:3000# 查看已导入仪表盘# 浏览 K8s 集群监控、节点监控、Pod 监控# 查看告警状态# Alerting Alert rules## 验证流程bash# 1. 验证监控组件运行kubectl get pods -n monitoring# prometheus、alertmanager、grafana、node-exporter、kube-state-metrics 均为 Running# 2. 验证 Prometheus Targetskubectl -n monitoring port-forward svc/kps-prometheus 9090:9090 curl -s http://localhost:9090/api/v1/targets | jq .data.activeTargets | length# 返回活跃 Target 数量# 3. 验证指标采集curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result | length# 返回 up 指标时间序列数量# 4. 验证告警规则curl -s http://localhost:9090/api/v1/rules | jq .data.groups | length# 返回规则组数量# 5. 验证 Grafanakubectl -n monitoring port-forward svc/kps-grafana 3000:80 curl -s http://admin:admin123localhost:3000/api/datasources# 返回已配置的 Prometheus 数据源# 6. 验证 Alertmanagerkubectl -n monitoring port-forward svc/kps-alertmanager 9093:9093 curl -s http://localhost:9093/api/v2/status | jq .config.original# 返回 Alertmanager 配置## 排错方案- Prometheus Target DOWN检查 ServiceMonitor 标签选择器是否匹配 Servicemetrics 端口是否正确网络是否可达RBAC 权限是否允许 endpoints 发现- 指标缺失确认应用暴露 /metrics 端点ServiceMonitor 的 port 名称匹配 Service 端口名称interval 间隔内是否有数据- 告警未触发检查 PromQL 表达式是否正确for 持续时间是否满足PrometheusRule 标签是否被 Prometheus 选择release: kps- 告警通知未收到检查 Alertmanager 路由配置receiver 配置是否正确通知渠道SMTP/Webhook是否可达告警是否被抑制或静默- Grafana 无数据检查 Prometheus 数据源配置URL 是否正确查询是否返回数据时间范围选择是否正确- Prometheus OOM检查 scrape 指标基数减少高基数标签增加 resources.limits.memory调整 retention 时间- Prometheus 重启后数据丢失检查是否配置持久化存储PVCstorageClassName 是否可用PV 是否绑定成功- ServiceMonitor 不生效确认 namespaceSelector 配置matchNames 是否包含目标命名空间Prometheus CRD 的 serviceMonitorSelector 是否匹配