11.prometheus监控之黑盒(blackbox)监控

news/2025/9/28 18:26:19/文章来源:https://www.cnblogs.com/weifeng1463/p/19117362

一、黑盒监控

"白盒监控"--需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源及其状态的数据采集工作。

但是由于某些情况下操作技术或其他原因,不是所有的Exporter都能部署到被监控的主机环境中,最典型的例子是监控全国网络质量的稳定性,通常的方法是使用ping操作,对选取的节点进行ICMP测试,此时不可能在他人应用环境中部署相关的Exporter程序。针对这样的应用的场景,Prometheus社区提供了黑盒解决方案,Blackbox Exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Prometheus和被监控目标互通的环境中,通过HTTP、HTTPS、DNS、TCP、ICMP等方式对网络进行探测监控,还可以探测SSL证书过期时间。

blackbox_exporter:

  • Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集

二、安装方法

2.1 二进制安装(二选一)

https://prometheus.io/download/#blackbox_exporter

复制代码
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gztar zxvf blackbox_exporter-0.23.0.linux-amd64.tar.gz 
mkdir /opt/prometheus -p
mv blackbox_exporter-0.23.0.linux-amd64 /opt/prometheus/blackbox_exporter# 创建用户
useradd -M -s /usr/sbin/nologin prometheus
# 修改文件夹权限
chown prometheus:prometheus -R /opt/prometheus# 创建systemd服务
cat <<"EOF" >/etc/systemd/system/blackbox_exporter.service
[Unit]
Description=blackbox_exporter
After=network.target[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/opt/prometheus/blackbox_exporter/blackbox_exporter \--config.file "/opt/prometheus/blackbox_exporter/blackbox.yml" \--web.listen-address ":9115"
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF# 启动
systemctl daemon-reload
systemctl start blackbox_exporter
systemctl enable blackbox_exporter
复制代码

2.2 docker安装(二选一)

创建配置文件,config.yml中监控方式用不到的可以删除,例如pop3、ssh之类

复制代码
mkdir /data/blackbox_exporter/cat >/data/blackbox_exporter/config.yml<<"EOF"
modules:http_2xx:prober: httphttp:method: GEThttp_post_2xx:prober: httphttp:method: POSTtcp_connect:prober: tcppop3s_banner:prober: tcptcp:query_response:- expect: "^+OK"tls: truetls_config:insecure_skip_verify: falsegrpc:prober: grpcgrpc:tls: truepreferred_ip_protocol: "ip4"grpc_plain:prober: grpcgrpc:tls: falseservice: "service1"ssh_banner:prober: tcptcp:query_response:- expect: "^SSH-2.0-"- send: "SSH-2.0-blackbox-ssh-check"irc_banner:prober: tcptcp:query_response:- send: "NICK prober"- send: "USER prober prober prober :prober"- expect: "PING :([^ ]+)"send: "PONG ${1}"- expect: "^:[^ ]+ 001"icmp:prober: icmpicmp_ttl5:prober: icmptimeout: 5sicmp:ttl: 5
EOF
复制代码

删除不需要的可以留下:

复制代码
cat config.yml
modules:http_2xx:prober: httphttp:method: GEThttp_post_2xx:prober: httphttp:method: POSTtcp_connect:prober: tcpicmp:prober: icmp
复制代码

cf代理状态码非200

官网案例

  http_2xx:prober: httptimeout: 5shttp:method: GETpreferred_ip_protocol: "ip4"

注意:使用preferred_ip_protocol: "ip4" 可以检测cf代理目标在 cloudflare 后面,状态码非200

2.2.1 docker直接运行
sudo docker run -d --restart=always --name blackbox-exporter -p 9115:9115  -v /data/blackbox_exporter:/etc/blackbox_exporter prom/blackbox-exporter:v0.19.0 --config.file=/etc/blackbox_exporter/config.yml
2.2.2 docker-compose运行
复制代码
cd /data/blackbox_exporter/cat >docker-compose.yaml <<"EOF"
version: '3.3'
services:blackbox_exporter:image: prom/blackbox-exportercontainer_name: blackbox_exporterrestart: alwaysvolumes:- /data/blackbox_exporter:/etc/blackbox_exporterports:- 9115:9115
EOF
复制代码

启动:docker-compose up -d

查看状态:http://192.168.10.100:9115/

3. Prometheus配置

配置prometheus去采集(拉取)blackbox_exporter的监控样本数据

复制代码
cd /data/docker-prometheus cat >> prometheus/prometheus.yml <<"EOF"#http配置- job_name: "blackbox_http"metrics_path: /probeparams:module: [http_2xx]static_configs:- targets:- https://www.baidu.com- https://www.jd.comrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.10.100:9115#tcp检查配置- job_name: "blackbox_tcp"metrics_path: /probeparams:module: [tcp_connect]static_configs:- targets: - 192.168.10.14:22- 192.168.10.14:9090relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.10.100:9115#icmp检查配置 ping- job_name: "blackbox_icmp"metrics_path: /probeparams:module: [icmp]static_configs:- targets: - 192.168.10.14- 192.168.10.100relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.10.100:9115
EOF
复制代码

重新加载配置:curl -X POST http://localhost:9090/-/reload

检查:

http://192.168.10.14:9090/targets?search=

 3.1 监控项

复制代码
probe_probe_success                   # 是否探测成功(取值 1、0 分别表示成功、失败)
probe_duration_seconds          # 探测的耗时# 关于 DNS
probe_dns_lookup_time_seconds   # DNS 解析的耗时
probe_ip_protocol               # IP 协议,取值为 4、6
probe_ip_addr_hash              # IP 地址的哈希值,用于判断 IP 是否变化# 关于 HTTP
probe_http_status_code          # HTTP 响应的状态码。如果发生重定向,则取决于最后一次响应
probe_http_content_length       # HTTP 响应的 body 长度,单位 bytes
probe_http_version              # HTTP 响应的协议版本,比如 1.1
probe_http_ssl                  # HTTP 响应是否采用 SSL ,取值为 1、0
probe_ssl_earliest_cert_expiry  # SSL 证书的过期时间,为 Unix 时间戳
复制代码

3.2 触发器配置

添加blackbox_exporter触发器告警规则

复制代码
cat >> prometheus/rules/blackbox_exporter.yml <<"EOF"
groups:
- name: Blackboxrules:- alert: 黑盒子探测失败告警expr: probe_success == 0for: 1mlabels:severity: criticalannotations:summary: "黑盒子探测失败{{ $labels.instance }}"description: "黑盒子检测失败,当前值:{{ $value }}"- alert: 请求慢告警expr: avg_over_time(probe_duration_seconds[1m]) > 1for: 1mlabels:severity: warningannotations:summary: "请求慢{{ $labels.instance }}"description: "请求时间超过1秒,值为:{{ $value }}"- alert: http状态码检测失败expr: probe_http_status_code <= 199 OR probe_http_status_code >= 400for: 1mlabels:severity: criticalannotations:summary: "http状态码检测失败{{ $labels.instance }}"description: "HTTP状态码非 200-399,当前状态码为:{{ $value }}"- alert: ssl证书即将到期expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 30for: 1mlabels:severity: warningannotations:summary: "证书即将到期{{ $labels.instance }}"description: "SSL 证书在 30 天后到期,值:{{ $value }}"- alert: ssl证书即将到期expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 3for: 1mlabels:severity: criticalannotations:summary: "证书即将到期{{ $labels.instance }}"description: "SSL 证书在 3 天后到期,值:{{ $value }}"- alert: ssl证书已过期expr: probe_ssl_earliest_cert_expiry - time() <= 0for: 1mlabels:severity: criticalannotations:summary: "证书已过期{{ $labels.instance }}"description: "SSL 证书已经过期,请确认是否在使用"
EOF
复制代码

检查配置并加载:

docker exec -it prometheus promtool check config /etc/prometheus/prometheus.ymlcurl -X POST http://localhost:9090/-/reload

http://192.168.10.14:9090/rules

http://192.168.10.14:9090/alerts?search=

4.grafana dashboard图形化展示

https://grafana.com/grafana/dashboards/13659-blackbox-exporter-http-prober/

 https://grafana.com/grafana/dashboards/9965

检测总耗时 和 HTTP状态占比 这2个图形,显示异常

检测总耗时这个图行点编辑---找到Options--把Legend里面的值从{{env}}_{{name}}修改为{{instance}} 

 

参考文档: https://www.cnblogs.com/yangmeichong/p/18156586

https://blog.csdn.net/weixin_43266367/article/details/129110541

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站访问量有什么用网站开发代码用什么软件

重点是要在程序管理窗口中“查看已安装的更新”打开当前系统中已安装更新列表&#xff0c;找到两个IE11的更新&#xff08;见下图“卸载文件“&#xff09;并卸载掉&#xff0c;这样windows功能中的ie11才会变成ie8. 打开控制面板 进入面板&#xff0c;点击程序&#xff0c;进…

自己做的网站怎么接入数据库嘉兴企业网站推广方法

配置IPsec on GRE Tunnel with IOS Firewall and NAT<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />详细配置见附件

openssh升级

openssh升级## 功能```支持centos7.5升级openssh9.8``` ## 备份```/etc/pam.d/sshd/etc/ssh/sshd_config```## 物料```openssh.repoopenssh.tar.gz ```----```[openssh]name=openssh9.8baseurl=file:///openssh/gpgche…

实用指南:月匣 - 百度推出的AI情感陪伴与剧情互动应用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

电子商务网站的建设与维护企业网站内容如何更新

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.字符指针 2.指针数组 3.数组指针 4.数组传…

做纸巾定制的网站广告设计宣传画册

一、 选题的依据及意义 随着信息化技术的发展&#xff0c;敬老院的信息化管理也迎来了机遇和挑战&#xff0c;我们积极应对这场战斗&#xff0c;丝毫不懈怠。因为&#xff0c;在未来的互联网是一个开放的环境&#xff0c;而传统的管理是一个独立的对象维护和医疗管理模式&…

宜昌的网站建设wordpress菜单出不来

在制作项目的时候遇到一个需求&#xff0c;点击一个按钮弹出一个input输入框&#xff0c;并让输入框获得焦点&#xff0c;项目中引用了element-ui 在网上查找了很多方法&#xff0c;但是在实际使用中发现了一个问题无论是使用$ref获取input元素然后使用focus方法还是使用饿了么…

Python虚拟环境及创建和使用虚拟环境(Python3)

一、什么是Python虚拟环境 简单说,虚拟环境是一个独立的 Python 运行环境,它与系统全局的 Python 环境完全隔离。每个虚拟环境可以有自己独立的 Python 解释器版本(如果需要)。 每个虚拟环境中安装的第三方库(如 …

团队协作必备:16款在线协同编辑文档方案对比

为解决企业在线协同编辑文档的选型难题,本文深度评测了含坚果云在内的16款主流工具。文章从协作办公、数据安全与功能特色等多维度进行全面对比分析,旨在为不同需求的企业提供实用选型指南,帮助团队找到最合适的协同…

石材企业网站源码自创图片软件

文章目录 了解操作系统定义目的操作系统体系结构功能特征操作系统的区别(64位与32位)操作系统的地址内存管理缓存 了解操作系统 定义 操作系统是控制管理计算机系统的硬软件,分配调度资源的系统软件 目的 方便性,有效性(提高系统资源的利用率,提高系统的吞吐量) 操作系统体…

变电站、开闭所、环网柜、配电站

1、概念变电站:“区域总电源”,把高压电(如 220kV)变成 10kV,是所有下游设备的电来源;开闭所:“10kV 中转站”,把变电站来的 10kV 电分给周边的环网柜和配电站;环网柜:“10kV 小节点”,给配电站分支供电,还…

IDEA大幅度提升编译速度配置 - 指南

IDEA大幅度提升编译速度配置 - 指南2025-09-28 18:15 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

免费只做网站公司装修工程

《死锁实验报告》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《死锁实验报告(3页珍藏版)》请在人人文库网上搜索。1、操作系统实验二报告一实验名称&#xff1a;死锁的检测与解除二实验目的&#xff1a;观察死锁产生的条件&#xff0c;并使用适当的算法&#xff0c;…

网站建设入账哪个科目湛江人才网

事务原理 1 事务基础 1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2). 特性 原子性&#xff08;Atomi…

为AI注入灵魂:一种面向人机黑箱的元人文治理新范

为AI注入灵魂:一种面向人机黑箱的元人文治理新范式 在人工智能治理领域,我们正面临一个根本性的范式转移:挑战从纯粹的“技术黑箱”转向更为复杂的 “人机混合黑箱” 。当人类偏好、算法决策与社会环境相互缠绕,传…

2025年5款主流服务管理工具大盘点!总有一款最值得你选! - RAIN

2025年5款主流服务管理工具大盘点!总有一款最值得你选!一、开篇:数字化时代,服务管理已成企业 “刚需配置”​ 在当今数字化转型已成为企业核心战略的背景下,“服务能力”正逐渐演变为决定竞争力的关键因素。然而…

2025.9.28——1黄

普及/提高- P5194 [USACO05DEC] Scales S wpmx说自己没看清题卡了很久的简单dfs题,试着做了一下,难点在于倒着dfs,这是一个重要剪枝。

聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾

2025 年 9 月 26 日,为期三天的云栖大会在杭州云栖小镇圆满闭幕。随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。为了解决企业在 AI 应用落地中面临的高成本、高复杂度和高风险等核心…

删除 Ubuntu Nautilus 资源管理器侧栏的默认目录

Nautilus 是 Ubuntu 默认的文件管理器。默认情况下,系统会在侧边栏显示"图片"、"视频"、"文档"等用户目录文件夹,但这些可能并不是我们经常访问的位置。(默认情况下,红框处还存在音…