ARTICLE DETAIL

资讯详情

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

Prometheus Operator黑盒DNS探测配置实操

Prometheus Operator黑盒DNS探测配置实操 Prometheus Operator黑盒DNS探测配置实操技术栈Prometheus Operator v0.73.x Prometheus v2.51.x Grafana v10.4.x Kubernetes v1.32.13操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案Prometheus Operator黑盒DNS探测配置实操操作环境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. 部署 Blackbox Exporter 黑盒监控# 安装 blackbox-exporter helm install blackbox prometheus-community/prometheus-blackbox-exporter \ --namespace monitoring \ --set config.modules.http_2xx.proberhttp \ --set config.modules.tcp_connect.probertcp \ --set config.modules.icmp.probericmp # 创建 ServiceMonitor 或 additionalScrapeConfigs cat blackbox-sm.yaml EOF apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: blackbox namespace: monitoring labels: release: kps spec: selector: matchLabels: app.kubernetes.io/name: prometheus-blackbox-exporter endpoints: - port: http interval: 30s path: /probe params: module: [http_2xx] target: [https://www.example.com] metricRelabelings: - sourceLabels: [__address__] targetLabel: __param_target - sourceLabels: [__param_target] targetLabel: instance - targetLabel: __address__ replacement: blackbox-prometheus-blackbox-exporter:9115 EOF kubectl apply -f blackbox-sm.yaml # 支持探测HTTP/HTTPS、TCP、ICMP、DNS、gRPC验证流程# 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 是否匹配
返回列表