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»