一、简介

blackbox_exporter:
blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集,blackbox_exporter 可用于以下监测:
HTTP 测试:  定义Request Header信息、判断 Http status/Http Respones Header/HttpBody 内容
TCP 测试:    业务组件端口状态监听、应用层协议定义与监听
ICMP 测试:  主机探活机制
POST 测试:  接口联通性
SSL证书过期时间

github地址:GitHub - prometheus/blackbox_exporter: Blackbox prober exporterhttps://github.com/prometheus/blackbox_exporter

二、安装

二进制安装

$ wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.16.0/blackbox_exporter-0.16.0.linux-amd64.tar.gz
$ tar -zxvf blackbox_exporter-0.16.0.linux-amd64.tar.gz -C /data
$ mv /data/blackbox_exporter-0.16.0.linux-amd64 /data/blackbox_exporter
$ cd /data/blackbox_exporter/
$ ./blackbox_exporter --version
$ nohup ./blackbox_exporter &

使用blackbox_exporter 检测目标,使用语法如下:

语法结构(debug模式):
http://localhost:9115/probe?target=xxx&module=xxx&debug=true例如:
$ curl "http://localhost:9115/probe?target=10.50.10.7:22022&module=tcp_connect&debug=true"
$ curl "http://localhost:9115/probe?target=10.50.10.7&module=icmp&debug=true"

K8S安装

配置文件

$ cat config.yml
apiVersion: v1
kind: ConfigMap
metadata:name: blackbox-exporternamespace: kube-mon
data:blackbox.yml: |-modules:http_2xx:prober: httptimeout: 2shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [200,301,302]method: GETpreferred_ip_protocol: "ipv4"tcp_connect:prober: tcptimeout: 2shttp_403:prober: httptimeout: 2shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [403]method: GETpreferred_ip_protocol: "ipv4"https_403:prober: httpstimeout: 2shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [403]method: GETpreferred_ip_protocol: "ipv4"icmp:prober: icmp

deploy部署

$ cat deploy.yml
kind: Deployment
apiVersion: apps/v1
metadata:name: blackbox-exporternamespace: kube-monlabels:app.kubernetes.io/name: blackboxapp.kubernetes.io/version: 0.16.0
spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: blackboxtemplate:metadata:labels:app.kubernetes.io/name: blackboxspec:volumes:- name: configconfigMap:name: blackbox-exporterdefaultMode: 420containers:- name: blackbox-exporterimage: prom/blackbox-exporter:v0.16.0imagePullPolicy: IfNotPresentargs:- --config.file=/etc/blackbox_exporter/blackbox.yml- --log.level=info- --web.listen-address=:9115ports:- name: blackbox-portcontainerPort: 9115protocol: TCPresources:limits:cpu: 30mmemory: 100Mirequests:cpu: 10mmemory: 50MivolumeMounts:- name: configmountPath: /etc/blackbox_exporterreadinessProbe:tcpSocket:port: 9115initialDelaySeconds: 5timeoutSeconds: 5periodSeconds: 10successThreshold: 1failureThreshold: 3

svc 服务发现

$ cat svc.yml
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/name: blackboxname: blackbox-exporternamespace: kube-mon
spec:ports:- name: balckboxport: 9115protocol: TCPtargetPort: 9115selector:app.kubernetes.io/name: blackbox

创建以上资源:

$ kubectl apply -f .

如更改配置文件需要重新加载配置:

$ curl -X POST localhost:31425/-/reload

三、配置Prometheus采集数据

1、ICMP 测试(主机探活)

可以通过 ping(icmp) 检测服务器的存活,在 blackbox.yml 使用的配置是icmp 模块:

modules:icmp:prober: icmp

添加Prometheus配置:

   - job_name: "check_hosts"metrics_path: /probeparams:modelus: [icmp]static_configs:- targets:- 10.60.38.208relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: blackbox-exporter:9115

2、TCP 测试(监控主机端口存活状态)

检测端口是否存活,在blackbox.yml 配置文件中使用的配置是tcp_connect模块:

modules:tcp_connect:prober: tcp

添加pronetheus配置

   - job_name: "check_ports"metrics_path: /probeparams:module: [tcp_connect]static_configs:- targets:- 10.60.38.208:8080relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: blackbox-exporter:9115

3、检测SSL证书过期时间

检测SSL证书,在blackbox.yml 配置文件中使用的配置是模块:

http_2xx:prober: httptimeout: 10shttp:preferred_ip_protocol: "ipv4"valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [200,301,302,303]method: GET

添加pronetheus配置

   - job_name: "blackbox_ssl"metrics_path: /probeparams:module: [http_2xx]static_configs:- targets:- https://www.baidu.comrelabel_configs:- source_labels: [__address__]target_label: instance- source_labels: [__address__]target_label: __param_target- target_label: __address__replacement: blackbox-exporter:9115

告警规则

端口监测失败 (正则匹配8080端口)
sum by(instance) (probe_success{instance=~".*:8080$",job="check_ports"}) == 0主机ping不通
sum by (instance)(probe_success{job="check_hosts"}) == 0证书还有30天过期
probe_ssl_earliest_cert_expiry{job="blackbox_ssl"} - time() < 86400 * 30

grafana id: 9965 13230

blackbox_exporter 黑盒监测相关推荐

  1. Prometheus 监控之 Blackbox_exporter黑盒监测 [icmp、tcp、http(get\post)、dns、ssl证书过期时间]

    Blackbox_exporter 主动监测主机与服务状态 Prometheus 官方提供的 exporter 之一,可以提供 http.dns.tcp.icmp 的监控数据采集 官方github: ...

  2. Blackbox_exporter黑盒监测

    一.概述 blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http.dns.tcp.icmp 的监控数据采集. Blackbox_exporte ...

  3. Prometheus监控实战之Blackbox_exporter黑盒监测

    1 Blackbox_exporter应用场景 blackbox_exporter是Prometheus官方提供的exporter之一,可以提供HTTP.HTTPS.DNS.TCP以及ICMP的方式对 ...

  4. Prometheus 监控服务端口、网站状态等(黑盒监测)

    1.blackbox_exporter介绍 blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http.dns.tcp.icmp 的监控数据采集. ...

  5. Prometheus黑盒监测之blackbox_exporter

    1 什么是黑盒监控 我们监控主机的资源用量.容器的运行状态.数据库中间件的运行数据.这些都是支持业务和服务的基础设施,通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题, ...

  6. 聊一聊对外API接口的存活检查可以怎么做

    背景 公司内部的API接口一般会分为两大类,一类是直接暴露在公网可以访问的,一类是只能在局域网内访问的. 暴露在公网的一般就是业务网关以及一些和第三方公司有着某些合作,从而进行数据交互的接口. 检查A ...

  7. 来自 Google 的高可用架构理念与实践

    转自:  https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=402738153&idx=1&sn=af5e76aad2 ...

  8. 使用blackbox_exporter进行黑盒监控

    微信公众号:运维开发故事,作者:乔克 概述 在监控体系里面,通常我们认为监控分为:白盒监控和黑盒监控. 黑盒监控:主要关注的现象,一般都是正在发生的东西,例如出现一个告警,业务接口不正常,那么这种监控 ...

  9. blackbox_exporter端口及网络监控

    一.背景概述 Blackbox(黑盒)监控指的是指检测外部暴露出来的,能够被用户所看到.观察到的较表面的数据,比如WEB响应.网络是否通畅.端口连通性等指标,黑盒监控不会深入到程序或系统内部中去,能够 ...

  10. Blackbox_exporter概述

    Blackbox_exporter概述 blackbox exporter是允许在HTTP, HTTPS, DNS, TCP and ICMP等协议的端点进行黑盒探测的采取器  官方github: h ...

最新文章

  1. PanoNet3D:一种3D目标检测方法
  2. 部署在CloudFoundry上的nodejs如何正确使用port环境变量
  3. 用python将指定目录下的所有json文件合并成一个csv文件
  4. Flutter自定义相机,Flutter相册选择照片
  5. PHP curl 使用代码
  6. Mysql学习总结(52)——最全面的MySQL 索引详解
  7. 关于jQuery获取html标签自定义属性值或data值
  8. 火山引擎正式发布大数据研发治理套件
  9. 教你如何使用ip地址进行高精度定位
  10. 将你的掘金小册制作成一整本PDF
  11. 矩阵的乘法(python、matlab、excel的不同实现方法)
  12. Excel快捷键总结
  13. 我研究了3年,终于找出2021年完美的听歌方案!
  14. Java制作简易计算器
  15. 致敬2021——中国汽车,拆掉思维里的墙
  16. 单元测试 CI/CD
  17. MTK机器原始OTA更新方法
  18. C#小白上手篇---TextBox读取和修改本地TXT文本内容。
  19. 密室逃脱2 古堡迷城
  20. 官方微信支付跟特约商户的区别

热门文章

  1. Flink Web UI不能访问
  2. Flutter之Pigeon插件与Android通信使用指南
  3. mysql调整specified key_MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法...
  4. oracle lob值是什么,关于Oracle数据库LOB大字段总结
  5. 有线路由器加无线路由器的组网方法
  6. 用fact函数算阶乘
  7. 【JavaScript】JS高级-面向对象编程
  8. 智慧遂川城管建设项目-容灾备份一体机
  9. CSS实现导航条图片的翻转菜单
  10. java 解密pdf文件,PDFBox加密和解密PDF文件