【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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置