Перейти к содержанию

Статический GitLab Runner

Хост

Параметр Значение
VM gitlab-runner-build, id fv4d9jn4bkj3cbb7vvkg
Folder stage (b1g0rtnr6jduaog2q06m)
Адрес 84.201.181.3, node_exporter на :9100, job static-gitlab-runner
Доступ ssh -l sarex 84.201.181.3, далее sudo
Раннер gitlab-runner.service, executor docker, concurrent = 4, конфигурация /etc/gitlab-runner/config.toml
Docker 29.x, встроенный BuildKit, данные в /var/lib/docker
Своп /swapfile 8G
Управление вручную, VM не описана в terraform и ansible

Правила алертов: kube-prometheus-stack/.helm/templates/alerts/staticGitlabRunner.yaml.

Конфигурация раннера содержит токены. Файл целиком не выводить, нужные ключи читать через grep по имени ключа.

Алерты

Заполнение диска разобрано отдельно: StaticGitlabRunnerDiskAlmostFull.

Алерт Severity Условие Первая проверка
StaticGitlabRunnerNodeExporterDown critical up == 0 дольше 2m ssh на хост. Нет ответа: VM в консоли Yandex Cloud, serial-лог. Есть ответ: systemctl status node_exporter
StaticGitlabRunnerInodesUsageCritical critical занято больше 90% inode дольше 10m df -i /, затем sudo docker system prune по шагам из ранбука диска
StaticGitlabRunnerCpuUsageCritical critical CPU больше 90% дольше 15m top, sudo docker stats --no-stream: какая джоба нагружает
StaticGitlabRunnerMemoryUsageCritical critical занято больше 90% памяти дольше 10m free -h, sudo docker stats --no-stream
StaticGitlabRunnerMemoryPressureHigh critical PSI memory waiting больше 20% дольше 10m то же, что для памяти. Хост близок к зависанию, тяжёлую джобу отменить в GitLab
StaticGitlabRunnerSwapUsageHigh warning занято больше 50% свопа дольше 10m free -h, sudo docker stats --no-stream
StaticGitlabRunnerLoadCritical critical load15 больше 2 на ядро дольше 15m top, iostat -x 5 3: CPU или ожидание диска
StaticGitlabRunnerDiskIoSaturationCritical critical диск занят больше 90% времени дольше 15m iostat -x 5 3, sudo iotop -o
StaticGitlabRunnerNetworkErrorsWarning warning растут RX/TX errors на внешнем интерфейсе ip -s link, последние строки dmesg -T
StaticGitlabRunnerFilesystemReadonly critical ФС смонтирована read-only дольше 2m dmesg -T, искать строки с ext4 и I/O error. Обычно это ошибка диска, нужен перезапуск VM и fsck
StaticGitlabRunnerRebooted warning uptime меньше 10 минут journalctl -b -1 -n 100: причина перезагрузки
StaticGitlabRunnerRebootLoop critical больше одной перезагрузки за 2h journalctl --list-boots, journalctl -b -1 -n 200: OOM, kernel panic
StaticGitlabRunnerServiceDown critical gitlab-runner.service не active дольше 2m systemctl status gitlab-runner, journalctl -u gitlab-runner -n 100
StaticGitlabRunnerSystemdMetricsMissing warning нет метрики node_systemd_unit_state для gitlab-runner.service дольше 30m ps -o args= -C node_exporter: должны быть флаги --collector.systemd --collector.systemd.unit-include=gitlab-runner.service

Зависание под нагрузкой на память

Джобы не ограничены по памяти. Одна тяжёлая сборка (LTO, npm run build-module) способна занять всю память хоста. До добавления свопа хост полностью переставал отвечать на сеть и SSH. Признаки в журнале перед зависанием: Under memory pressure, flushing caches от systemd-journald и systemd-resolved.

Если хост не отвечает: перезапустить VM из консоли Yandex Cloud, после загрузки найти джобу по journalctl -b -1 и времени зависания.

Критерий закрытия

  1. Условие алерта не выполняется.
  2. Алерт перешёл в inactive.