Настройка Blackbox Exporter для мониторинга HTTP, TCP, ICMP
Blackbox exporter — экспортер для Prometheus, который реализует сбор метрик внешних сервисов через HTTP, HTTPS, DNS, TCP, ICMP. Основное предназначение - проверять SSL-сертификаты и уведомлять (с помощью Alertmanager) о том, что срок действия сертификата завершается.
- Установка Prometheus была рассмотрена в одной из предыдущих статей
Установка и настройка Blackbox Exporter
Добавляем пользователя и создаем каталог для конфига Blackbox Exporter
1
2
$ sudo useradd -M -s /bin/false blackbox
$ sudo mkdir /opt/blackbox
Скачиваем финальную версию, распаковываем её и копируем в каталог
1
2
3
4
$ 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/
Создаем системный Systemd Unit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ 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-проверку хостов
Перечитываем Systemd Unit
1
$ sudo systemctl daemon-reload
Создаем конфигурационный файл blackbox.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$ 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
Добавляем сервис в автозагрузку и запускаем его
1
2
$ sudo systemctl enable --now blackbox_exporter
$ sudo systemctl status blackbox_exporter
Настройка Prometheus
Редактируем конфигурационный файл prometheus.yml
, добавляем проверки: ICMP, tcp-портов, HTTP (в том числе и валидность ssl-сертификатов)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$ 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-проверки
1
2
3
4
5
6
7
$ sudo nano /etc/prometheus/targets.d/blackbox-icmp.yml
- targets:
- ya.ru
- 192.168.1.1
- 127.0.0.1
labels:
alias: ping
Создаем файл со списком хостов для проверки tcp-портов
1
2
3
4
5
$ sudo nano /etc/prometheus/targets.d/blackbox-tcp.yml
- targets:
- 192.168.1.25:1947
labels:
alias: tcp-connect
Создаем файл со списком хостов для HTTP-проверки, валидности SSL-сертификатов
1
2
3
4
5
6
$ sudo nano /etc/prometheus/targets.d/blackbox-http.yml
- targets:
- itdraft.ru
- ya.ru
labels:
alias: http
Перезапускаем Prometheus
1
2
$ sudo systemctl restart prometheus
$ sudo systemctl status prometheus