【30天精通Prometheus:一站式监控实战指南】第10天:blackbox_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

本文主要是介绍【30天精通Prometheus:一站式监控实战指南】第10天:blackbox_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


文章目录

  • 一、blackbox_exporter概述📘
  • 二、安装blackbox_exporter💾
    • 2.1 访问blackbox_exporter官方网站 🌐
    • 2.2 选择适合的版本🔍
    • 2.3 下载blackbox_exporter⬇️
    • 2.4 解压安装包📂
    • 2.5 运行blackbox_exporter🚀
  • 三、blackbox_exporter指标和配置详解📖
    • 3.1 blackbox_exporter.service
    • 3.2 blackbox_exporter.yml
      • 3.2.1 http_2xx 、http_post_2xx
      • 3.2.2 tcp_connect、 pop3s_banner
      • 3.2.3 grpc、grpc_plain
      • 3.2.4 ssh_banner、irc_banner
      • 3.2.5 icmp、icmp_ttl5
  • 四、实战演练:生产环境搭建指南🔨
    • 4.1 创建普通用户管理blackbox_exporter👤
    • 4.2 解压blackbox_exporter.tar.gz📦
    • 4.3 将blackbox_exporter集成到Prometheus配置中✂️
    • 4.4 更改blackbox_exporter软件包名称✂️
    • 4.5 编辑blackbox_exporter.service文件📝
    • 4.6 启动blackbox_exporter.service🔌
    • 4.7 查看服务是否正常启动🔍
  • 相关资料下载地址📚

一、blackbox_exporter概述📘

定义
  Blackbox_exporter是一个开源工具,用于监控网络服务的可用性。它并不是Elasticsearch的组成部分,而是一个独立的工具,通常与Prometheus结合使用,用于收集和导出各种网络服务的监测数据。简单来说,它是一个帮助系统管理员了解和监测网络服务健康状况的“黑盒”监控工具。

功能
  支持多种协议:Blackbox_exporter可以对HTTP、HTTPS、TCP、ICMP、DNS以及gRPC等协议进行探测。

  灵活配置:用户可以通过配置文件或命令行参数自定义监控目标、探测频率、超时时间等。

  指标输出:该工具能够将探测结果以Prometheus的指标格式输出,包括响应时间、响应状态码、服务的可达性等,便于Prometheus进行数据采集和存储。

  服务发现:支持Prometheus的服务发现机制,自动发现并监控关联的目标。

  自定义探测器:用户可以根据特定需求编写自定义的探测逻辑。

应用场景
  HTTP/HTTPS监控:用于检测Web服务的URL或API的可用性,确保网站或API接口能够正常响应请求。

  DNS监控:检查域名解析的速度和准确性,帮助诊断可能的DNS问题。

  TCP端口监控:通过建立TCP连接来确认特定端口的开放状态,验证服务的可达性。

  ICMP监控:使用类似于ping的命令来检测远程主机是否在线,即主机存活检测。

  gRPC服务监控:针对使用gRPC协议的服务进行健康状态检查。

二、安装blackbox_exporter💾

注意事项和常见问题
  1.环境配置:确保服务器或开发环境符合blackbox_exporter的运行要求。关闭或配置好防火墙,以免阻碍blackbox_exporter的网络探测功能。校对好系统时间,确保监控数据的准确性。

  2.依赖安装:blackbox_exporter是独立运行的,通常不需要额外的依赖安装。但是,如果在特定环境下运行(如使用Docker),需要确保相关环境已正确配置。

  3.下载与安装:从官方GitHub仓库下载最新稳定版本的blackbox_exporter。验证下载文件的完整性,以确保没有被篡改。

  4.配置:根据需要监控的服务类型(如HTTP、HTTPS、TCP、ICMP等),正确配置blackbox.yml文件。配置Prometheus以收集blackbox_exporter的指标。

2.1 访问blackbox_exporter官方网站 🌐

  • 打开浏览器,访问blackbox_exporter的官方下载页面,通常位于Prometheus官方网站的子目录下:https://prometheus.io/download/#blackbox_exporter

2.2 选择适合的版本🔍

  • 在下载页面,你将看到不同操作系统的blackbox_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择blackbox_exporter-x.x.x.linux-amd64.tar.gz(其中x.x.x是版本号)。

2.3 下载blackbox_exporter⬇️

  • 点击所选版本的下载链接,将blackbox_exporter的二进制包下载到你的本地计算机。

2.4 解压安装包📂

  • 将下载的blackbox_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为blackbox_exporter-x.x.x.linux-amd64的目录,其中包含blackbox_exporter的二进制文件和其他相关文件。
tar -xzf blackbox_exporter-x.x.x.linux-amd64.tar.gz

2.5 运行blackbox_exporter🚀

  • 进入解压后的目录,并运行blackbox_exporter服务器。在Linux下,你可以使用如下命令。如果一切正常,你应该能在终端看到blackbox_exporter的启动日志。
cd blackbox_exporter-x.x.x.linux-amd64./blackbox_exporter --config.file=/usr/local/blackbox_exporter-0.24.0/blackbox.yml --web.listen-address 0.0.0.0:9115

三、blackbox_exporter指标和配置详解📖

3.1 blackbox_exporter.service

  • - -config.file=“blackbox.yml”
      指定 Blackbox Exporter 的配置文件路径。blackbox.yml 文件中定义了如何对网络服务进行探测,包括探测的目标、模块、超时时间等。
  • - -[no-]config.check
      用于检查配置文件是否有语法错误。如果设置为- -config.check,则 Blackbox Exporter 会在启动时检查配置文件的正确性,如果配置有误,它将不会启动。no-config.check 则会跳过这个检查。
  • - -log.prober=“none”
      设置日志中是否记录 prober(探测器)的详细日志。设置为 “none” 表示不记录这些日志,有助于减少日志量。如果需要调试,可以设置为其他值以获取更详细的日志信息。
  • - -history.limit=100
      设置历史记录的数量限制。Blackbox Exporter 会保存最近的探测结果,这个参数用于限制保存的历史记录数量。在这个例子中,最多保存 100 条历史记录。
  • - -web.external-url=<url>
      设置 Blackbox Exporter 的外部 URL。这通常用于当 Blackbox Exporter 位于反向代理后面时,确保生成的链接是正确的。如果留空,则使用默认的 URL。
  • - -web.route-prefix=<path>
      设置 Web 服务的路由前缀。如果 Blackbox Exporter 是作为一个更大应用的一部分,并且需要通过特定的路由来访问,可以使用这个参数。例如,设置为 /blackbox/ 会使得所有的 API 和指标都通过 /blackbox/ 路由来访问。
  • - -[no-]web.systemd-socket
      用于控制是否使用 systemd socket 激活。如果使用 systemd socket 激活,Blackbox Exporter 将不会绑定到任何特定的端口,而是由 systemd 在需要时传递连接。这可以提高安全性,因为只有 systemd 可以访问该服务。设置为 no-web.systemd-socket 则会禁用这个功能。
  • - -web.listen-address=:9115
      设置 Blackbox Exporter 监听的地址和端口。在这个例子中,它监听所有地址(: 表示所有地址)的 9115 端口。如果需要更改端口或限制监听的地址,可以修改这个参数。
  • - -web.config.file=“”
      允许你指定一个包含 Web 服务相关配置的文件。在这个例子中,它是空的,意味着使用默认配置。如果需要自定义 Web 服务的某些方面(如 TLS、身份验证等),可以在这个文件中进行配置。

3.2 blackbox_exporter.yml

3.2.1 http_2xx 、http_post_2xx

  http_2xx:prober: http	#  指定使用HTTP探测器http:preferred_ip_protocol: "ip4"	# 使用IPv4协议进行探测http_post_2xx:prober: http	# 使用HTTP探测器http:method: POST		# 设置HTTP请求方法为POST
  • http_2xx
    • prober: http
        指定该模块使用的探测器类型为http。这意味着该模块将执行HTTP探测。
    • http
        该部分包含HTTP探测器的具体配置。
      • preferred_ip_protocol
          指定了在进行网络请求时优先使用的IP协议版本。在这个例子中,设置为了"ip4",意味着探测器将优先使用IPv4地址进行探测。如果服务器同时支持IPv4和IPv6,那么设置这个参数可以确保使用特定的IP版本来进行测试。

  • http_post_2xx
    • prober: http
        指定该模块使用的探测器类型为http。这意味着该模块将执行HTTP探测。
    • http
        该部分包含HTTP探测器的具体配置。
      • method: POST
          设置HTTP请求的方法为POST。默认情况下,HTTP探测器可能使用GET方法,但在这个模块中,明确指定使用POST方法。可以用于测试那些需要POST请求才能正常工作的HTTP接口。

3.2.2 tcp_connect、 pop3s_banner

  tcp_connect:prober: tcp		# 使用TCP连接探测器,仅检查TCP连接是否可以建立pop3s_banner:prober: tcp		# 使用TCP探测器tcp:query_response:	# 定义查询和响应的期望序列- expect: "^+OK"	# 期望收到的响应以+OK开头tls: true	# 启用TLS加密tls_config:insecure_skip_verify: false	# 不跳过TLS证书的验证
  • tcp_connect
    • prober: tcp
        指定该模块使用的探测器类型为tcp。将尝试建立TCP连接到目标地址和端口,以检查连接是否可以成功建立。这个模块不发送或接收任何特定的数据,只是简单地测试TCP连接性。

  • pop3s_banner
    • tcp
        该部分包含TCP探测器的具体配置。
      • query_response
          定义一个查询和响应的期望序列,用于与目标服务器进行交互。
      • expect: “^+OK”
          指定探测器期望从服务器接收到的响应应该以+OK开头。通常用于POP3协议中,服务器在成功连接后会发送一个以+OK开头的欢迎消息。
      • tls: true
          探测器在建立TCP连接后启动TLS加密。
      • insecure_skip_verify: false
          是否在TLS握手过程中验证服务器的SSL证书。设置为false意味着探测器将验证服务器的证书是否有效和受信任。如果设置为true,则会跳过证书验证。

3.2.3 grpc、grpc_plain

  grpc:prober: grpc	# 使用gRPC探测器grpc:tls: true	# 启用TLS加密preferred_ip_protocol: "ip4"	# 使用IPv4协议grpc_plain:prober: grpc	# 使用gRPC探测器grpc:tls: false	# 不使用TLS加密service: "service1"	# 要探测的gRPC服务名称
  • grpc
    • prober: grpc
        指定该模块使用的探测器类型为grpc。意味该模块将尝试通过gRPC协议与目标服务器进行通信。
    • grpc
        包含gRPC探测器的具体配置。
      • tls: true
          指示探测器在建立gRPC连接时使用TLS加密。
      • preferred_ip_protocol: “ip4”
          指定探测器在尝试连接目标服务器时优先使用的IP协议版本。在这个例子中,它被设置为"ip4",表示探测器将优先使用IPv4地址进行连接。对于那些仅支持或偏好IPv4的网络环境特别有用。

  • grpc_plain
    • prober: grpc
        指定该模块使用的探测器类型为grpc。意味该模块将尝试通过gRPC协议与目标服务器进行通信。
    • grpc
        包含gRPC探测器的具体配置。
    • tls: false
        与grpc模块相反,这个参数指示探测器在建立gRPC连接时不使用TLS加密。
    • service: “service1”
        指定探测器要连接的gRPC服务的名称。在gRPC中,服务名称通常用于标识和路由到正确的服务处理程序。

3.2.4 ssh_banner、irc_banner

  ssh_banner:prober: tcp	# 使用TCP探测器tcp:query_response:- expect: "^SSH-2.0-"	# 期望收到的响应以SSH-2.0-开头- send: "SSH-2.0-blackbox-ssh-check"	# 发送特定的SSH客户端标识- irc_banner:prober: tcp	# 使用TCP探测器tcp:query_response:	# 定义了与IRC服务器的交互序列,包括发送NICK、USER等命令,并期望特定的响应- send: "NICK prober"- send: "USER prober prober prober :prober"- expect: "PING :([^ ]+)"send: "PONG ${1}"- expect: "^:[^ ]+ 001"
  • ssh_banner
    • prober: tcp
        指定使用TCP探测器。
    • tcp
        TCP探测器的配置部分。
      • query_response
          定义了一个查询和响应的序列。
      • expect: “^SSH-2.0-”
          指定探测器期望从服务器接收到的响应应该以SSH-2.0-开头。这是SSH服务器在接收到客户端连接时通常会发送的版本标识。
      • send: “SSH-2.0-blackbox-ssh-check”
          指定探测器向服务器发送的SSH客户端版本标识。通常用于模拟SSH客户端与服务器进行初始的版本协商。

  • irc_banner
    • prober: tcp
        指定使用TCP探测器。
    • tcp
        TCP探测器的配置部分。
      • query_response
          定义了一个查询和响应的序列。
      • send: “NICK prober”
           向IRC服务器发送设置昵称(NICK)的命令,昵称为“prober”。
      • send: “USER prober prober prober :prober”
          向IRC服务器发送USER命令,用于设置用户信息。这里所有的参数都设置为“prober”。
      • expect: “PING : ([^ ]+)”
          定义一个正则表达式,探测器会等待服务器发送一个PING消息,并捕获PING后面的参数值。
      • send: “PONG ${1}”
          当收到PING消息后,探测器会使用之前捕获的参数值(${1})来回应一个PONG消息。这是IRC协议中保持连接活跃的一种机制。
      • expect: “^:[^ ]+ 001”
          探测器期望从服务器接收到一个以:开头,后面跟着若干非空格字符,再接着是 001的响应。在IRC协议中,001是一个欢迎消息,表示客户端已成功连接到服务器。

3.2.5 icmp、icmp_ttl5

  icmp:prober: icmp	# 使用ICMP探测器,通常用于检测网络连通性(ping)icmp_ttl5:prober: icmp	# 使用ICMP探测器timeout: 5s	# 设置探测超时时间为5秒icmp:ttl: 5	# 设置ICMP包的TTL(生存时间)为5,这可以用于追踪网络路径或检测特定网络跳数的问题
  • icmp
    • prober: icmp
        指定该模块使用的探测器类型为icmp。这意味着该模块将发送ICMP Echo请求(ping请求)到目标地址,以检查网络的连通性。

  • icmp_ttl5
    • prober: icmp
        同样指定了使用的探测器类型为icmp。
    • timeout: 5s
        设置ICMP探测的超时时间为5秒。如果在5秒内没有收到ICMP Echo响应(pong响应),则探测器会认为目标不可达。
    • ttl: 5
        设置ICMP数据包的Time To Live (TTL)值为5。TTL是IP数据包在网络中传输时可以经过的最大路由器数量。每当数据包经过一个路由器时,TTL值就会减1。当TTL值减至0时,数据包将被丢弃,并且发送方会收到一个ICMP超时消息。通过设置较低的TTL值(如5),可以限制数据包的传输范围,这在某些网络诊断场景中可能很有用。例如,如果你想确认数据包是否能够到达离你较近的网络节点,但不想让它们传播得太远,就可以通过设置较低的TTL值来实现。

四、实战演练:生产环境搭建指南🔨

4.1 创建普通用户管理blackbox_exporter👤

useradd deploy

4.2 解压blackbox_exporter.tar.gz📦

注意:
  我的是x86,所以使用blackbox_exporter-0.25.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构

tar xvf blackbox_exporter-0.25.0.linux-amd64.tar.gz -C /home/deploy/

4.3 将blackbox_exporter集成到Prometheus配置中✂️

  将blackbox_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加blackbox_exporter的配置。告诉Prometheus将采集localhost:9115的数据。

  - job_name: 'blackbox_exporter'metrics_path: /probeparams:module: [http_2xx]  # 模块对应 blackbox.ymlstatic_configs:- targets:- http://127.0.0.1:9090labels:system: prometheusrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 127.0.0.1:9115  # blackbox_exporter安装在哪台机器

4.4 更改blackbox_exporter软件包名称✂️

mv /home/deploy/blackbox_exporter-0.25.0.linux-amd64 /home/deploy/blackbox_exporter

4.5 编辑blackbox_exporter.service文件📝

cat > /etc/systemd/system/blackbox_exporter.service <<EOF
[Unit]
Description=blackbox_exporter
After=network.target[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/blackbox_exporter/blackbox_exporter \
--config.file=/home/deploy/blackbox_exporter/blackbox.yml \
--web.listen-address=:9115 \
--no-config.check \
--history.limit=100 \
--log.format=logfmt \
--log.level=info
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF

4.6 启动blackbox_exporter.service🔌

sudo systemctl daemon-reloadsudo systemctl enable --now blackbox_exporter.service

4.7 查看服务是否正常启动🔍

# 查看service服务是否启动
sudo systemctl status blackbox_exporter.service# 查看端口是否存在
sudo ss -ntulp | grep 9115

相关资料下载地址📚

  • 官方文档:https://prometheus.io/docs/introduction/overview/
  • 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
  • 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
  • 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt

这篇关于【30天精通Prometheus:一站式监控实战指南】第10天:blackbox_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013839

相关文章

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3