ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Operator K8s事件监控对接实操

Operator K8s事件监控对接实操 Prometheus Operator K8s事件监控对接实操技术栈Prometheus Operator v0.73.x Prometheus v2.51.x Grafana v10.4.x Kubernetes v1.32.13操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案Prometheus Operator K8s事件监控对接实操操作环境K8s 集群版本 v1.32.13已部署 kube-prometheus-stack v0.73.x命名空间 monitoring包含 Prometheus、Alertmanager、Grafana、node-exporter、kube-state-metricsPrometheus 持久化存储 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. 监控 K8s 系统组件# kube-prometheus-stack 默认已监控 # - APIServer: 通过 apiserver ServiceMonitor # - ControllerManager: 需要创建 Service 暴露 metrics # - Scheduler: 需要创建 Service 暴露 metrics # - etcd: 需要配置证书和 Service # - kubelet: 通过 kubelet ServiceMonitor默认 # - CoreDNS: 通过 coredns ServiceMonitor # 为 ControllerManager 创建 Service cat cm-service.yaml EOF apiVersion: v1 kind: Service metadata: name: kube-controller-manager namespace: kube-system labels: k8s-app: kube-controller-manager spec: selector: component: kube-controller-manager ports: - port: 10257 targetPort: 10257 name: https-metrics EOF kubectl apply -f cm-service.yaml # etcd 监控需配置证书 # 创建包含 etcd 证书的 Secret # 在 Prometheus CRD 中引用 secret 配置 scrape验证流程# 1. 验证监控组件运行 kubectl get pods -n monitoring # prometheus、alertmanager、grafana、node-exporter、kube-state-metrics 均为 Running ​ # 2. 验证 Prometheus Targets kubectl -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. 验证 Grafana kubectl -n monitoring port-forward svc/kps-grafana 3000:80 curl -s http://admin:admin123localhost:3000/api/datasources # 返回已配置的 Prometheus 数据源 ​ # 6. 验证 Alertmanager kubectl -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 是否匹配
返回列表