GitLab (self-managed)
Обслуживает ли запросы самостоятельно развёрнутый экземпляр GitLab и справляются ли части, которые незаметно несут на себе всё остальное: очереди Sidekiq, раннеры CI/CD, миграции базы данных, оставшиеся после обновления, и — для GitLab Enterprise Edition — лицензия.
DumbMonit читает /api/v4/version с помощью персонального токена доступа —
это единственный вызов, который обязан завершиться успешно: он доказывает, что
GitLab отвечает и токен действителен. Всё остальное — Sidekiq, раннеры,
миграции, статистика экземпляра, настройки регистрации и двухфакторной
аутентификации, лицензия и подробная проверка готовности — читается через
эндпоинты, которые GitLab резервирует для учётных записей администраторов, и
пропускается без сбоя опроса, если токен принадлежит обычной учётной записи.
Сбой, за которым стоит следить: отставание Sidekiq. GitLab продолжает отдавать страницы, пока очередь его фоновых воркеров растёт, и ничто на странице об этом не говорит, пока уведомление, вебхук или обновление конвейера CI не опоздает на минуты или часы.
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики имеют префикс dumbmonit_gitlab_.
| Метрика | Что | Метки |
|---|---|---|
version_info | значение 1 | version, revision |
readiness_check | 1, когда компонент проверки готовности (база данных, кэш, очереди, общее состояние, Gitaly) не в состоянии ok; отсутствует, если GitLab не предоставляет её DumbMonit (см. ниже) | check |
sidekiq_queue_backlog, sidekiq_queue_latency_seconds | ожидающие задания и их возраст, по очередям Sidekiq | queue |
runners_total, runners_online, runners_offline | раннеры CI/CD, известные экземпляру | |
runner_offline | значение 1 для каждого отключённого раннера (не более 32) | runner |
migrations_pending | миграции базы данных, которые осталось применить | |
migration_pending | значение 1 для каждой ожидающей миграции (не более 32) | migration |
projects, users, groups, forks, issues, merge_requests | счётчики по всему экземпляру | |
signup_enabled | 1, пока открыта публичная регистрация | |
two_factor_required | 1, пока каждый пользователь обязан настроить двухфакторную аутентификацию | |
license_info | значение 1 (только Enterprise Edition) | plan |
license_expired, license_expiry_seconds | истекла ли лицензия и сколько времени осталось | |
pipelines_failed_recent, pipelines_pending | неудавшиеся конвейеры за окно просмотра и конвейеры, ожидающие или выполняющиеся сейчас — только для проектов, перечисленных в параметре “Projects watched for CI health” | project |
scrape_errors | вызовы, доступные только администратору, которые завершились неудачей при последнем опросе (0 при обычном токене, для которого они не выполнялись) |
Применяются встроенные правила: все раннеры GitLab отключены, высокий backlog Sidekiq в GitLab, ожидающие миграции GitLab, истекающая лицензия GitLab, а также Монитор недоступен. Оценка безопасности проверяет настройки двухфакторной аутентификации и регистрации, а также ожидающие миграции: см. Обновления вендора и другие проверки.
Что не отслеживается
Заголовок раздела «Что не отслеживается»В собственном REST API GitLab нет эндпоинта, который сообщал бы «доступен более новый релиз GitLab»: в отличие от Nextcloud или Paperless-ngx, нет самостоятельно сообщаемого флага обновления, который можно было бы прочитать, поэтому DumbMonit его не заявляет. Сравнивайте версию выше со страницей релизов GitLab вручную или следите за уведомлением GitLab о проверке обновлений в области администратора.
Состояние конвейеров CI читается только для перечисленных вами проектов: в API GitLab нет эндпоинта «все неудавшиеся конвейеры» для всего экземпляра, есть только поэкземплярный для каждого проекта.
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не обращается к GitLab. Сначала она сообщает, что не так (сбой компонента готовности, все раннеры отключены, большой backlog Sidekiq), затем версию, затем счётчики экземпляра и настройки, прочитанные через API администрирования.
Создание персонального токена доступа в учётной записи администратора
Заголовок раздела «Создание персонального токена доступа в учётной записи администратора»-
Создайте персональный токен доступа в учётной записи администратора: аватар → Edit profile → Access tokens → Add new token. Назовите его так, как показано ниже, задайте срок действия, который вам удобно продлевать, и отметьте только область read_api: она читает весь API и ничего не записывает.
dumbmonit -
Очереди Sidekiq, раннеры CI, ожидающие миграции, статистика экземпляра, настройки регистрации и двухфакторной аутентификации и лицензия читаются каждая через эндпоинт только для администратора: более тонкого делегирования для них в GitLab нет. Токен обычной учётной записи всё равно работает; тогда читается только версия, а остальное пропускается без сбоя опроса.
-
В DumbMonit введите адрес, по которому вы открываете GitLab, например “gitlab.example.com” (HTTPS на 443) или “https://git.example.com” за обратным прокси, и вставьте токен.
-
Чтобы дополнительно отслеживать конвейеры CI, перечислите числовые ID проектов (они показаны на странице обзора каждого проекта, под его названием) в параметре “Projects watched for CI health” через запятую.
Проверка готовности
Заголовок раздела «Проверка готовности»GitLab отвечает на /-/readiness кодом 404 любому клиентскому адресу, которого
нет в его списке разрешённых для мониторинга (по умолчанию только 127.0.0.1;
за Docker или обратным прокси DumbMonit приходит с другого адреса). DumbMonit
считает этот 404 признаком «не предоставляется»: панель готовности остаётся
пустой, и это не учитывается в scrape_errors. Чтобы включить её, добавьте
адрес DumbMonit в gitlab.rb и выполните gitlab-ctl reconfigure:
gitlab_rails['monitoring_whitelist'] = ['127.0.0.0/8', '::1/128', '192.168.1.10/32']Эндпоинт лицензии в Community Edition также отвечает 404, что тоже не является ошибкой.
Проверка токена вручную с хоста DumbMonit:
curl --header 'PRIVATE-TOKEN: YOUR-TOKEN' 'https://gitlab.example.com/api/v4/version'Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Персональный токен доступа | Отправляется в заголовке PRIVATE-TOKEN. |
Адрес: имя хоста (gitlab.example.com) или host:port. Параметры:
протокол (по умолчанию HTTPS), порт (443), проверка сертификата, тайм-аут
запроса (15 с), проекты, отслеживаемые для состояния CI (по умолчанию нет), и
окно просмотра неудавшихся конвейеров (24 ч).
Проверено на GitLab Enterprise Edition 17.5 (по официальной документации API).