◾️ BBxPing 面板 - 在 Grafana 上点亮地球 / Blackbox Exporter & Prometheus

BBxPING Gen2

第二版已经更新,请移步此帖查看最新样式和简介

面板功能

BBxPing 基于 Grafana,Dashboard ID 为 22500, 通过 Blackbox Exporter 获取数据并由 Prometheus 等时序数据库采集并展示。

主要功能如下:

  1. 根据选定城市查看延迟情况
  2. 根据选定网络运营商(ISP)查看该网络的整体延迟情况
  3. 根据选定 IP 版本(IPv4/IPv6)查看延迟情况
  4. 根据选定城市查看实时丢包率以及 1小时12小时24小时 内的整体平均丢包率
  5. 按列表查看服务器到全球各城市的平均延迟
  6. 查看服务器到 Anycast 服务的延迟情况
  7. 地图上查看到选定网络运营商下所有 IP 的实时延迟情况
  8. 各大洲地图上查看服务器到达所有城市的实时平均延迟,也就是点亮地球

额外特性如下:

  1. 中国及日本主流 ISP 的专属配色
  2. 主 Panel 的标题栏信息的动态显示
  3. 地图可自由放大缩小移动

注:上述功能之实现均以正确安装并配置好 Grafana、Blackbox Exporter 和时序数据库 (Prometheus 或 VictoriaMetrics) 为前提。

图例展示

图片隐藏了测试服务商信息,并展示数种网络情况中面板各 Panel 的显示效果。

BBxPing

安装 & 使用方式

见二楼

更新方法

重新导入 22500
导入的时候可以重命名或者覆盖

后续计划

Node Information 和 BBxPing 的设计上花的时间远远超出了我的预期,而且我自己的需求已经满足,所以除了先前提及的中文版面板(我翻译好后会在原帖加上中文版 ID,并更新帖子标题),就不打算做新的面板了。这两个面板除非有重大的 bug,以及有快速的解决方案时,我都不会去主动大幅度更新功能和设计了。目前用着感觉不错的朋友可以不用追新:)
当然过段时间如果我有新想法,可能会先做一些简单的面板

BBxPing Raw

BBxPing Raw 的 ID 是 22502,样式如同传统的大杂烩面板,基于 Blackbox Exporter 实现,不包含任何️ BBxPing 的特性。其中使用了跟️ BBxPing 一样的 Label 系统(二楼会提及),是一个不错的 Grafana 学习素材,也可以满足一些传统需求。

鸣谢

  1. 绿绿 @midori 全程的建议、部分资料提供和测试(文末附带她超夸张的地图点亮数)
  2. 新加坡鸡王 @luca 的测试和他极力要求下出现的 BBxPing Raw
  3. 小一佬 @xream 的传播与另一个实现方法(下面会提及 VictoriaMetrics vmagent 代替 Prometheus 的教学链接,据说比 Prometheus 轻量很多,以及原理跟哪吒的主动上传一样)
  4. Surge Pro 群友以及各位的留言鼓励和支持

地图示例

学习链接

Grafana, VictoriaMetrics, Blackbox, vmagent 探针入门

点赞
  1. Bene说道:

    安装方式

    1️⃣ Grafana & Prometheus

    Node Information 发布页已提及,故不赘述。

    2️⃣ Blackbox Exporter

    可以参考以下两种方式:

    官方 Docker

    docker run --rm \
      -p 9115/tcp \
      --name blackbox_exporter \
      -v $(pwd):/config \
      quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml
    

    @midori 制作的二进制安装脚本

    bash <(curl -sSLf "https://raw.githubusercontent.com/midori01/common-scripts/main/blackbox-exporter/install.sh")

    ️ Label 标签系统介绍

    必填 - 不可自定义

    ip: 可选 IPv4 / IPv6

    code: 应填入目标 IP 所在地的城市代码或机场代码 (如 LAX),如果 code 的机场代码有被收录进 Grafana 的机场列表中,目标 IP 会在地图上展示

    Anycast 目标 IP 的话,应当在 code 填入 ANYCAST (唯一写法)

    应填 - 可自定义

    name: 将在 DESTINATION 折线图 和 PACKET LOSS RATE 柱状图 中展示目标名称
    city: 将在顶栏选取框中出现相应城市名称选项 (如 Los Angeles),以及其他 Panel 的名称提及
    isp: 将在顶栏选取框中出现相应运营商名称选项 (如 China Mobile),以及其他 Panel 的名称提及

    选填 - 不可自定义

    domestic: 目前只有 true,填入你本国 IP的 label 里,暂时用来排除本国线路以获得"总体国际线路延迟"结果

    Prometheus 配置示例

    与 Node Exporter 不同,Blackbox Exporter 需要在主控机器为每个分机建立一个 job 来管理配置。目前也有在一个 job 里面管理所有机器的方法,但不一定适用于多测试点的面板,感兴趣可以尝试。本帖将只提及传统的配置方式。

    1️⃣ /etc/prometheus/prometheus.yml

    有多少台机器就加入多少个 job

      - job_name: "Instance 1"
        metrics_path: '/probe'
        params:
          module: [icmp]
        file_sd_configs:
          - files:
            - '/etc/prometheus/blackbox/*.yml'
        relabel_configs:
            - source_labels: [__address__]
              target_label: __param_target
            - source_labels: [__param_target]
              target_label: instance
            - target_label: __address__
              replacement: localhost:9115 # 机器 IP:9115(blackbox 默认端口,需在每台分机为主控地址开放此端口)
    
    1. 使用 file_sd_configs 来动态加载配置,不仅不再需要为每个 job 配置冗长的 IP 列表,还实现了无需重启 Prometheus 便更新测试 IP 列表
    2. file_sd_configs 需自己新建,此处以 /etc/prometheus/blackbox/*.yml 为例,支持借助通配符加载多个文件
    3. file_sd_configs 支持 json 格式,本文以 yaml 格式举例

    技巧

    不支持 IPv6 的机器可以在 relabel_configs 下面加上

            - source_labels: [ip]
              regex: 'IPv6'
              action: drop
    

    意味着不再 ping 带有 IPv6 标签的目标
    也可以通过这个方式进行更精细的筛选,高度自定义

    2️⃣ /etc/prometheus/blackbox/example.yml

    本国 IP

        - targets:
            - v4.EXAMPLE-pek.com # 或 IPv4 IP
          labels:
            name: 'PEK | China Mobile'
            code: 'PEK'
            city: 'Beijing'
            isp: 'China Mobile'
            ip: 'IPv4'
            domestic: 'true'
    
        - targets:
            - v6.EXAMPLE-pek.com # 或 IPv6 IP
          labels:
            name: 'PEK | China Mobile'
            code: 'PEK'
            city: 'Beijing'
            isp: 'China Mobile'
            ip: 'IPv6'
            domestic: 'true'
    

    VPS IP

        - targets:
            - v4.EXAMPLE-vps.com
          labels:
            name: 'LAX | DMIT Pro'
            code: 'LAX'
            city: 'Los Angeles'
            ip: 'IPv4'
    
        - targets:
            - v6.EXAMPLE-vps.com
          labels:
            name: 'LAX | DMIT Pro'
            code: 'LAX'
            city: 'Los Angeles'
            ip: 'IPv6'
    

    Anycast IP

        - targets:
            - 8.8.8.8
          labels:
            name: 'GOOGLE'
            code: 'ANYCAST'
            ip: 'IPv4'
    
        - targets:
            - 2001:4860:4860::8888
          labels:
            name: 'GOOGLE'
            code: 'ANYCAST'
            ip: 'IPv6'
    

    至此,在重启一遍 Prometheus 后将可以正常运行了。

  2. Bene说道:

    记录一下未发布的 v2 版本的更新(结果还是大更新了),不然内容太多到时自己都忘记了:

    主要版块有选定城市(DEST)网络运营商(ISP)丢包率(PLR)全球城市(GLOBAL)Anycast(ANYCAST)地图

    布局

    全新的设计语言,更适合深色模式

    1. 加入 Overview 折叠视图(默认折叠)
    2. DEST 将作为 主要 Panel
    3. 修改一些 var 和部分标题名称
    4. 提高视觉一致性

    顶栏

    • 国内所有城市总平均延迟
    • 国外所有城市总平均延迟(排除了 Anycast 和本机)
    • ISP下所有目标的总平均延迟

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮