Метрики
Эндпоинт метрик доступен начиная с 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
Параметры метрик
| Параметр | Переменные окружения | Описание |
|---|---|---|
enabled | SEMAPHORE_METRICS_ENABLED | Включить или выключить эндпоинт /api/metrics. По умолчанию отключён. |
username | SEMAPHORE_METRICS_USERNAME | Имя пользователя Basic Auth, необходимое для сбора метрик с эндпоинта. |
password | SEMAPHORE_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"]