Go语言网络监控之路_blackbox_exporter

blackbox_exporter 黑盒监测 一、简介 blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集,blackbox_exporter 可用于以下监测: 1.HTTP 测试 定义 Request Header 信息 判断 Http status / Http Respones Header / Http Body 内容 2.TCP 测试 业务组件端口状态监听 应用层协议定义与监听 3.ICMP 测试 主机探活机制 4.POST 测试 阅读详情

前言

前面我已经简单解释了Prometheus与Consul结合使用,今天分享一下blackbox_exporter.


一、Blackbox_exporter是什么?

blackbox_exporter允许通过HTTP,HTTPS,DNS,TCP和ICMP对监控目标发起黑盒测试。
这个与白盒的区别一个由内而发起,黑盒是由外而发起的探测

二、Blackbox使用步骤

1.从官网下载

blackbox_exporter下载地址
源码地址:https://github.com/prometheus/blackbox_exporter

下载之后,我们这边的启动脚本为

#!/bin/bash
nohup /data/blackbox_exporter-0.19.0/blackbox_exporter &

重启的脚本为:

#!/bin/bash
curl -X POST http://127.0.0.1:9115/-/reload

以下为官网的yaml参考配置:

modules:
  http_2xx_example:
    prober: http
    timeout: 5s
    http:
      valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
      valid_status_codes: []  # Defaults to 2xx
      method: GET
      headers:
        Host: vhost.example.com
        Accept-Language: en-US
        Origin: example.com
      no_follow_redirects: false
      fail_if_ssl: false
      fail_if_not_ssl: false
      fail_if_body_matches_regexp:
        - "Could not connect to database"
      fail_if_body_not_matches_regexp:
        - "Download the latest version here"
      fail_if_header_matches: # Verifies that no cookies are set
        - header: Set-Cookie
          allow_missing: true
          regexp: '.*'
      fail_if_header_not_matches:
        - header: Access-Control-Allow-Origin
          regexp: '(\*|example\.com)'
      tls_config:
        insecure_skip_verify: false
      preferred_ip_protocol: "ip4" # defaults to "ip6"
      ip_protocol_fallback: false  # no fallback to "ip6"
  http_post_2xx:
    prober: http
    timeout: 5s
    http:
      method: POST
      headers:
        Content-Type: application/json
      body: '{}'
  http_basic_auth_example:
    prober: http
    timeout: 5s
    http:
      method: POST
      headers:
        Host: "login.example.com"
      basic_auth:
        username: "username"
        password: "mysecret"
  http_custom_ca_example:
    prober: http
    http:
      method: GET
      tls_config:
        ca_file: "/certs/my_cert.crt"
  http_gzip:
    prober: http
    http:
      method: GET
      compression: gzip
  http_gzip_with_accept_encoding:
    prober: http
    http:
      method: GET
      compression: gzip
      headers:
        Accept-Encoding: gzip
  tls_connect:
    prober: tcp
    timeout: 5s
    tcp:
      tls: true
  tcp_connect_example:
    prober: tcp
    timeout: 5s
  imap_starttls:
    prober: tcp
    timeout: 5s
    tcp:
      query_response:
        - expect: "OK.*STARTTLS"
        - send: ". STARTTLS"
        - expect: "OK"
        - starttls: true
        - send: ". capability"
        - expect: "CAPABILITY IMAP4rev1"
  smtp_starttls:
    prober: tcp
    timeout: 5s
    tcp:
      query_response:
        - expect: "^220 ([^ ]+) ESMTP (.+)$"
        - send: "EHLO prober\r"
        - expect: "^250-STARTTLS"
        - send: "STARTTLS\r"
        - expect: "^220"
        - starttls: true
        - send: "EHLO prober\r"
        - expect: "^250-AUTH"
        - send: "QUIT\r"
  irc_banner_example:
    prober: tcp
    timeout: 5s
    tcp:
      query_response:
        - send: "NICK prober"
        - send: "USER prober prober prober :prober"
        - expect: "PING :([^ ]+)"
          send: "PONG ${1}"
        - expect: "^:[^ ]+ 001"
  icmp_example:
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: "ip4"
      source_ip_address: "127.0.0.1"
  dns_udp_example:
    prober: dns
    timeout: 5s
    dns:
      query_name: "www.prometheus.io"
      query_type: "A"
      valid_rcodes:
      - NOERROR
      validate_answer_rrs:
        fail_if_matches_regexp:
        - ".*127.0.0.1"
        fail_if_all_match_regexp:
        - ".*127.0.0.1"
        fail_if_not_matches_regexp:
        - "www.prometheus.io.\t300\tIN\tA\t127.0.0.1"
        fail_if_none_matches_regexp:
        - "127.0.0.1"
      validate_authority_rrs:
        fail_if_matches_regexp:
        - ".*127.0.0.1"
      validate_additional_rrs:
        fail_if_matches_regexp:
        - ".*127.0.0.1"
  dns_soa:
    prober: dns
    dns:
      query_name: "prometheus.io"
      query_type: "SOA"
  dns_tcp_example:
    prober: dns
    dns:
      transport_protocol: "tcp" # defaults to "udp"
      preferred_ip_protocol: "ip4" # defaults to "ip6"
      query_name: "www.prometheus.io"

如果有其他需求,可以参考上面提供的实例对应的改写

2.应用

从上面的配置yaml可以写了很多东西
暂时我们只使用了我们需要的内容 blackbox.yml

modules:
  http_2xx:
    prober: http
    timeout: 10s
    http:
      valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
      valid_status_codes: []  # Defaults to 2xx
      method: GET
      # 响应符合正则表达式就失败
      #fail_if_body_matches_regexp:
      # - "OK|SUCCESS"
      # 响应不符合正则表达式就失败
      fail_if_body_not_matches_regexp:
        - "OK|SUCCESS"
  icmp: # ping方式检测 
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: "ip4"

我们这边主要做两个方面:
1. 进行ping检测
2. 检测写的程序是否正常。因为内部有些项目已经规范返回"OK"或者"SUCCESS"两种,所以这种规范性的还是很好写的

blackbox_exporter部署成功之后就可以访问:http://127.0.0.1:9115 去验证
访问路径为
http://127.0.0.1:9115/probe?target=prometheus.io&module=http_2xx&debug=true

target: 监控的目标
module:使用的模块
debug 是否输出日志

关注以下指标
···
#HELP probe_icmp_duration_seconds Duration of icmp request by phase
#TYPE probe_icmp_duration_seconds gauge 延迟通断 注意phase=“rtt” )

probe_icmp_duration_seconds{phase=“resolve”} 0.19693231
probe_icmp_duration_seconds{phase=“rtt”} 0.159475017
probe_icmp_duration_seconds{phase=“setup”} 7.5679e-05

#HELP probe_success Displays whether or not the probe was a success
#TYPE probe_success gauge 是否返回正常(0 不正常 1 为正常)
probe_success 1
···
注意配合前面我介绍的Prometheus与 Consul 结合使用,这样就可以做到监控自助上下线,从而提高效率

事项

  1. 配置blackbox_exporter,最好安装node_exporter工具
  2. 如果是Linux注意linux中的ulimit 连接数的大小,不宜过小

关于ping还是存在一定的不足,后续我将分享fping_exporter插件针对ping的增强


总结

以上就是我分享的内容,blackbox_exporter还是应用的场景比较多的,尤其是监控方面

prometheus监控之黑盒(blackbox)监控 blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,blackbox-exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Prometheus和被监控目标互通的环境中,通过HTTP、HTTPS(URL/API可用性检测)、DNS(域名解析)、TCP(端口存活检测)、ICMP(主机存活检测)等方式对网络进行探测监控,还可以探测SSL证书过期时间。 阅读详情

相关推荐

实战k8s监控--Exporter

Exporter介绍 Exporter是什么 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据 Exporter的来源 从Exporter的来源上来讲,主要分为两类: 社区提供的 Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控

勿念旧梦 4039

Prometheus监控案例之blackbox-exporter

blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。HTTP/HTTPS:URL/API可用性检测ICMP:主机存活检测TCP:端口存活检测DNS:域名解析黑盒监控,关注的是实时状态,一般都是正在发生的事件,比如网站访问不了、磁盘无法写入数据等。即黑盒监控的重点是能对正在发生的故障进行告警。

梵修 1万+

Linux服务器监控实战:从Prometheus+Grafana部署到告警配置

在分布式系统和云原生架构中,服务器监控是保障服务稳定性的核心技术。其核心原理在于通过持续采集系统与应用的时序数据,实现从被动响应到主动管理的运维理念转变。这项技术的核心价值在于提供预见性和可观测性,帮助团队在用户感知问题前发现潜在风险,从而提升系统可用性和运维效率。典型的应用场景包括实时追踪服务器资源利用率、检测应用性能瓶颈、以及设置智能告警机制。本文将聚焦于Linux环境,详细介绍如何利用Prometheus、node_exporter和Grafana等开源工具栈,构建一套覆盖指标采集、存储、可视化与告警

weixin_30414305的博客 621

Prometheus黑盒监控之icmp探针异常的问题处理

Prometheus黑盒监控(blackbox_exporter)之icmp探针异常的问题处理

qq_34708146的博客 1772

快速搭建Prometheus+Grafana服务器监控系统:从零到可视化驾驶舱

在系统运维和开发领域,服务器监控是保障服务稳定性的基石。其核心原理是通过采集、存储和可视化关键性能指标,实现对服务器运行状态的实时洞察与历史回溯。Prometheus作为云原生时代主流的开源监控解决方案,凭借其多维数据模型和强大的PromQL查询语言,提供了灵活高效的数据采集与存储能力。结合Grafana出色的可视化与仪表盘功能,能够将原始指标数据转化为直观的图表,为性能瓶颈定位、容量规划和故障预警提供强大支持。这套技术组合尤其适用于需要监控CPU、内存、磁盘及网络等主机指标的运维场景,能有效解决服务器资源

349

Prometheus Exporter与Go语言:如何使用fping-exporter测量网络延迟并优化性能

与其他工具,如blackbox-exporter相比,fping-exporter不仅提供了延迟分布和丢包统计信息,而且由于其基于fping,其性能可能更为出色。与传统的ping命令相比,fping可以同时ping多个目标,并为每个目标生成统计数据。与其他工具相比,fping-exporter提供了更详细的延迟分布和丢包统计信息,而且由于其基于fping,其性能可能更好。一旦Prometheus开始抓取fping-exporter的指标,您就可以在Prometheus的Web UI中查看和查询这些指标。

qq_38334677的博客 738

Blackbox Exporter 安装与配置指南

### 项目概述 Blackbox Exporter 是 Prometheus 官方提供的黑盒监控解决方案之一。它允许用户通过 HTTP、HTTPS、DNS、TCP、ICMP 和 gRPC 等方式对网络端点进行探测,从而监控这些端点的可用性和性能。 ### 主要编程语言 Blackbox Exporter 主要使用 Go 语言编写。 ## 2. 项目使用的关键技术和框架 ### 关键技术 -...

gitblog_07544的博客 1176

go-probe:Go-Probe一个简单的服务器环境探针

探棒 go-probe是一个简单的服务器环境探针。 用法 docker run --name go-probe -p 8080:80 -d jolestar / go-probe 通过浏览器打开 ,将得到html结果。 curl -H“ accept:application / yaml” curl -H“ accept:application / json” 支持探针功能 Env:显示系统环境变量 HostInfo:显示主机信息,例如:主机名,平台,内核版本 中央情报局 NetworkInfo:网络接口 RequestInfo:请求远程地址,标头。 加载平均 内存信息

【Prometheus】【Blackbox_Exporter】ICMP探测与性能监控

ctx: 上下文对象,通常用于控制超时和取消操作。target: 目标主机地址。module: 配置模块,包含ICMP探测的相关参数。registry: Prometheus监控注册表,用于记录和导出性能指标。logger: 日志记录器,记录操作过程中的各种信息。var (})和replyType:分别用于存储请求和响应的ICMP类型。icmpConn:存储用于发送和接收ICMP包的连接。v4RawConn:IPv4原始连接,用于低级别的ICMP操作。

zhangshenglu1的博客 2531

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.1密码应用方案设计

密码应用方案设计

qq_40442137的博客 1474

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1244

【Prometheus】【Blackbox_exporter】深入理解Blackbox_exporter的 DNS 查询探针函数

通过对ProbeDNS函数的逐步解析,我们可以看到它的核心功能是执行 DNS 查询并通过 Prometheus 指标监控 DNS 请求的各个阶段。该函数不仅确保 DNS 查询的成功执行,还提供了多维度的监控数据,适合用于生产环境中的 DNS 服务监控和故障排查。

zhangshenglu1的博客 1641

从分立到集成:深入解析Buck电路的核心模块与设计权衡

本文深入解析Buck电路的核心模块与设计权衡,从分立到集成方案的优缺点对比。详细探讨Buck电路的高效能量转换、小型化设计及灵活电压调节能力,并结合实际案例分享分立方案中的PWM生成、反馈环路设计及保护电路优化经验,为工程师提供实用设计参考。

weixin_29306317的博客 225

TiDB 监控组件之 Blackbox_exporter 运行原理

作者: TiDBerHailang 原文来源: https://tidb.net/blog/b269e96f ...

TiDB 社区干货传送门 733

立创开源:基于STM32F407的大疆M30T无人机PSDK机载开发板硬件设计与飞行控制实现

本文详细介绍了基于STM32F407微控制器为大疆M30T无人机设计PSDK机载开发板的完整流程。从关键的E-Port接口电路设计、电源保护,到STM32最小系统搭建,再到通过PSDK实现与无人机的通信及基础飞行控制,提供了从硬件到软件的全栈实战指南,助力开发者快速入门无人机负载开发。

weixin_35649491的博客 403

ISO21434 组织网络安全管理(二)

为了实现网络安全工程,该组织建立并维护网络安全治理和网络安全文化,包括网络安全意识管理、能力管理和持续改进。这涉及到指定针对本文档的目标进行独立审计的特定于组织的规则和过程。 为了支持网络安全工程,该组织实施了网络安全的管理系统,包括管理工具和应用质量管理系统。

qq_42357877的博客 1322

Blackbox Exporter 常见问题解决方案

Blackbox Exporter 是 Prometheus 官方提供的黑盒监控解决方案之一。它允许用户通过 HTTP、HTTPS、DNS、TCP、ICMP 和 gRPC 等方式对网络端点进行探测。该项目的主要编程语言是 Go。 ## 新手使用注意事项及解决方案 ### 1. 配置文件错误 **问题描述**:新手在使用 Blackbox Exporter 时,可能会遇到配置文件错误,导致服务...

gitblog_07022的博客 832

推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展

推荐算法其实本质上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,它依赖的逻辑就是当一个内容被大多数用户喜欢,那大概率其他用户也会喜欢。但是基于粗放的推荐往往会不够精确,想要挖掘用户个性化的,小众化的兴趣,需要制定复杂的规则运算逻辑,并由机器完成。召回:当用户以及内容量比较大的时候,往往先通过召回策略,将百万量级的内容先缩小到百量级。

丨汀、的博客 7595

K8S-11--prometheus--(监控基础/prometheus基础/grafana/promQL/exporter/cadvisor)

Day11-11.14号作业 1.针对网络的总结 2.prometheus 的安装方式 3.promQL语句 4.node exporter/blackbox exporter/cadvisor nginx 5.prometheus告警

weixin_44515412的博客 2844

GEE训练教程:如何批量从Google assets中将时序影像批量导出到Google drive

本文介绍了一种使用Google Earth Engine(GEE)批量导出2000-2023年叶绿素a(Chl-a)浓度数据的方法。通过JavaScript代码自动生成多个年份的导出任务,将数据保存至Google Drive指定文件夹。文章详细说明了代码参数配置、使用步骤和注意事项,包括资产命名规则验证、导出任务启动方式,以及分辨率、区域范围等关键参数的调整建议。同时提供了常见问题的解决方案,如处理缺失年份数据、解决导出像素超限等问题。该方法可显著提高多年份Chl-a数据批量导出的效率,适用于水体环境研究的

此星光明博客 91

本地通知与健康数据的隐私保护方案

随着移动健康(mHealth)应用的普及,本地通知与健康数据的结合为用户提供了更加个性化的健康管理体验。然而,这种便利性也带来了严峻的隐私保护挑战。本文旨在探讨如何在移动应用中实现本地通知功能的同时,确保用户健康数据的隐私安全。本地通知与健康数据结合的技术架构隐私保护的核心技术方案具体算法实现与数学模型实际应用案例分析本文首先介绍背景知识和核心概念,然后深入探讨隐私保护的技术方案,包括算法原理和数学模型。接着提供实际代码实现和应用场景分析,最后讨论未来发展趋势和挑战。

移动开发前沿的博客 1309

SSL Exporter 架构解析与 TLS 证书监控深度指南

在当今的云原生和微服务架构中,TLS 证书管理已成为运维安全的核心环节。SSL Exporter 作为 Prometheus 生态系统中的专业证书监控工具,为分布式系统的证书生命周期管理提供了强大的监控能力。通过实时收集和暴露证书过期时间、验证状态等关键指标,SSL Exporter 帮助运维团队提前预警证书过期风险,确保服务的高可用性和安全性。 ## 技术定位与核心价值 SSL Export

gitblog_00499的博客 920

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

构建企业级监控平台:Prometheus与Grafana在Kubernetes中的实战部署指南

在当今云原生时代,企业面临着容器化应用监控的严峻挑战。随着Kubernetes成为容器编排的事实标准,传统的监控方案已无法满足动态、弹性的容器环境需求。本文将为您提供一套完整的Prometheus+Grafana企业级监控解决方案,帮助您构建高效、可靠的Kubernetes PaaS平台监控体系。 ## 监控挑战分析:为什么传统方案不再适用 在Kubernetes环境中,应用监控面临三大核心挑

gitblog_00891的博客 389

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Go语言网络监控之路_Consul

前言 监控首先需要解决监控目标的问题? 第二种就是现在使用的这种模式,cmdb还是不变,只是注册中心我们改用了Consul注册中心 一、Prometheus监控目标? 关于这块想详细了解的,可以去参考Prometheus官网 监控目标 以上为对应的链接地址 1.file_sd_config 前期我们采用静态文件(file_sd_config)的方式,主要的交互方式,在我们内部有一个类似cmdb的系统,通过http方式提交对应的配置文件到gitlab文件,然后有人从gitlab下载对应的版本提交

str0708的博客 634

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

K8S生态--交付prometheus监控及grafana炫酷dashboard到K8S集群

由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控: 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Promethe

1589

Prometheus - Exporter 入门:常用 Exporter 安装与指标暴露

Prometheus Exporter 入门指南 核心概念 Exporter是Prometheus监控体系中的关键组件,负责将目标系统的原始数据转换为Prometheus可识别的指标格式。它通过HTTP接口暴露/metrics端点,等待Prometheus Server定期拉取数据。 指标格式解析 Prometheus指标包含四个核心部分: HELP行:指标说明 TYPE行:指标类型(Counter/Gauge/Histogram/Summary) 指标名称和标签 指标值 常用Exporter安装 Node

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: Go语言网络监控之路_Consul
疯信子To
博客等级 码龄14年 12粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值