提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会
文章目录
-
- 前言
- [1.1 实验环境](#1.1 实验环境)
- [1.2 流程概述](#1.2 流程概述)
- [1.3 查看基本情况](#1.3 查看基本情况)
- [1.4 创建probe](#1.4 创建probe)
- [1.5 查看prometheus](#1.5 查看prometheus)
- [1.6 grafana添加dashboard](#1.6 grafana添加dashboard)
前言
在运维工作中,实时监测Web服务与接口的可用性、响应性能,是保障业务稳定运行的关键。Prometheus结合Blackbox Exporter是业界常用的外网探测方案,能够高效采集服务状态码、访问耗时等核心指标。本文基于现有监控环境,完整演示HTTP探测监控的搭建流程。整套实操步骤完整清晰,可直观实现服务在线状态与访问时延的常态化监控,也为同类服务监控部署提供实践参考
1.1 实验环境
我的实验环境:
| 主机名 | ip | 作用 |
|---|---|---|
| K8s-master1 | 192.168.13.136 | k8s控制节点 |
| K8s-master2 | 192.168.13.137 | k8s控制节点 |
| K8s-master3 | 192.168.13.138 | k8s控制节点 |
| k8s-node1 | 192.168.13.139 | k8s工作节点 |
| k8s-node2 | 192.168.13.140 | k8s工作节点 |
| NFS | 192.168.13.141 | NFS服务端,提供存储 |
当前,我的高可用 Kubernetes 集群已部署完毕,Prometheus Operator 也已完成安装配置。接下来,我将开始实操,对集群内运行的黑盒程序进行监控配置
1.2 流程概述
黑盒监控是一种 从外部视角主动探测系统可用性 的监控方式。它不关心服务内部状态(如CPU、内存),只模拟真实用户访问,通过发送HTTP请求、Ping、TCP连接等检查目标"能否正常响应"。典型工具如 Blackbox Exporter ,可探测网站状态码、响应时间、SSL证书有效期等,黑盒监控能快速发现服务不可达、接口超时、证书过期等面向用户的实际问题,是保障服务SLA的重要手段
黑盒监控的后续步骤概述如下:
- 检查现有资源状态 :确认
monitoring命名空间下的 Blackbox Exporter Pod 正常运行,Service 已正确暴露 9115(指标)和 19115(探测)端口,且 ServiceMonitor 已关联并确保 Prometheus 能抓取 Exporter 自身指标 - 创建 Probe 资源:定义探测目标(如外部网站)、执行频率、探测模块(如 HTTP 2xx)及 Blackbox Exporter 的访问地址,Prometheus Operator 会自动生成相应配置
- 验证与可视化:Prometheus 开始生成 监控指标,通过 Grafana 导入仪表盘
1.3 查看基本情况
yaml
## 运行 Blackbox Exporter 容器进程
root@k8s-master1:~# kubectl get pod -n monitoring | grep black
blackbox-exporter-7d7666779f-dzcwz 3/3 Running 33 (5h19m ago) 14d
## 为 Blackbox Exporter 提供固定的集群内访问入口
root@k8s-master1:~# kubectl get svc -n monitoring | grep black
blackbox-exporter ClusterIP 10.108.97.138 <none> 9115/TCP,19115/TCP 14d
## 告诉 Prometheus 去抓取该 Service 的 /metrics 端点,监控 Blackbox Exporter 自身的运行状态
root@k8s-master1:~# kubectl get servicemonitor -n monitoring | grep black
blackbox-exporter 14d
1.4 创建probe
probe:定义具体的黑盒探测任务(目标网站、探测间隔、模块),让 prometheus 通过 blackbox exporter 对外部目标进行主动探测
yaml
root@k8s-master1:~/kube-prometheus/manifests# vim blackbox-probe.yaml
apiVersion: monitoring.coreos.com/v1
kind: Probe
metadata:
name: blackbox
namespace: monitoring
spec:
interval: 30s
jobName: blackbox
module: http_2xx
prober:
# 指定Blackbox Exporter的k8s svc地址和端口
url: blackbox-exporter.monitoring.svc:19115
scheme: http
path: /probe
targets:
staticConfig:
# 填写要检测的url,每个字符串就是一个探测目标
static:
- https://www.dgwegfgwe.com
- https://www.jd.com
root@k8s-master1:~/kube-prometheus/manifests# kubectl apply -f blackbox-probe.yaml
1.5 查看prometheus
登录Prometheus页面,我们可以看到配置的url已经被监控

尝试检测probe_http_status_codeHTTP 探测返回的响应状态码
其中https://www.dgwegfgwe.com 响应码为0;https://www.jd.com响应码为200

尝试检测probe_http_duration_secondsHTTP 探测总耗时

1.6 grafana添加dashboard
grafana dashboard官网:https://grafana.com/grafana/dashboards/
登录grafana,添加blackbox适合的dashboard
我选择的dashboard:https://grafana.com/grafana/dashboards/13659-blackbox-exporter-http-prober/




至此,Prometheus Operator 监控 K8S blackbox完毕!
注:
文中若有疏漏,欢迎大家指正赐教。
本文为100%原创,转载请务必标注原创作者,尊重劳动成果。
求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~