Перейти к основному содержимому

Метрики

к сведению

Эндпоинт метрик доступен начиная с Semaphore версии 2.20. Если у вас более старая версия, обновитесь, чтобы использовать эту возможность.

Semaphore предоставляет эндпоинт GET /api/metrics в стандартном текстовом формате Prometheus, поэтому существующая связка Prometheus + Grafana может отслеживать сервер без каких-либо внешних инструментов опроса.

Предоставляются две категории метрик:

  • Метрики процесса: статистика среды выполнения Go и процесса — количество горутин, память (heap/resident), процессорное время, паузы GC. Они предоставляются стандартными Go/process-коллекторами Prometheus.
  • Метрики задач, специфичные для нагрузки самого Semaphore:
    • semaphore_tasks_running (gauge): количество задач, выполняющихся прямо сейчас.
    • semaphore_tasks_total{status} (counter): общее количество завершённых задач с разбивкой по результату: success, error, stopped.

Обе категории обновляются в реальном времени при изменении состояния задач — задержки опроса нет, поскольку счётчики обновляются непосредственно внутри исполнителя задач в момент фактического изменения статуса задачи.

Включение метрик

Эндпоинт по умолчанию отключён и требует HTTP Basic Auth со статическими учётными данными уровня сервиса — не привязанными к какой-либо учётной записи пользователя, поскольку Prometheus не умеет выполнять интерактивный вход:

{
"metrics": {
"enabled": true,
"username": "prometheus",
"password": "changeme"
}
}

Или с помощью переменных окружения:

SEMAPHORE_METRICS_ENABLED=true
SEMAPHORE_METRICS_USERNAME=prometheus
SEMAPHORE_METRICS_PASSWORD=changeme

Параметры метрик

ПараметрПеременные окруженияОписание
enabledSEMAPHORE_METRICS_ENABLEDВключить или выключить эндпоинт /api/metrics. По умолчанию отключён.
usernameSEMAPHORE_METRICS_USERNAMEИмя пользователя Basic Auth, необходимое для сбора метрик с эндпоинта.
passwordSEMAPHORE_METRICS_PASSWORDПароль Basic Auth, необходимый для сбора метрик с эндпоинта (конфиденциальный).

Если enabled остаётся false (значение по умолчанию) либо учётные данные отсутствуют или неверны, каждый запрос к /api/metrics возвращает 401 Unauthorized.

Сбор метрик с помощью Prometheus

Настройте задание сбора (scrape job) с basic_auth, используя указанные выше учётные данные:

scrape_configs:
- job_name: semaphore
metrics_path: /api/metrics
basic_auth:
username: prometheus
password: changeme
static_configs:
- targets: ["<semaphore-host>:3000"]

Просмотр метрик в Grafana

Представление Explore в Grafana позволяет выполнять любой PromQL-запрос к метрикам напрямую и видеть необработанные результаты без предварительного создания дашборда:

Grafana Explore с собранными метриками Semaphore

Затем на основе тех же метрик можно построить дашборд — в этом примере обе категории охвачены четырьмя панелями: выполняющиеся задачи, общее количество задач по результату, горутины и резидентная память процесса.

Дашборд Grafana с панелями Semaphore