Script Exporter Мониторим что угодно через Prometheus
Представьте ситуацию: у вас есть куча полезных скриптов для проверки состояния системы, но их результаты никак не интегрируются в ваш мониторинг. Знакомая проблема? Именно для таких случаев и создан Script Exporter — элегантное решение от разработчика ricoberger, которое превращает любой скрипт в источник метрик для Prometheus.
Что умеет этот экспортер?
Script Exporter — это специальный сервис на Go, который:
- Выполняет ваши скрипты по запросу Prometheus
- Преобразует их вывод в корректные метрики
- Возвращает данные в формате, понятном Prometheus
- Даже если скрипт ничего не выводит — сообщает статус выполнения и время работы
Причем работает это не только с bash-скриптами, но и с любыми исполняемыми командами в системе.
Топ-5 возможностей, которые вас зацепят
-
Гибкая конфигурация скриптов В одном конфигурационном файле можно описать десятки скриптов с разными параметрами. Например:
scripts: - name: check_disk command: ["/bin/bash", "scripts/disk_check.sh"] args: ["-d", "/"] -
Кеширование результатов Не нужно запускать тяжелые скрипты при каждом сканировании Prometheus:
cache: duration: 60 # Кешируем на 60 секунд -
Работа с таймаутами Можно ограничить время выполнения скриптов и даже передавать это время в сам скрипт через переменные окружения:
timeout: max_timeout: 30 enforced: true -
Поддержка sudo Для скриптов, требующих повышенных прав (не забывайте про настройку sudoers!):
sudo: true -
Автоматическое обнаружение сервисов Встроенный механизм service discovery для автоматической регистрации скриптов в Prometheus.
Как это работает изнутри
Технически Script Exporter — это HTTP-сервер на Go, который:
- Принимает запросы от Prometheus на эндпоинте
/probe - Запускает указанный скрипт с параметрами
- Перехватывает stdout/stderr и код возврата
- Форматирует результат в метрики Prometheus
- Возвращает ответ в формате text/plain
Архитектура проста и надежна, а сам экспортер потребляет минимум ресурсов.
Практические кейсы использования
Вот несколько ситуаций, где Script Exporter реально выручает:
- Мониторинг кастомных метрик из legacy-систем, у которых нет своего экспортера
- Проверка доступности специфичных сервисов через ping/telnet/curl
- Сбор бизнес-метрик, которые рассчитываются скриптами (например, количество пользователей в системе)
- Интеграция с Docker/Kubernetes через
docker exec - Долгие проверки, которые не хочется выполнять при каждом сканировании (кеширование спасает!)
Из коробки идут примеры скриптов для:
- Проверки ping до хоста
- Исполнения команд в Docker-контейнере
- Тестирования работы с таймаутами
- Демонстрации кеширования
Как начать использовать
Развернуть Script Exporter можно тремя способами:
- Как бинарный файл (скачиваем релиз и запускаем)
- В Docker-контейнере (есть готовый образ на GitHub Packages)
- В Kubernetes через Helm (официальный чарт)
Конфигурация описывается в YAML-файле, где для каждого скрипта можно указать:
- Команду и аргументы
- Переменные окружения
- Настройки таймаутов
- Параметры кеширования
Пример минимальной конфигурации Prometheus для работы с экспортером:
scrape_configs:
- job_name: script_exporter
metrics_path: /probe
params:
script: [check_disk]
static_configs:
- targets: [localhost:9469]
Вывод: кому это нужно
Script Exporter — идеальное решение для:
- DevOps-инженеров, которым нужно быстро интегрировать кастомные проверки в мониторинг
- Разработчиков, создающих свои экспортеры метрик без написания кода на Go
- Администраторов унаследованных систем, где нет стандартных экспортеров
Главные плюсы: ✅ Простота настройки ✅ Гибкость (работает с любыми скриптами) ✅ Минимальные накладные расходы ✅ Поддержка всех популярных способов развертывания
Если у вас есть скрипты, результаты которых хочется видеть в Grafana — попробуйте Script Exporter. Это один из тех инструментов, которые сразу приносят пользу с минимальными затратами времени на внедрение.
