Site icon IT Draft

Настройка Blackbox Exporter для мониторинга HTTP, TCP, ICMP

Настройка Blackbox Exporter для мониторинга HTTP, TCP, ICMP 1

Prometheus + Blackbox Exporter (HTTP, TCP, ICMP)

Blackbox exporter — экспортер для Prometheus, который реализует сбор метрик внешних сервисов через HTTP, HTTPS, DNS, TCP, ICMP. Основное предназначение – проверять SSL-сертификаты и уведомлять (с помощью Alertmanager) о том, что срок действия сертификата завершается. 

Установка и настройка Blackbox Exporter

Добавляем пользователя и создаем каталог для конфига Blackbox Exporter

$ sudo useradd -M -s /bin/false blackbox
$ sudo mkdir /opt/blackbox

Скачиваем финальную версию, распаковываем её и копируем в каталог

$ wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
$ tar xzf blackbox_exporter-0.23.0.linux-amd64.tar.gz
$ cd blackbox_exporter-0.23.0.linux-amd64
$ sudo cp blackbox_exporter /usr/local/bin/

Создаем системный юнит

$ sudo nano /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]
User=blackbox
Group=blackbox
Restart=on-failure
RestartSec=5
Type=simple
AmbientCapabilities=CAP_NET_RAW
ExecStart=/usr/local/bin/blackbox_exporter \
    --config.file="/opt/blackbox/blackbox.yml" \
    --web.listen-address="127.0.0.1:9115"
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Параметр CAP_NET_RAW добавляется, что б Blackbox Exporter корректно выполнял ICMP-проверку хостов

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


Перечитывам юниты

$ sudo systemctl daemon-reload

Создаем конфигурационный файл blackbox.yml

$ sudo nano /opt/blackbox/blackbox.yml
modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      valid_status_codes: []
      method: GET
      preferred_ip_protocol: ip4
      fail_if_ssl: false
      fail_if_not_ssl: true
      tls_config:
        insecure_skip_verify: true
  http_post_2xx:
    prober: http
    http:
      method: POST
  tcp_connect:
    prober: tcp
    timeout: 5s
    tcp:
      preferred_ip_protocol: "ip4"
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
  icmp:
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: "ip4"
      ip_protocol_fallback: false

Добавляем сервис в автозагрузку и запускаем его

$ sudo systemctl enable --now blackbox_exporter
$ sudo systemctl status blackbox_exporter

Настройка Prometheus

Редактируем конфигурационный файл Prometheus, добавляем проверки: ICMP, tcp-портов, HTTP (в том числе и валидность ssl-сертификатов)

$ sudo nano /etc/prometheus/prometheus.yml 
...
  - job_name: 'Blackbox-ICMP'
    scrape_interval: 5m
    metrics_path: /probe
    params:
      module: [icmp]
    file_sd_configs:
      - files:
        - /etc/prometheus/targets.d/blackbox-icmp.yml
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115

  - job_name: 'Blackbox-TCP'
    scrape_interval: 5m
    metrics_path: /probe
    params:
      module: [tcp_connect]
    file_sd_configs:
      - files:
        - /etc/prometheus/targets.d/blackbox-tcp.yml
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115

  - job_name: 'Blackbox-HTTP'
    scrape_interval: 5m
    metrics_path: /probe
    params:
      module: [http_2xx]
    file_sd_configs:
      - files:
        - /etc/prometheus/targets.d/blackbox-http.yml
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115
...

Создаем файл со списком хостов для ICMP-проверки

$ sudo nano /etc/prometheus/targets.d/blackbox-icmp.yml
- targets:
  - ya.ru
  - 192.168.1.1
  - 127.0.0.1
  labels:
    alias: ping

Создаем файл со списком хостов для проверки tcp-портов

$ sudo nano /etc/prometheus/targets.d/blackbox-tcp.yml
- targets:
  - 192.168.1.25:1947
  labels:
    alias: tcp-connect

Создаем файл со списком хостов для HTTP-проверки, валидности SSL-сертификатов

$ sudo nano /etc/prometheus/targets.d/blackbox-http.yml
- targets:
  - itdraft.ru
  - ya.ru
  labels:
    alias: http

Перезапускаем Prometheus

$ sudo systemctl restart prometheus
$ sudo systemctl status prometheus
Exit mobile version