美文网首页
blackbox_exporter的使用

blackbox_exporter的使用

作者: huan1993 | 来源:发表于2021-03-21 10:42 被阅读0次

    一、需求

    有些时候,我们想监听服务器的某个端口是否存在,监听http的请求是否正确时,这个时候就可以使用 blackbox_exporter来实现。

    注意:
    blackbox exporter 可以实现对 httphttpstcp(可以实现服务器接口是否在线)icmp(实现主机探活)dns的探测。

    二、blackbox_exporter的安装

    1、下载

    
    # 下载
    wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.darwin-amd64.tar.gz
    # 解压
    tar -zxvf blackbox_exporter-0.18.0.darwin-amd64.tar.gz
    # 重命名
    mv blackbox_exporter-0.18.0.darwin-amd64/ blackbox_exporter
    # 进入 blackbox_exporter 目录
    cd blackbox_exporter
    
    选择对应的版本进行下载

    下载地址-https://github.com/prometheus/blackbox_exporter/releases

    2、编写 blackbox.yml 配置文件

    modules:
      http_2xx: # 这个名字是随便写的,但是需要在 prometheus.yml 配置文件中对应起来。
        prober: http # 进行探测的协议,可以是 http、tcp、dns、icmp
        timeout: 10s
      http_post_2xx:
        prober: http
        http:
          method: POST
      tcp_connect: # tcp检测,比如检测某个端口是否在线
        prober: tcp
      icmp: # icmp 检测,比如ping某个服务器
        prober: icmp
    

    注意:
    1、上方模块中 httpicmp 等的配置不全,这个可以通过访问 https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md查看完整的配置。

    2、如果要使用 icmp,那么针对不同的操作系统可能要提升权限。

    icmp权限提升

    3、启动 blackbox_exporter

    #!/usr/bin
    
    nohup /Users/huan/soft/prometheus/blackbox_exporter/blackbox_exporter \
    --config.file="/Users/huan/soft/prometheus/blackbox_exporter/blackbox.yml" \
    --web.listen-address=":9098" \
    --log.level=debug \
    > logs/blackbox.out 2>&1 &
    

    访问 http://localhost:9098

    blackbox_exporter启动后的界面

    4、和 prometheus 集成

    prometheus.yml 配置文件的编写。

    scrape_configs:
      - job_name: 'blackbox_http_2xx' # 配置get请求检测
        scrape_interval: 30s
        metrics_path: /probe
        params:
          module: [http_2xx]
        static_configs:
          - targets:         # 测试如下的请求是否可以访问的通
            - 127.0.0.1:10005
            - http://127.0.0.1:10005/hello/zhangsan
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
      - job_name: 'blackbox_http_post_2xx' # 配置post请求检测
        scrape_interval: 30s
        metrics_path: /probe
        params:
          module: [http_post_2xx]
        static_configs:
          - targets:              # 测试如下的post请求是否可以访问的通,该post请求不带参数
            - 127.0.0.1:10005
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
      - job_name: 'blackbox_http_ping' # 检测是否可以ping通某些机器
        scrape_interval: 30s
        metrics_path: /probe
        params:
          module: [icmp]
        static_configs:
          - targets:
            - 127.0.0.1
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
      - job_name: 'blackbox_tcp_connect' # 检测某些端口是否在线
        scrape_interval: 30s
        metrics_path: /probe
        params:
          module: [tcp_connect]
        static_configs:
          - targets:
            - 127.0.0.1:10006
            - 127.0.0.1:10005
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            replacement: 127.0.0.1:9098 # blackbox-exporter 服务所在的机器和端口
    
    

    手动访问

    手动访问 tcp_connect 这个模板(在blackbox.yml配置文件中执行的),判断 127.0.0.1机器上的10005端口是否是通的。

    curl http://127.0.0.1:9098/probe?target=127.0.0.1:10005&module=tcp_connect&debug=true
    

    解释:
    1、在 job 等于 blackbox_http_2xx 和 blackbox_http_post_2xx 我们测试来某个 get 和 post 请求是否可以访问的通。
    2、在 job 等于 blackbox_tcp_connect 中 测试来某个端口是否是通的。

    5、在 grafana 中查看。

    1、先在grafana网站上搜索一个 blackbox_exporter 的图表,此处我选择的是 12275

    2、导入到 grafana 中,并根据自己的实际情况做一些微改。

    grafana中查看blockbox_exporter的情况

    6、如果需要监控告警

    1、probe_success 指标可以判断我们的 icmp、tcp、http、post 监测是否正常。值为 1 正常,0不正常。
    2、probe_http_status_code 指标可以知道某个http请求返回的响应码。
    3、probe_ssl_earliest_cert_expiry 指标可以知道ssl证书何时过期。

    三、参考链接

    1、blackbox_exporter的下载地址
    2、blackbox.yml的编写例子
    3、blackbox.yml中可以编写的配置属性

    相关文章

      网友评论

          本文标题:blackbox_exporter的使用

          本文链接:https://www.haomeiwen.com/subject/wsdncltx.html