基于Prometheus的全方位监控平台--黑盒监控Blackbox

Prometheus 监控分为两种:

白盒监控:是指我们日常监控主机的资源用量、容器的运行状态的运行数据。

黑盒监控:常见的黑盒监控包括 HTTP探针TCP探针DnsIcmp等用于检测站点、服务的可访问性、服务的连通性,以及访问效率等。

两者比较

一个完善的监控目标是要能够从白盒的角度发现潜在问题,能够在黑盒的角度快速发现已经发生的问题。

目前支持的应用场景:

一、Blackbox Exporter 部署

Exporter Configmap 定义,可以参考下面两个链接

https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md

https://github.com/prometheus/blackbox_exporter/blob/master/example.yml

首先得声明一个 Blackbox 的 Deployment,并利用 Configmap 来为 Blackbox 提供配置文件。

Configmap:

参考 BlackBox Exporter 的 Github 提供的 示例配置文件

Deployment:

定义 BlackBox 在 Prometheus 抓取设置

下面抓取设置,都存放在 prometheus-config.yaml 文件中,设置可参考

https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml

二、DNS 监控

参数解释:

更新 prometheus-config.yaml配置 :

打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-service-dns 任务;

graph 页面,可以使用 probe_successprobe_duration_seconds 等来检查历史结果。

三、ICMP监控

按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-http-services 任务

四、HTTP 监控(K8S 内部发现方法)

4.1、自定义发现 Service 监控 端口路径

可以如下设置:

然后,需要在 Service 中配置这样的 annotation

示例:Java应用的svc:

按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-http-services 任务

4.2、TCP检测

按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 service-tcp-probe 任务

则需要在service上添加注释必须有以下三行

示例:Java应用的svc:

4.3、Ingress服务的探测(视频中未讲到,扩展+)

则需要在ingress上添加注释必须有以下三行

示例:Java应用的ing:

五、HTTP 监控(监控外部域名)

按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-external-website 任务

六、HTTP Post 监控(监控外部域名)

按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-http-post 任务

七、小结