Рубрики
Uncategorized

Мониторинг Kubernetes initContainers с Prometheus

Kubernetes initcontainers — это аккуратный способ запустить произвольный код до начала вашего контейнера. Это убери … Помечено с Куберанетами, дежоптом, прометейусом, SRE.

Kubernetes initcontainers — это аккуратный способ запустить произвольный код до начала вашего контейнера. Он гарантирует, что определенные предварительные условия выполняются до того, как ваше приложение будет запущено и работает. Например, это позволяет вам:

  • Запустите миграции базы данных с Django или Rails до вашего приложения начало
  • Убедитесь, что микросервис или API вы зависите от это работает

К сожалению, initContainers может потерпеть неудачу, и когда это происходит, вы, вероятно, хотите быть уведомленным, потому что ваше приложение никогда не начнется. Государственные метрики Kube обнаруживают множество кластерных метрик Kubernetes для Premetheus. Объединение двух мы можем контролировать и предупреждать, когда мы обнаруживаем проблемы с контейнерами. Недавно , запрос на тягу был объединен, что обеспечивает данные initContainer.

Метрика kube_pod_init_container_status_last_termined_reason говорит нам, почему конкретный initcontainer не смог запустить; Будь то потому, что он истек или столкнулся с ошибками.

Чтобы использовать метрики initContainer развертывают Prometheus и Kube-State-Metrics. Затем нацените на сервер метрики в своем PROMETHEUS SCRAPE_CONFIGS, чтобы убедиться, что мы вытягиваем все метрики кластера в Prometheus:

- job_name: 'kube-state-metrics'
  static_configs:
    - targets: ['kube-state-metrics:8080']

kube_pod_init_container_status_last_termined_reason Содержит метрический меток Причина Это может быть в пяти разных состояниях:

  • Завершенный
  • Oomkild.
  • Ошибка
  • ContainerCannotRun
  • Умесел

Мы хотим быть предупрежденным всякий раз, когда метрика, которая не «завершена», соскоблена, потому что это означает, что initContainer не удался запустить. Вот пример правила оповещения.

groups:
  - name: Init container failure
    rules:
      - alert: InitContainersFailed
        expr: 1
        annotations:
          summary: '{{ $labels.container }} init failed'
          description: '{{ $labels.container }} has not completed init containers with the reason {{ $labels.reason }}'

Счастливый мониторинг!

Оригинал: «https://dev.to/adinhodovic/monitoring-kubernetes-initcontainers-with-prometheus-31i5»