Prometheus blackbox 黑盒监控

Prometheus blackbox

应用场景:探测网站存活端口存活、证书有效期、DNS、业务存活等。支持 HTTP, HTTPS, DNS, TCP, ICMP, gRPC协议来对目标节点进行监控。

例如: 1、 监控网站状态码为 200 判断 业务是否正常

2、 监控数据库端口 3306 判断数据库存活

3、 通过 ICMP 判断 主机网络是否正常


官网:https://github.com/prometheus/blackbox_exporter


下载二进制安装包

通过网盘分享的文件:blackbox_exporter-0.25.0.linux-amd64.tar.gz
链接: https://pan.baidu.com/s/1bKMA57mrVhbw_QIwgu3gSQ?pwd=cs6r 提取码: cs6r 

解压

tar xf blackbox_exporter-0.27.0.linux-amd64.tar.gz  -C /usr/local/


创建用户并配置权限

sudo groupadd --system blackbox_exporter
sudo useradd -s /sbin/nologin --system -g blackbox_exporter blackbox_exporter
sudo mkdir -p /var/log/blackbox_exporter

sudo chown blackbox_exporter:blackbox_exporter /usr/local/blackbox_exporter-0.25.0.linux-amd64/
sudo chown -R blackbox_exporter:blackbox_exporter /var/log/blackbox_exporter


配置开机自启动

cat /etc/systemd/system/blackbox-exporter.service 

[Unit]
Description=Blackbox Exporter
Documentation=https://github.com/prometheus/blackbox_exporter
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=blackbox_exporter
Group=blackbox_exporter
# 确保 blackbox_exporter 二进制文件路径正确
ExecStart=/usr/local/blackbox_exporter-0.25.0.linux-amd64/blackbox_exporter \
  --config.file=/usr/local/blackbox_exporter-0.25.0.linux-amd64/blackbox.yml \
  --web.listen-address=0.0.0.0:9115
Restart=always
RestartSec=5
# 限制资源使用
LimitNOFILE=65536
LimitNPROC=65536
# 安全加固
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/var/log/blackbox_exporter
ProtectHome=true
ProtectKernelTunables=true
ProtectControlGroups=true
ProtectKernelModules=true
ProtectClock=true
PrivateDevices=true
MemoryDenyWriteExecute=true
RestrictNamespaces=true
RestrictRealtime=true
LockPersonality=true
SystemCallFilter=@system-service
SystemCallErrorNumber=EPERM

[Install]
WantedBy=multi-user.target


sudo systemctl daemon-reload
sudo systemctl start blackbox-exporter
sudo systemctl status blackbox-exporter
sudo systemctl enable blackbox-exporter

访问测试
http://10.0.0.235:9115/


配置 target 域名进行测试

http://10.0.0.235:9115/probe?target=www.greytracks.com&module=http_2xx
http://10.0.0.235:9115/probe?target=www.baidu.com&module=http_2xx


案例 1 blackbox 监控 网站业务存活


vim /softwares/prometheus-2.53.4.linux-amd64/prometheus.yml

  # 指定作业的名称,生成环境中,通常是指一类业务的分组配置。
  - job_name: 'oldboyedu-blackbox-exporter-http'
    # 修改访问路径,若不修改,默认值为"/metrics"
    metrics_path: /probe
    # 配置URL的相关参数
    params:
      # 此处表示使用的是blackbox的http模块,从而判断相应的返回状态码是否为200
      module: [http_2xx]
    # 静态配置,需要手动指定监控目标
    static_configs:
        # 需要监控的目标
      - targets:
          # 支持https协议
        - https://www.greytracks.com/
          # 支持http协议
        - http://10.0.0.235:9090
          # 支持http协议和自定义端口
        - http://10.0.0.235:3000
    # 对目标节点进行重新打标签配置  下面的配置不要动,只改 replacement的地址
    relabel_configs:
        # 指定源标签,此处的"__address__"表示内置的标签,存储的是被监控目标的IP地址
      - source_labels: [__address__]
        # 指定目标标签,其实就是在"Endpoint"中加了一个target字段(用于指定监控目标),
        target_label: __param_target
        # 指定需要执行的动作,默认值为"replace",常用的动作有: replace, keep, and drop。
        # 但官方支持十几种动作: https://prometheus.io/docs/prometheus/2.45/configuration/configuration/
        # 将"__address__"传递给target字段。
        action: replace
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__

        # 指定要替换的值,此处我指定为blackbox exporter的主机地址 !!!!
        replacement: 10.0.0.235:9115


检测配置有否有误

./promtool check config prometheus.yml


热加载

 curl -X POST http://10.0.0.235:9090/-/reload


验证webUI 是否配置生效

http://10.0.0.235:9090/targets?search=


导入grafana的模板ID


7587
13659

成功监控!!!


案例 2 blackbox 监控 端口存活


vim /softwares/prometheus-2.53.4.linux-amd64/prometheus.yml

  - job_name: 'greytracks-blackox-exporter-tcp'
    metrics_path: /probe
    params:
      module: [tcp_connect]
    static_configs:
      - targets:
          - 10.0.0.41:80
          - 10.0.0.250:22
          - 10.0.0.235:22
          - 10.0.0.235:9090
          - https://greytracks.com:443
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.0.0.235:9115


检测配置有否有误

./promtool check config prometheus.yml


热加载

 curl -X POST http://10.0.0.235:9090/-/reload


验证webUI 是否配置生效

http://10.0.0.235:9090/targets?search=


到 grafana 查看监控确认

上一篇
下一篇