Мониторинг инстанса Deckhouse Code складывается из лимитов, заданных в веб-интерфейсе, и встроенного Prometheus каждого типа установки.

Управление ресурсами

Лимиты и настройки производительности инстанса задаются администратором в веб-интерфейсе:

  1. Настройте лимиты на репозитории и артефакты:

    • Перейдите в «Admin» → «Настройки» → «Аккаунт и ограничения».
  2. Настройте производительность системы:

    • Перейдите в «Admin» → «Настройки» → «Сеть».

Встроенный мониторинг

У каждого типа установки свой источник метрик или оповещений; вкладка называет тип.

  • Пакет для ОС Linux
  • Omnibus Docker
  • Helm-чарт
  • Модуль Deckhouse Kubernetes Platform

Prometheus и экспортёры (node, postgres, redis и другие) устанавливаются вместе с пакетом и слушают только адрес 127.0.0.1, наружу порты не открыты. Проверьте их состояние:

sudo gitlab-ctl status | grep -E "prometheus|exporter"
# Готовность встроенного Prometheus.
curl -s http://127.0.0.1:9090/-/ready

Чтобы метрики забирала внешняя система мониторинга, задайте адрес прослушивания Prometheus в файле /etc/gitlab/gitlab.rb:

prometheus['listen_address'] = '0.0.0.0:9090'

Примените настройку:

sudo gitlab-ctl reconfigure

Ограничьте доступ к порту 9090 на файрволе адресами системы мониторинга.

  • firewalld (РЕД ОС)
  • ufw (Ubuntu)
sudo firewall-cmd --permanent --new-zone=monitoring
sudo firewall-cmd --permanent --zone=monitoring --add-source=<MONITORING_IP>/32
sudo firewall-cmd --permanent --zone=monitoring --add-port=9090/tcp
# Зона принимает весь трафик с этого адреса, поэтому открываются и базовые сервисы.
sudo firewall-cmd --permanent --zone=monitoring --add-service={ssh,http,https}
sudo firewall-cmd --reload
sudo ufw allow from <MONITORING_IP> to any port 9090 proto tcp

В контейнере работают тот же Prometheus и те же экспортёры, кроме node_exporter: образ его отключает. Образ объявляет только порты 80, 443 и 22, поэтому порт Prometheus нужно опубликовать при создании контейнера: добавьте -p 9090:9090 в команду docker run, у запущенного контейнера список опубликованных портов не меняется.

Задайте prometheus['listen_address'] в файле /etc/gitlab/gitlab.rb в томе с конфигурацией; значение, его смысл и ограничение доступа к порту описаны на вкладке «Пакет для ОС Linux». Настройка применится при следующем старте контейнера: команда gitlab-ctl reconfigure выполняется при каждом запуске.

Helm-чарт создаёт объект ServiceMonitor (кастомный ресурс Prometheus Operator) для каждого компонента, который отдаёт метрики Prometheus, если metrics.serviceMonitor.enabled равно true. metrics.serviceMonitor.labels задаёт лейблы, по которым его находит Prometheus.

metrics:
  serviceMonitor:
    enabled: true
    labels:
      release: <PROMETHEUS_RELEASE_LABEL>

Экземпляр Prometheus, настроенный на отслеживание объектов ServiceMonitor с такими лейблами — в пространстве имён code или во всём кластере, в зависимости от его собственной настройки, — обнаруживает их и собирает метрики без дополнительной настройки со стороны релиза.

Модуль поставляет собственные правила оповещений: список оповещений и действия по каждому из них приведены в разделе «Алерты» документации модуля.