监控分为两种:

白盒监控

黑盒监控

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

黑盒监控:常见的黑盒监控包括 HTTP探针、TCP探计、Dns、Icp 等用于检测站点、服务的可访问性、服务的连通性

两者比较:

。黑盒监控是以故随为导向当故障发生时,黑盒监控能快速发现故障。

。白盒监控则侧重于主动发现或者预测潜在的问题。

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

目前支持的应用场景:

。ICMP测试

主机探活机制

。TCP测试

业务组件端口状态监听

应用层协议定义与监听

。HTTP测试

定义 Request Header 信息

判断 Http status /Http Respones Header /Http Body 内容

。POST测试

接口联通性

SSL证书过期时间

一、Blackbox Exporter 部署

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

https://github.com/prometheus/blackbox exporter/blob/master/CONFIGURATION.md

https://github.com/prometheus/blackbox exporter/blob/master/exampleyml
  • 1.
  • 2.
  • 3.

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

Configmap:

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

部署
$ kubect1 apply -f blackbox-configmap.yaml
$ kubectI apply -f blackbox-exporter .yaml
查看部署后的资源
$ kg all -nmonitor |grep blackbox
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

定义 BlackBox

在Prometheus抓取设置
下面抓取设置,都存放在 prometheus-config.yam1 文件中,设置可参考
https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml
  • 1.
  • 2.
  • 3.
二、DNS监控

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

更新 prometheus-config,yaml 配置:

curl -XPOST http://prometheus ,kubernets.cn/-/reload
  • 1.

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

graph 页面,可以使用 probe_success和 probe_duration_seconds 等来检查历史结果

三、ICMP监控

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

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

curl -XPOST http;//prometheus .kubernets.cn/-/reload
  • 1.
四、HTTP 监控(K8S 内部发现方法)
4.1、自定义发现Service监控端口和路径

可以如下设置:

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

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

annotations:
prometheus.io/http-probe:"true"
##开启 HTTP 探针
## HTTP 探针会使用 8080 端口来进行探测
prometheus.io/http-probe-port:"8080"
prometheus.io/http-probe-path:"/healthCheck"
## HTTP 探针会请求 /healthcheck 路径来进行探测,以检查应用机序是否正常运行
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

示例:Java应用的svc:

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

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

curl -XPOST http;//prometheus ,kubernets,cn/-/reload
  • 1.
4.2、TCP检测

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

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

cur1 -XPOST http://prometheus .kubernets.cn/-/reload
  • 1.

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

annotations:
prometheus.io/scrape:"true"
prometheus,io/tcp-probe:"true"
## 这个服务是可以被采指标的,Prometheus 可以对这个服务进行数据采集
## 开启 TCP 探针
prometheus.io/http-probe-port: "8080"[
## HTTP 探针会使用 8080 口来进行探测,以检查应用程序是否正常运行
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
4.3、发现 Ingress

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

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

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

curl -XPOST http://prometheus ,kubernets.cn/-/reload
  • 1.
六、HTTP Post 监控 (监控外部域名)

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

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

cur1 -XPOST http://prometheus ,kubernets,cn/-/reload
  • 1.

七、小结

 Blackbox Exporter是一个用于监控网络服务的开源工具。

通过横拟HTTP、HTTPS、DNS、TCP等协议向服务端发送请求,并返回响应码、响应时间等信息。

Blackbox Exporter具有高座的灵活性,可以通过配置文件进行定制,包括对请求的频率、超时时限、请求头、请求参数等进行配置,

Blackbox Exporter还支持Prometheus监控系统,可以将采集到的数枫自动发送给Prometheus,并进行喝合和需示