Экспортеры Prometheus
Назначение каталога
config/prometheus_exporters/ содержит экспортёры Prometheus — утилиты, которые собирают метрики из различных источников (HTTP-API, БД, операционной системы) и публикуют их в формате Prometheus. Большинство сервисов разворачиваются в Docker и подключаются к общей сети monitoring_net, что позволяет vmagent автоматически их скрейпить.
1. Структура каталогов
config/prometheus_exporters/
├─ asuppk_exporter/ # кастомный FastAPI-экспортёр для АСУ ППК
│ └─ deployment/docker/ # compose-файлы, .env, исходники
├─ blackbox_exporter/ # generic blackbox-экспортёр (HTTP/TCP/ICMP probes)
│ └─ deployment/docker/
├─ node_exporter_install/ # скрипт установки node_exporter на Linux
├─ windows_exporter_install/ # конфиг + PowerShell-инсталлятор для Windows exporter
└─ windows_sql_exporter_install/# шаблоны + скрипт для windows_sql_exporter (MSSQL)
Каждый подпроект самодостаточен – вы можете развернуть только нужные экспортёры.
2. Обзор доступных экспортёров
| Экспортёр | Назначение | Как разворачивается |
|---|---|---|
| asuppk_exporter | Собирает бизнес-метрики АСУ ППК из MSSQL, SFTP и REST-API. Публикует /metrics + несколько REST эндпоинтов (dashboard, utils, TTS). |
docker compose (три стека: docker-compose.yml, docker-compose-dashboard.yml, docker-compose-alert-tts.yml) |
| blackbox_exporter | Проверка доступности HTTP/HTTPS, TCP, ICMP. | docker compose |
| node_exporter_install | Установка node_exporter (Linux). |
Bash-скрипт выполняется на целевом узле |
| windows_exporter_install | Установка windows_exporter (Windows). |
PowerShell-скрипт выполняется на целевом узле |
| windows_sql_exporter_install | Экспортёр метрик MS SQL Server на Windows. | PowerShell-скрипт + YAML-шаблоны коллекторов |
3. asuppk_exporter — инструкция по запуску
- Подготовьте переменные окружения:
bash cd config/prometheus_exporters/asuppk_exporter/deployment/docker cp .env_example .env nano .env
| Переменная | Описание | Пример |
|---|---|---|
COMPOSE_PROJECT_NAME |
(опц.) префикс контейнеров | asuppk |
ASUPPKAPI_HOST |
Домен для FastAPI экспортёра | asuppk-exporter.example.com |
ASUPPKAPI_PORT |
Внутренний порт сервиса (Traefik label) | 8182 |
DASHBOARDAPI_HOST |
Домен REST-dashboards | asuppk-dashboard.example.com |
DASHBOARDAPI_PORT |
Порт dashboard API | 8183 |
ALERT_TTS_HOST |
Домен TTS сервиса | tts.example.com |
ALERT_TTS_PORT |
Порт TTS | 8125 |
SCRAPE_IP |
CIDR список, кому разрешён доступ к веб-интерфейсам | 10.0.0.0/8,192.168.0.0/16 |
-
Убедитесь, что существует внешняя сеть (создаётся один раз на хосте):
bash docker network create monitoring_net || true -
Запустите стек: ```bash # основной экспортёр + redis docker compose up -d
# dashboard API (необязательно) docker compose -f docker-compose-dashboard.yml up -d
# alert-tts (необязательно) docker compose -f docker-compose-alert-tts.yml up -d ```
-
(Опция) скопируйте production-конфиг без пересборки контейнера:
bash ./import_prod_config.sh # скрипт скопирует config/service_config_prod.json внутрь контейнера и перезапустит сервисы -
Проверьте:
https://$ASUPPKAPI_HOST/metrics— метрики Prometheushttps://$ASUPPKAPI_HOST/docs— интроспекция FastAPIhttps://$DASHBOARDAPI_HOST/get-tikets-stat-by-pay-kind/— REST эндпоинт
Обновление образа
docker compose pull asuppk_exporter dashboard_api alert_tts
docker compose up -d
4. blackbox_exporter — инструкция по запуску
- Сконфигурируйте версию образа (поумолчанию latest):
bash cd config/prometheus_exporters/blackbox_exporter/deployment/docker cp .env_example .env echo "BLACKBOX_EXPORTER_TAG=v0.24.0" >> .env - Запустите:
bash docker compose up -d - Измените
config/blackbox.yml, чтобы добавить свои проверки, затем перезапустите только контейнерblackbox— конфиг читается на старте.
Scrape-конфиг для vmagent уже подготовлен (job
blackbox), достаточно чтобы контейнер был в сетиmonitoring_net.
5. Установка системных экспортёров
5.1 node_exporter (Linux)
scp node_exporter_install/install_node_exporter_deb.sh user@host:/tmp
ssh user@host "bash /tmp/install_node_exporter_deb.sh"
Скрипт скачает последний .deb, зарегистрирует systemd-unit и откроет порт 9100.
5.2 windows_exporter (Windows)
- Скопируйте
windows_exporter_install/windows_exporter_install_update.ps1иconfig/windows_exporter.ymlна целевой сервер. - Запустите PowerShell от имени администратора:
powershell Set-ExecutionPolicy -Scope Process Bypass .\windows_exporter_install_update.ps1 -ConfigPath "C:\windows_exporter.yml" - Экспортёр слушает 9182. Добавьте firewall-rule при необходимости.
5.3 windows_sql_exporter
- Скопируйте содержимое папки
windows_sql_exporter_install/. - Отредактируйте
sql_exporter.ymlи нужные*.collector.yml(DSN, запросы). - Запустите PowerShell-скрипт
sql_exporter_install_update.ps1на сервере с MSSQL. - Экспортёр по умолчанию публикует 9399.
6. Добавление нового экспортёра
- Создайте подпапку в
config/prometheus_exporters/<my_exporter>/. - Для контейнеров придерживайтесь шаблона:
deployment/docker/docker-compose.yml.env_exampleс описанием переменныхconfig/— конфиги, которые монтируются as-is внутрь контейнера- Подключайте контейнер к сети
monitoring_netи описывайте необходимые Traefik labels. - Допишите инструкцию в этот файл и сделайте PR 😊.
7. FAQ / Troubleshooting
- Экспортёр не виден в Grafana – проверьте, что контейнер находится в сети
monitoring_netи vmagent видит его вtargets. connection refused– убедитесь, что переменная*_PORTв labels совпадает с портом, на котором слушает приложение внутри контейнера.- Let’s Encrypt не выдаёт сертификат – домен в
*_HOSTдолжен указывать на IP Docker-хоста, а порты 80/443 не должны быть заняты.
Если вопрос не решён — загляните в логи контейнера:
docker compose logs -f <service_name>