Script Exporter Мониторим что угодно через Prometheus

27 Jun, 2026
459
🔱 91
👥 6

Представьте ситуацию: у вас есть куча полезных скриптов для проверки состояния системы, но их результаты никак не интегрируются в ваш мониторинг. Знакомая проблема? Именно для таких случаев и создан Script Exporter — элегантное решение от разработчика ricoberger, которое превращает любой скрипт в источник метрик для Prometheus.

Что умеет этот экспортер?

Script Exporter — это специальный сервис на Go, который:

  • Выполняет ваши скрипты по запросу Prometheus
  • Преобразует их вывод в корректные метрики
  • Возвращает данные в формате, понятном Prometheus
  • Даже если скрипт ничего не выводит — сообщает статус выполнения и время работы

Причем работает это не только с bash-скриптами, но и с любыми исполняемыми командами в системе.

Топ-5 возможностей, которые вас зацепят

  1. Гибкая конфигурация скриптов В одном конфигурационном файле можно описать десятки скриптов с разными параметрами. Например:

    scripts:
      - name: check_disk
        command: ["/bin/bash", "scripts/disk_check.sh"]
        args: ["-d", "/"]
    
  2. Кеширование результатов Не нужно запускать тяжелые скрипты при каждом сканировании Prometheus:

    Реклама
    cache:
      duration: 60 # Кешируем на 60 секунд
    
  3. Работа с таймаутами Можно ограничить время выполнения скриптов и даже передавать это время в сам скрипт через переменные окружения:

    timeout:
      max_timeout: 30
      enforced: true
    
  4. Поддержка sudo Для скриптов, требующих повышенных прав (не забывайте про настройку sudoers!):

    sudo: true
    
  5. Автоматическое обнаружение сервисов Встроенный механизм service discovery для автоматической регистрации скриптов в Prometheus.

Как это работает изнутри

Технически Script Exporter — это HTTP-сервер на Go, который:

  1. Принимает запросы от Prometheus на эндпоинте /probe
  2. Запускает указанный скрипт с параметрами
  3. Перехватывает stdout/stderr и код возврата
  4. Форматирует результат в метрики Prometheus
  5. Возвращает ответ в формате text/plain

Архитектура проста и надежна, а сам экспортер потребляет минимум ресурсов.

Практические кейсы использования

Вот несколько ситуаций, где Script Exporter реально выручает:

  • Мониторинг кастомных метрик из legacy-систем, у которых нет своего экспортера
  • Проверка доступности специфичных сервисов через ping/telnet/curl
  • Сбор бизнес-метрик, которые рассчитываются скриптами (например, количество пользователей в системе)
  • Интеграция с Docker/Kubernetes через docker exec
  • Долгие проверки, которые не хочется выполнять при каждом сканировании (кеширование спасает!)

Из коробки идут примеры скриптов для:

  • Проверки ping до хоста
  • Исполнения команд в Docker-контейнере
  • Тестирования работы с таймаутами
  • Демонстрации кеширования

Как начать использовать

Развернуть Script Exporter можно тремя способами:

  1. Как бинарный файл (скачиваем релиз и запускаем)
  2. В Docker-контейнере (есть готовый образ на GitHub Packages)
  3. В 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. Это один из тех инструментов, которые сразу приносят пользу с минимальными затратами времени на внедрение.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.