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

Forgejo / Gitea

Forgejo и Gitea совместно используют один REST API, поэтому DumbMonit читает оба одним сборщиком: отвечает ли экземпляр, его проверка здоровья, сколько репозиториев, учетных записей и организаций он содержит, работают ли его запланированные задачи (проверки репозиториев, очистка, проверка обновлений) по их собственному интервалу и находятся ли его Actions runners в сети.

Два вызова должны быть успешными: /api/v1/version, общедоступный, и /api/v1/user, доказательство того, что токен доступа действительнен. Все остальное — проверка здоровья, подсчет репозиториев/учетных записей/организаций, запланированные задачи и Actions runners — читается из конечных точек, которые Forgejo и Gitea зарезервированы для учетных записей администраторов сайта, и пропускается без сбоя пробы, когда токен принадлежит обычному.

Отказ, который стоит отслеживать здесь: запланированная задача, которая перестала выполняться. Forgejo и Gitea продолжают обслуживать страницы и git операции, пока их внутренний планировщик застрял; никто не замечает, пока проверка обновления или проверка согласованности репозитория не запускаются в течение недель.

Все метрики имеют префикс dumbmonit_forgejo_.

МетрикаЧтоМетки
version_infoзначение 1version
token_is_admin1 когда учетная запись токена является администратором сайта
healthz_ok1 если только проверка здоровья не сообщает fail
healthz_check1 за каждый несбойный компонент (база данных, кэш)check
reposрепозитории, видимые учетной записи токена
users, orgsучетные записи и организации на экземпляре
cron_tasksзапланированные задачи, определенные на экземпляре
cron_task_overdue1 за каждую задачу, следующий запуск которой уже должен быть, 0 иначе; отключенные задачи (расписание -) пропускаютсяtask
runners_total, runners_online, runners_offlineActions runners известные экземпляру; online, idle и active считаются в сети
runner_offlineзначение 1 за каждый offline runner (максимум 32)runner
scrape_errorsвызовы только администратора, которые не работали при последней пробе (0 с обычным токеном, никогда не предпринимались)

Встроенные правила, которые применяются: Forgejo/Gitea runners all offline, Forgejo/Gitea scheduled task overdue, плюс Monitor unreachable. Оценка безопасности проверяет запланированные задачи: см. Vendor updates and other checks.

Forgejo и Gitea не имеют ролью администратора только для чтения: каждый вызов, зарезервированный для “admin”, нуждается в учетной записи с полными правами, а не делегате, ограниченном областью действия. Их API также не имеет эквивалента параметрам регистрации и двухфакторной аутентификации GitLab, и не имеет флага “update available” самоуправления — сравните версию выше с примечаниями к выпуску проекта вручную.

Панель выше графиков читает то, что проба сохранила; открытие страницы никогда не вызывает Forgejo или Gitea. Это говорит, что сначала не так (проверка здоровья не работает, runners не в сети, запланированная задача просрочена), затем версия, затем репозиторий, учетная запись и подсчет организаций.

Создание токена доступа на учетной записи администратора сайта

Заголовок раздела «Создание токена доступа на учетной записи администратора сайта»
  1. Создайте токен доступа на учетной записи администратора сайта: avatar → Settings → Applications → Generate new token. Назовите его следующим образом и отметьте области read:admin, read:repository и read:user.

    dumbmonit
  2. read:admin открывает подсчет администрации, запланированные задачи и Actions runners; без него, только версия и собственная учетная запись токена читаются, и остальное пропускается без сбоя пробы. Forgejo и Gitea также не имеют ролью администратора только для чтения.

  3. В DumbMonit введите адрес, например “forgejo.lan” (порт 3000) или “https://git.example.com” позади обратного прокси, и вставьте токен.

Проверка токена вручную из хоста DumbMonit:

curl --header 'Authorization: token YOUR-TOKEN' 'https://git.example.com/api/v1/version'
Учетные данныеПоля
Токен доступаОтправляется как Authorization: token ….

Адрес: имя хоста (forgejo.lan) или host:port. Параметры: протокол (HTTP по умолчанию — установите обратный прокси с TLS перед ним для чего-либо кроме LAN), порт (3000), проверка сертификата и timeout запроса (15 s).

Проверено на Forgejo 9.0 (официальный источник API и определения Swagger, разделенные с Gitea).