Prometheus监控案例之blackbox-exporter
blackbox-exporter简介
blackbox-exporter项目地址:https://github.com/prometheus/blackbox_exporter
blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。可用于以下使用场景:
- HTTP/HTTPS:URL/API可用性检测
- ICMP:主机存活检测
- TCP:端口存活检测
- DNS:域名解析
黑盒监控和白盒监控:
- 黑盒监控,关注的是实时状态,一般都是正在发生的事件,比如网站访问不了、磁盘无法写入数据等。即黑盒监控的重点是能对正在发生的故障进行告警。常见的黑盒监控包括HTTP探针、TCP探针等用于检测站点或者服务的可访问性,以及访问效率等。
- 白盒监控,关注的是原因,也就是系统内部的一些运行指标数据,例如nginx响应时长、存储I/O负载等
监控系统要能够有效的支持百盒监控和黑盒监控,通过白盒能够了解系统内部的实际运行状态,以及对监控指标的观察能够预判出可能出现的潜在问题,从而对潜在的不确定因素进行提前处理避免问题发生;而通过黑盒监控,可以在系统或服务发生故障时快速通知相关人员进行处理。
部署blackbox-exporter
下载软件包
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
tar xf blackbox_exporter-0.23.0.linux-amd64.tar.gz -C /usr/local/
ln -sv /usr/local/blackbox_exporter-0.23.0.linux-amd64 /usr/local/blackbox_exporter/usr/local/blackbox_exporter/blackbox_exporter -h #查看帮助信息
准备service文件
# cat /lib/systemd/system/blackbox-exporter.service
[Unit]
Description=Prometheus Blackbox Exporter
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/blackbox_exporter/blackbox_exporter --config.file=/usr/local/blackbox_exporter/blackbox.yml --web.listen-address=:9115
Restart=on-failure[Install]
WantedBy=multi-user.target
blackbox-exporter的配置文件使用默认的即可(/usr/local/blackbox_exporter/blackbox.yml),文件里定义了进行目标检测时要使用的模块和模块参数。至于要检测哪些目标是定义在Prometheus 的Job配置中。

启动blackbox-exporter
systemctl daemon-reload
systemctl start blackbox-exporter.service
systemctl status blackbox-exporter.service
systemctl enable blackbox-exporter.service
访问blackbox-exporter web界面验证

blackbox-exporter实现url监控
修改Prometheus配置,添加Job,内容如下:
- job_name: http-statusmetrics_path: /probe #指定指标接口params: #指定查询参数,在Prometheus向target发送Get请求获取指标数据时,会传递到url上module: [http_2xx]static_configs:- targets:- http://www.baidu.com- http://www.jd.comlabels: #自定义标签,附加在target上group: webrelabel_configs:#将标签__address__的值赋值给__param_target标签,以__param开头的标签也会作为查询参数传递Prometheus的Get请求,作用和上面的params配置类似- source_labels: [__address__]target_label: __param_target#将标签__param_target的值赋值给instance标签- source_labels: [__param_target]target_label: instance#将标签__address__的值修改给balckbox-expoter的地址- target_label: __address__replacement: 192.168.122.22:9115#以 http://www.baidu.com为例,最后其对应target的地址就是http://192.168.122.22:9115/probe?module=http_2xx&target=http://www.baidu.com
此job配置了对http://www.baidu.com和http://www.jd.com进行状态检测,验证是否可以访问,这里使用一个blackbox-exporter检测多个目标网站。
一般情况下exporter和目标实例是一对一关系,这种一个exporter获取多个目标实例的数据的方式官方称为multi-target-exporter,具体介绍可以参考Prometheus官方文档:https://prometheus.io/docs/guides/multi-target-exporter/
配置修改完成后重启Prometheus。然后在界面查看target状态。

选中一个target查看,可以看到它的对应目标地址

访问blackbox-exporter界面查看数据

blackbox-exporter实现ICMP监控
修改Prometheus配置,添加Job,内容如下:
- job_name: icmp-statusmetrics_path: /probeparams:module: [icmp]static_configs:- targets:- 192.168.122.5- 192.168.122.11labels:group: icmprelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.122.22:9115
配置修改完成后重启Prometheus。然后在界面查看target状态。

访问blackbox-exporter界面查看数据

blacbox-exporter实现端口监控
修改Prometheus配置,添加Job,内容如下:
- job_name: tcp-port-statusmetrics_path: /probeparams:module: [tcp_connect]static_configs:- targets:- 192.168.122.23:3306- 192.168.122.5:6443labels:group: tcp-port-statusrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.122.22:9115
配置修改完成后重启Prometheus。然后在界面查看target状态。

访问blackbox-exporter界面查看数据

Grafana查看数据
导入模板,查看数据。模板ID: 9965

模板ID:13659

相关文章:
Prometheus监控案例之blackbox-exporter
blackbox-exporter简介 blackbox-exporter项目地址:https://github.com/prometheus/blackbox_exporter blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。可用于以下使…...
Makefile基础使用和实战详解
Makefile基础使用和实战详解一、基础1.1、简单的Makefile1.2、多文件编译1.3、伪对象.PHONY二、变量2.1、自动变量2.2、特殊变量2.3、变量的类别2.4、变量及其值的来源2.5、变量引用的高级功能2.6、override 指令三、模式四、函数4.1、addprefix 函数4.2、filter函数4.3、filte…...
Go基础-变量
文章目录1 Go中的变量2 声明一个变量3 声明变量并初始化4 变量推断5 声明多个变量5.1 多个变量相同类型5.2 多个变量不同类型6 简短声明7 Go语言变量不能把一种类型赋值给其他类型1 Go中的变量 Go中变量指定了某存储单元的名称,该存储单元会存储特定类型的值&#…...
【算法】三道算法题目单词拆分,填充每个节点的下一个右侧节点指针以及组合总和
算法第一道算法题:单词拆分java解答参考第二道算法题:填充每个节点的下一个右侧节点指针java 解答参考第三道算法题:组合总和java解答参考大家好,我是小冷。 今天还是继续学习算法技术知识吧 第一道算法题:单词拆分 …...
【算法】刷题路线(系统+全面)
本系列基于当前各大公司对大公司的考察情况,给大家规划一条可行的算法刷题路线,大概会规划 200 道自认为有用的题,并且争取让初学者,能够刷起来更加丝滑,而且每个阶段都会进行相对应的说明。 当然,无论是面…...
Fiddler的报文分析
目录 1.Statistics请求性能数据 2.检测器(Inspectors) 3.自定义响应(AutoResponder) 1.Statistics请求性能数据 报文分析: Request Count: 1 请求数,该session总共发的请求数 Bytes …...
Spring 中,有两个 id 相同的 bean,会报错吗
我们知道,spring容器里面的bean默认是单例的,所以id是唯一的。但是需要注意,同一类型的bean可以有不同的id,比如有id1->bean,也可以有id2->bean。 下面再来详细回答一下文章的问题。 首先,在同一个…...
Mysql数据库的时间(4)一查询数据库时间注意点
一.select根据时间段查询 1.原始的sql根据时间段查询 select * from stu where time between "1998-09-01" and "1999-09-01"; //查询从1998-09-01到1999-09-01时间段的数据 等同于select * from stu where time >"1998-09-01" and time &l…...
一起学 pixijs(2):修改图形属性
大家好,我是前端西瓜哥。 我们做动画、游戏、编辑器,需要根据用户的交互等操作,去实时地改变图形的属性,比如位置,颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属性。 因为 pixijs 的底层维护了图形…...
LeetCode 121. 买卖股票的最佳时机
原题链接 难度:easy\color{Green}{easy}easy 题目描述 给定一个数组 pricespricesprices ,它的第 iii 个元素 prices[i]prices[i]prices[i] 表示一支给定股票第 iii 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同…...
shell脚本内调用另外一个shell脚本的几种方法
有时会在一个shell脚本(如test_call_other_shell.sh)中调用另外一个shell脚本(如parameter_usage.sh),这里总结几种可行的方法,这些方法在linux上和windows上(通过Git Bash)均适用: 1.通过source: 运行在相同的进程,在test_…...
Linux C++ 多进程下write写日志问题思考
文章目录多个进程(父子)同时通过write像日志文件中写,是否会出现数据混乱情况?需要满足以下条件: 1、通过open打开文件,子进程都是复制父进程的文件描述符去操作这个文件,不会造成文件混乱&…...
MySQL的四种事务隔离级别
目录一、事务的基本要素(ACID)1、原子性(Atomicity):2、一致性(Consistency):3、隔离性(Isolation):4、持久性(Durability)…...
方法区和元空间有什么关系?
一.什么是方法区? 方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。 《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,方法区到底要如何实现那就是虚拟机自己要考虑的事情了。也就是说,在…...
2023VNCTF的两道(暂时)
from http://v2ish1yan.top/2023/02/19/%E6%AF%94%E8%B5%9Bwp/2023vnctf/ 比赛的时候在回学校的路上,所以没有打,听说质量挺高,赛后做一下 象棋王子 一个普通的js游戏,玩过关了就给flag,所以flag肯定在前端源码里 这…...
JDK版本区别
1. 泛型 ArrayList listnew ArrayList()------>ArrayList<Integer>listnew ArrayList<Integer>(); 2 自动装箱/拆箱 nt ilist.get(0).parseInt();-------->int ilist.get(0);原始类型与对应的包装类不用显式转换 3 for-each i0;i<a.length;i------------&…...
Android 基础知识4-2.8 TableLayout(表格布局)详解
一、TableLayout的概述 表格布局是以行数和列数来确定位置进行排列。就像一间教室,确定好行数与列数就能让同学有序入座。 注意:我们需要先添加<TableRow容器,每添加一个就会多一行,然后再往<TableRow容器中添加其它组件。…...
SQL代码编码原则和规范
目录1、先了解MySQL的执行过程2、数据库常见规范3、所有表必须使用Innodb存储引擎4、每个Innodb表必须有个主键5、数据库和表的字符集统一使用UTF86、查询SQL尽量不要使用select *,而是具体字段7、避免在where子句中使用 or 来连接条件8、尽量使用数值替代字符串类型…...
【博客627】gobgp服务无损变更:graceful restart特性
gobgp服务无损变更:graceful restart特性 场景 当我们的bgp网关在对外宣告bgp路由的时候,如果我们网关有新的特性要发布,那么此时如果把网关停止再启动新版本,此时bgp路由会有短暂撤回再播出的过程,会有网络抖动 期待…...
一起学 pixijs(1):常见图形的绘制
大家好,我是前端西瓜哥。 pixijs 是一个强大的 Web Canvas 2D 库,以其强大性能而著称。其底层使用了 WebGL 实现了硬件加速,当然如果不支持的话,也能回退为 Canvas。 本文使用的 pixijs 版本为 7.1.2。 Application Applicati…...
SVN检出报错大全:从E170011到E120106的实战解决手册(附cleanup的正确用法)
SVN检出报错实战指南:从E170011到E120106的深度解析与解决方案 引言:SVN检出报错的常见场景与应对思路 在团队协作开发中,版本控制系统扮演着至关重要的角色。作为集中式版本控制的代表,SVN(Subversion)至今…...
如何用“波特三大竞争战略”为你的新产品破局?
1. 成本领先战略 (Cost Leadership)核心理念: 成为整个行业中成本最低的生产商或服务提供商。注意,成本领先不等于价格战。它的本质是通过极致的运营效率、规模经济、供应链优化或技术创新,把产品的底层结构性成本降到最低。这意味着…...
告别龟速下载!一个Shell脚本搞定GFZ非潮汐大气负载数据(附站点坐标文件模板)
极速批量获取GFZ非潮汐大气负载数据的Shell脚本实战指南 在GNSS数据处理和地球物理研究中,获取高精度的非潮汐大气负载(NTAL)数据是分析站点位移的关键环节。德国地学研究中心(GFZ)作为全球权威机构,其提供的NTAL数据产品被广泛应用于科研和工程领域。然…...
nli-distilroberta-base轻量化效果实测:在嵌入式设备上的推理性能与精度
nli-distilroberta-base轻量化效果实测:在嵌入式设备上的推理性能与精度 1. 开篇:当大模型遇上小设备 在树莓派上跑BERT?半年前这还是个笑话。但当我第一次在Jetson Nano上成功运行量化后的nli-distilroberta-base模型时,这个4核…...
ReflectiveDLLInjection实战:从源码编译到进程注入完整流程
ReflectiveDLLInjection实战:从源码编译到进程注入完整流程 【免费下载链接】ReflectiveDLLInjection Reflective DLL injection is a library injection technique in which the concept of reflective programming is employed to perform the loading of a libra…...
动漫IP商业化新路径:AnythingtoRealCharacters2511助力二次元角色真人化营销落地
动漫IP商业化新路径:AnythingtoRealCharacters2511助力二次元角色真人化营销落地 1. 动漫角色真人化的商业价值 动漫IP的商业化一直是内容产业的重要课题。传统的周边商品、联名合作虽然有效,但缺乏突破性创新。随着AI技术的发展,动漫角色真…...
Live Avatar素材准备全攻略:选择什么样的图片和音频效果最好
Live Avatar素材准备全攻略:选择什么样的图片和音频效果最好 1. 引言 1.1 数字人生成中的素材重要性 在数字人生成过程中,输入素材的质量直接影响最终输出效果。Live Avatar作为阿里联合高校开源的高质量数字人模型,虽然技术先进ÿ…...
小爱音箱改造AUX输入/输出全攻略:一个“几乎成功”的故事
前言很多朋友都想给小爱音箱增加AUX输入和输出功能,实现外接电视、电脑等音源,同时将音箱的声音输出到更大的外置音响系统。网上有很多改造教程,但普遍存在一个严重问题:只实现了单声道输入,浪费了硬件本身的立体声能力…...
__attribute__((unused))的妙用:如何优雅地处理未使用的变量与参数
1. 为什么我们需要__attribute__((unused)) 在C/C开发中,编译器警告就像一位严格的代码审查员,时刻提醒我们可能存在的问题。但有时候,我们确实需要定义一些暂时不使用的变量或参数,比如为了保持接口兼容性,或者在某些…...
【网络安全基础】计算机网络基础:从TCP/IP协议栈到网络攻击原理
前言在网络安全领域,不懂网络协议,就如同不懂解剖学的医生。无论是分析网络攻击流量、配置防火墙规则,还是进行内网渗透,都离不开对网络协议的深入理解。本文将系统梳理计算机网络的核心知识——从OSI七层模型到TCP/IP协议栈&…...
