Prometheus 监控简介
Prometheus
监控分为两种:
白盒监控
墨盒监控
白盒监控
:是指我们日常监控主机的资源用量、容器的运行状态、数据库中间件的运行数据。 这些都是支持业务和服务的基础设施,通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化。
墨盒监控
:即以用户的身份测试服务的外部可见性,常见的黑盒监控包括 HTTP探针
、TCP探针
、Dns
、Icmp
等用于检测站点、服务的可访问性、服务的连通性,以及访问效率等。
两者比较
:黑盒监控相较于白盒监控最大的不同在于黑盒监控是以故障为导向当故障发生时,黑盒监控能快速发现故障,而白盒监控则侧重于主动发现或者预测潜在的问题。一个完善的监控目标是要能够从白盒的角度发现潜在问题,能够在黑盒的角度快速发现已经发生的问题。
部署 Prometheus Blackbox 服务
环境:
- Prometheus Operator 版本 v0.29.0(手动部署)
- Kubernetes 版本 1.15.6 (二进制部署)
- Blackbox Exporter 版本 v0.16.0
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 提供配置文件。
1 | $ vim prometheus-blackbox.yaml |
1 | apiVersion: v1 |
1 | # 部署 |
定义 BlackBox 在 Prometheus 抓取设置
下面抓取设置,都存放在
prometheus-additional.yaml
文件中,设置可参考 https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml
DNS 监控
1 | - job_name: "blackbox-k8s-service-dns" |
更新
additional-configs secrets
配置 ,Prometheus
会自动 reload
1 | # 先删除,在重新创建 |
看到下面输出结果,说明 Prometheus 已重载
打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-service-dns
任务,到 graph 页面,可以使用 probe_success
和 probe_duration_seconds
等来检查历史结果
HTTP 监控(K8S 内部发现方法)
发现
Service
监控
1 | - job_name: 'kubernetes-http-services' |
按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-http-services
任务
自定义发现
Service
监控端口
和路径
,可以如下设置:
1 | - job_name: 'blackbox-k8s-http-services' |
然后,需要在 Service
中配置这样的 annotation
:
1 | annotation: |
按上面方法重载 Prometheus,打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-http-services
任务
发现 Ingress
1 | - job_name: 'blackbox-k8s-ingresses' |
按上面方法重载 Prometheus,会出现下面报错,报权限不足
解决方法:在 prometheus-clusterRole.yaml
后面添加下面内容
1 | - apiGroups: |
1 | $ kubectl apply -f prometheus-clusterRole.yaml |
打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-k8s-ingresses
任务
HTTP 监控(监控外部域名)
1 | - job_name: "blackbox-external-website" |
打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-external-website
任务
HTTP Post 监控(监控外部域名)
1 | - job_name: 'blackbox-http-post' |
打开 Prometheus 的 Target 页面,就会看到 上面定义的 blackbox-http-post
任务
Grafana Dashboard
Grafana 官网找到的一个Dashboard
小结
Prometheus Blackbox 除了支持对 HTTP 协议进行网络探测以外,Blackbox 还支持对 TCP、DNS、ICMP 等其他网络协议,大家感兴趣的可以从 Blackbox 的 Github项目中获取更多使用方法。
参考链接
- https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md
- https://github.com/prometheus/blackbox_exporter/blob/master/example.yml
- https://www.qikqiak.com/post/blackbox-exporter-on-prometheus/
- https://blog.fleeto.us/post/blackbox-monitor-dns-web/
---本文结束感谢您的阅读。微信扫描二维码,关注我的公众号---
本文链接: https://www.yp14.cn/2020/01/16/Prometheus-BlackBox简单监控/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!