首页 > 其他分享 >Prometheus-2:blackbox_exporter黑盒监控

Prometheus-2:blackbox_exporter黑盒监控

时间:2023-07-02 11:56:43浏览次数:48  
标签:__ exporter http target Prometheus blackbox example

黑盒监控blackbox_exporter

前边介绍有很多exporter可以直接将metrics暴露给Prometheus进行监控,这些称为“白盒监控”,那些exporter无法监控到的指标呢?或者未暴露Metrics给Prometheus的一些服务怎么办?这时就要用到 blackbox_exporte “黑盒监控”。 blackbox_exporte支持用户通过:HTTP、HTTPS、DNS、TCP和ICMP的方式对网络进行探测,还可以探测SSL证书过期时间。

部署及使用blackbox_exporter

部署blackbox_exporter

这里以linux二进制部署为例:
  1. 下载安装包
curl -LO https://github.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gz
  1. 展开程序包:
tar xf blackbox_exporter-0.22.0.linux-amd64.tar.gz -C /usr/local/
ln -sv /usr/local/blackbox_exporter-0.22.0.linux-amd64 /usr/local/blackbox_exporter
  1. 创建用户,或prometheus用户已经存在,可略过该步骤:
useradd -r prometheus
  1. 创建Systemd Unitfile,保存于/usr/lib/systemd/system/blackbox_exporter.service文件中:
[Unit]
Description=blackbox_exporter
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/blackbox_exporter/blackbox_exporter \
    --config.file=/usr/local/blackbox_exporter/blackbox.yml \
    --web.listen-address=:9115
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 启动服务:
systemctl daemon-reload
systemctl start blackbox_exporter.service
systemctl enable blackbox_exporter.service
  1. 验证监听的端口,并测试访问其暴露的指标
ss -tnlp | grep '9115'
curl localhost:9115/metrics
随后即可访问Blackbox Exporter的Web UI,其使用的URL如下,其中的<host_ip>要替换为节点的实际地址:http://<host_ip>:9115/

icmp监控,监控主机存活状态

prometheus 添加相关监控,Blackbox 使用默认配置启动即可 vi /usr/local/prometheus/prometheus.yml
  - job_name: "icmp_ping"
    metrics_path: /probe
    params:
      module: [icmp]  # 使用icmp模块
    file_sd_configs:
    - refresh_interval: 10s #检测时间间隔
      files:
      - "ping/ping_status*.yml"  #具体的配置文件路径
    relabel_configs:
    - source_labels: [__address__]
      regex: (.*)(:80)?
      target_label: __param_target
      replacement: ${1}
    - source_labels: [__param_target]
      target_label: instance
    - source_labels: [__param_target]
      regex: (.*)
      target_label: ping
      replacement: ${1}
    - source_labels: []
      regex: .*
      target_label: __address__
      replacement: 127.0.0.1:9115
这里有很多relabel的操作,下篇博客会详细讲解
创建对应的ping目录
cd /usr/local/prometheus/
mkdir ping
cd ping
vi ping_status.yml
- targets: ['monitor.example.com']
  labels:
    group: '跳板机'
- targets: ['10.xx.xx.xx','10.xx.xx.xx','10.xx.xx.xx']
  labels:
    group: 'k8s cluster'
- targets: ['www.baidu.com']
  labels:
    group: '百度' 
配置完成后,可以检查配置文件语法,并让Prometheus重载配置。
./promtool check config prometheus.yml 
curl -XPOST monitor.example.com:9090/-/reload
打开Prometheus web UI,可以看到,已经监控到了主机icmp情况: 0

http监控

编辑prometheus的主配置文件prometheus.yml,添加类似如下内容,即可用户对目标站点的探测。
  # Blackbox Exporter
  - job_name: 'http_get_status'
    metrics_path: /probe
    params:
      module: [http_2xx]  # Look for a HTTP 200 response.
    file_sd_configs:
    - refresh_interval: 2m
      files:
      - "httpget/http_get*.yml"  #具体的配置文件
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: "monitor.example.com:9115"  # 指向实际的Blackbox exporter.
      - target_label: region
        replacement: "local"
vi httpget/http_get.yml
static_configs:
- targets:
  - "https://monitor.example.com"
  - "http://monitor.example.com:8080"
  - "www.google.com"
      refresh_interval: 2m
重新加载Prometheus
curl -XPOST monitor.example.com:9090/-/reload
展示: 0 这里要注意,blackbox下并不是prometheus中State状态为UP就认为是正常状态,其实并不然,这里我们随便写一个不存在的域名,例如:http://www.buzhida2222o.com,这里看也是UP状态: 0 但实际看其的metrics指标并不正常,探活的指标是失败,这里不确定是BUG还是怎样。

tcp端口监控

大体的步骤都是一致的,这里就直接上配置:
- job_name: 'tcp_port_status'
  metrics_path: /probe
  params:
    module: [tcp_connect]
  static_configs:
    - targets: ['monitor.example.com:80','monitor.example.com:8080','monitor.example.com:443']
      labels:
        instance: 'port_status'
        group: 'tcp'
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: monitor.example.com:9115
成功监控: 0 至此,黑盒监控中常用的一些功能介绍完毕,监控项配置完毕后,可以通过导入dashboard到grafana来更直观的查看监控数据。

自定义blackbox.yml

blackbox的默认监控配置也可以进行自定义修改,例如http GET添加一些headers,设置boby_size_limit值或判断一些response body是否符合预期,还有一些TLS的设置等等,我们可以参考官网文档中给出的example来进行自定义:
# github地址
https://github.com/prometheus/blackbox_exporter

# github中blackbox.yml各配置项解析
blackbox_exporter/CONFIGURATION.md at master · prometheus/blackbox_exporter · GitHub

# github中example文件
blackbox_exporter/example.yml at master · prometheus/blackbox_exporter · GitHub
这里我们做一个演示https及私有TLS证书的演示,监控证书过期时间。 首先需要更改默认的vim blackbox.yml
modules:
  http_2xx:
    prober: http
    http:
      preferred_ip_protocol: "ip4"
      valid_http_versions: ["HTTP/1.1", "HTTP/2"]
      valid_status_codes: [200,301,302,303]
      tls_config:
        insecure_skip_verify: true
  http_ca_example:
    prober: http
    http:
      method: GET
      preferred_ip_protocol: "ip4"
      valid_http_versions: ["HTTP/1.1", "HTTP/2"]
      fail_if_ssl: false
      fail_if_not_ssl: true
      tls_config:
        insecure_skip_verify: false
        ca_file: /usr/local/blackbox_exporter/certs/ca.crt
        cert_file: /usr/local/blackbox_exporter/certs/server.crt
        key_file: /usr/local/blackbox_exporter/certs/server.key
http_2xx: 在此模块的基础上添加了请求状态码的校验,并设置了tls校验直接跳过,这种就比较省事,可以直接跳过证书的校验。 http_ca_example: 此模块为新增,主要配置了tls证书的一些配置,添加ca、证书和私钥的文件位置,使blackbox请求时带着证书。 配置完成后,重启blackbox服务:
systemctl restart blackbox_exporter.service
然后配置prometheus.yml添加对应模块的使用:
  - job_name: 'http_get_status'
    metrics_path: /probe
    params:
      module: [http_2xx]  # Look for a HTTP 200 response.
    file_sd_configs:
    - refresh_interval: 2m
      files:
      - "httpget/http_get*.yml"  #具体的配置文件
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: "monitor.example.com:9115"  # 指向实际的Blackbox exporter.
      - target_label: region
        replacement: "local"

  - job_name: 'http_get_ca_status'
    metrics_path: /probe
    params:
      module: [http_ca_example]  
    file_sd_configs:
    - refresh_interval: 2m
      files:
      - "httpget/http_ca.yml"
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: "monitor.example.com:9115"  # 指向实际的Blackbox exporter.
      - target_label: region
        replacement: "beijing"
在对应的发现文件中,配置主机并重新加载prometheus配置,并查看监控状态:
curl -XPOST monitor.example.com:9090/-/reload
搜索指标
probe_http_duration_seconds{phase="tls"}

证书过期时间已经获取成功,这个时候可以导入ID为13230的Dashboard到Grafana,然后再设置一个告警rule,就可以完成TLS证书过期监控啦。 最终效果: 0  

 

 

标签:__,exporter,http,target,Prometheus,blackbox,example
From: https://www.cnblogs.com/v-fan/p/17520498.html

相关文章

  • prometheus
    prometheushttps://prometheus.io/FrommetricstoinsightPoweryourmetricsandalertingwiththeleadingopen-sourcemonitoringsolution. 架构https://juejin.cn/post/7201757033321267258PrometheusServer:用于收集和存储时间序列数据ClientLibrary:......
  • pmm1安装部署oracledb_exporter
    ########################被监控的oracle服务器上安装##################1.下载下载地址https://github.com/iamseth/oracledb_exporter#installationoracledb_exporter.tar.gz二进制文件包该文件里只有一个可执行文件oracledb_exporter-0.5.0.tar.gz源码包,我们需要解压该包......
  • 1普罗米修斯搭建_prometheus
    搭建prometheus一.更新系统时间1.下载ntp工具yuminstall-yntp2.更新系统时间ntpdatepool.ntp.org二、安装prometheus1.在普罗米修斯宿主机创建映射文件mkdir-p/root/PrometheustouchPrometheus.yml在yml文件中添加以下配置:global:scrape_interval:15s......
  • 3普罗米修斯搭建_node_exporter
    搭建node_exporter监控一.被监控宿主机,下node_exporter容器执行命令:dockerrun-d-p9100:9100-v/proc:/host/proc:ro-v/sys:/host/sys:ro-v/:/rootfs:roprom/node-exporter二.Peometheus宿主机,编辑prometheus.yml1.添加node_exporter监控配置-job_name:'node'static......
  • prometheus 使用 ipmi exporter 增加硬件级别监控
    prometheus监控硬件安装ipmitool并加载相应模块yuminstallipmitoolfreeipmi-ymodprobeipmi_msghandlermodprobeipmi_devintfmodprobeipmi_poweroffmodprobeipmi_simodprobeipmi_watchdog下载ipmi_exporter源码包wgethttps://github.com/soundcloud/ipmi_......
  • 使用lightdb-em或Prometheus+grafana监控lightdb/PostgreSQL
    lightdb提供了一体化的运维监控平台lightdb-em,支持集中式的监控所有的lightdb实例以及postgresql,包括单机、高可用、分布式。其架构如下: lightdb-em功能:  详细的使用可以参考官方文档,运维指南。安装包可从lightdb官网下载。如果不想使用lightdb-em......
  • prometheus 监控 hadoop + Hbase + zookeeper + mysql exporter
    1. run JMX exporter as a java agent with all the four daemons. For this I have added EXTRA_JAVA_OPTS in hadoop-env.sh and yarn-env.sh :[root@cloud01hadoop]#catyarn-env.sh|egrep-v'^$|#'exportYARN_RESOURCEMANAGER_OPTS="$YARN_RESOURC......
  • Prometheus文档--1概述
    概述什么是Prometheus?Prometheus是一个开源监控系统和报警工具,Prometheus将其指标收集并存储为时间序列数据,即指标信息与记录的时间戳以及称为标签的可选键值对一起存储。特征:Prometheus的主要特点是:具有指标名称和键/值对标识的时间序列数据的多维数据模型PromQL,一种......
  • 使用 JMX-Exporter 监控 Kafka 和 Zookeeper
    JVM默认会通过JMX的方式暴露基础指标,很多中间件也会通过JMX的方式暴露业务指标,比如Kafka、Zookeeper、ActiveMQ、Cassandra、Spark、Tomcat、Flink等等。掌握了JMX监控方式,就掌握了一批程序的监控方式。本节介绍JMX-Exporter的使用,利用JMX-Exporter把JMX监控数据......
  • prometheus安装和使用记录
    Gettingstarted|PrometheusConfiguration|PrometheusDownload|PrometheusDownloadGrafana|GrafanaLabs #prometheusmkdir-m=777-p/data/{download,app_logs,app/prometheus}cd/data/downloadwgethttps://github.com/prometheus/prometheus/relea......