Перейти к содержанию

Экспортеры 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 — инструкция по запуску

  1. Подготовьте переменные окружения: 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
  1. Убедитесь, что существует внешняя сеть (создаётся один раз на хосте): bash docker network create monitoring_net || true

  2. Запустите стек: ```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 ```

  1. (Опция) скопируйте production-конфиг без пересборки контейнера: bash ./import_prod_config.sh # скрипт скопирует config/service_config_prod.json внутрь контейнера и перезапустит сервисы

  2. Проверьте:

  3. https://$ASUPPKAPI_HOST/metrics — метрики Prometheus
  4. https://$ASUPPKAPI_HOST/docs — интроспекция FastAPI
  5. https://$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 — инструкция по запуску

  1. Сконфигурируйте версию образа (поумолчанию latest): bash cd config/prometheus_exporters/blackbox_exporter/deployment/docker cp .env_example .env echo "BLACKBOX_EXPORTER_TAG=v0.24.0" >> .env
  2. Запустите: bash docker compose up -d
  3. Измените 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)

  1. Скопируйте windows_exporter_install/windows_exporter_install_update.ps1 и config/windows_exporter.yml на целевой сервер.
  2. Запустите PowerShell от имени администратора: powershell Set-ExecutionPolicy -Scope Process Bypass .\windows_exporter_install_update.ps1 -ConfigPath "C:\windows_exporter.yml"
  3. Экспортёр слушает 9182. Добавьте firewall-rule при необходимости.

5.3 windows_sql_exporter

  1. Скопируйте содержимое папки windows_sql_exporter_install/.
  2. Отредактируйте sql_exporter.yml и нужные *.collector.yml (DSN, запросы).
  3. Запустите PowerShell-скрипт sql_exporter_install_update.ps1 на сервере с MSSQL.
  4. Экспортёр по умолчанию публикует 9399.

6. Добавление нового экспортёра

  1. Создайте подпапку в config/prometheus_exporters/<my_exporter>/.
  2. Для контейнеров придерживайтесь шаблона:
  3. deployment/docker/docker-compose.yml
  4. .env_example с описанием переменных
  5. config/ — конфиги, которые монтируются as-is внутрь контейнера
  6. Подключайте контейнер к сети monitoring_net и описывайте необходимые Traefik labels.
  7. Допишите инструкцию в этот файл и сделайте 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>