Мониторинг кластера Yandex Managed Service for Kubernetes с помощью Prometheus Operator с поддержкой Yandex Monitoring
Managed Service for Kubernetes позволяет выгружать метрики объектов кластера в системы мониторинга.
Из этой статьи вы узнаете, как настроить мониторинг кластера Yandex Managed Service for Kubernetes с помощью Prometheus Operator с поддержкой Yandex Monitoring.
Prometheus Operator с поддержкой Monitoring упрощает установку Prometheus Operator, популярного решения для мониторига кластеров Kubernetes, и добавляет интеграцию с системой мониторинга Yandex Monitoring. С ее помощью можно собирать, хранить и читать метрики из контейнеров, приложений и инфраструктуры. Система использует модель данных Prometheus и язык запросов PromQL
Чтобы настроить мониторинг кластера Managed Service for Kubernetes:
- Установите Prometheus Operator с помощью Helm-чарта или Yandex Cloud Marketplace.
- Настройте и проверьте алерты.
- Визуализируйте метрики.
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
В стоимость поддержки описываемого решения входят:
- Плата за мастер Managed Service for Kubernetes: (см. тарифы Managed Service for Kubernetes).
- Плата за узлы кластера Managed Service for Kubernetes: использование вычислительных ресурсов и хранилища (см. тарифы Yandex Compute Cloud).
- Плата за публичные IP-адреса для хостов кластера Managed Service for Kubernetes и узлов кластера Managed Service for Kubernetes, если для них включен публичный доступ (см. тарифы Yandex Virtual Private Cloud).
Перед началом работы
-
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Создайте кластер Managed Service for Kubernetes и группу узлов любой подходящей конфигурации с доступом в интернет и с группами безопасности, подготовленными ранее.
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Создайте API-ключ для сервисного аккаунта:
-
Если вы будете устанавливать Prometheus Operator с помощью Helm-чарта, выполните команду и сохраните полученный секретный ключ (
secret):yc iam api-key create --service-account-name=<имя_сервисного_аккаунта> -
Если вы будете устанавливать Prometheus Operator с помощью Cloud Marketplace, создайте API-ключ в формате JSON и сохраните его в файл
sa-key.json:yc iam api-key create \ --service-account-name=<имя_сервисного_аккаунта> \ --format=json | jq -c > sa-key.jsonСовет
Вы также можете автоматически создать новый API-ключ во время установки приложения.
-
-
Создайте воркспейс Prometheus:
Консоль управления- Откройте главную страницу сервиса
Monitoring. - На панели слева выберите Prometheus.
- Нажмите кнопку Создать воркспейс.
- Откройте главную страницу сервиса
Установите Prometheus Operator с помощью Helm-чарта
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Получите идентификатор воркспейса Prometheus:
Консоль управления- Откройте главную страницу сервиса
Monitoring. - Слева выберите раздел Prometheus.
- Выберите воркспейс Prometheus.
- Откроется вкладка Общая информация, где отображается идентификатор воркспейса — сохраните его.
- Откройте главную страницу сервиса
-
Чтобы установить Helm-чарт
с Prometheus Operator, выполните команду:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/prometheus/kube-prometheus-stack \ --version 72.6.2-1 \ --untar && \ helm install \ --namespace <пространство_имен_для_Prometheus_Operator> \ --create-namespace \ --set prometheusWorkspaceId=<идентификатор_воркспейса_Prometheus> \ --set iam_api_key_value_generated.secretAccessKey=<секретная_часть_API-ключа> \ prometheus ./kube-prometheus-stack/Эта команда также создаст новое пространство имен для работы Prometheus Operator.
Если вы укажете в параметре
namespaceпространство имен по умолчанию, Prometheus Operator может работать некорректно. Используйте значение, отличное от всех существующих пространств имен, напримерprometheus-operator-space.Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm. -
Убедитесь, что поды Prometheus Operator перешли в состояние
Running:kubectl get pods --namespace=<пространство_имен_для_Prometheus_Operator> \ -l "release=prometheus"
Установите Prometheus Operator с помощью Cloud Marketplace
-
Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. -
Нажмите на имя нужного кластера Kubernetes и выберите вкладку Marketplace.
-
В разделе Доступные для установки приложения выберите Prometheus Operator с поддержкой Monitoring и нажмите кнопку Перейти к установке.
-
Задайте настройки приложения:
- Пространство имен — создайте новое пространство имен, например
prometheus-operator-space. Если вы оставите пространство имен по умолчанию, Prometheus Operator может работать некорректно. - Название приложения — укажите название приложения.
- Prometheus Workspace — выберите воркспейс Prometheus.
- API-ключ — укажите содержимое файла
sa-key.json.
- Пространство имен — создайте новое пространство имен, например
-
Нажмите кнопку Установить.
-
Дождитесь перехода приложения в статус
Deployed.
Настройте алертинг по метрикам
-
Создайте канал уведомлений, выбрав доступный способ отправки.
-
Настройте Alert Manager
, который отвечает за отправку уведомлений:-
Откройте главную страницу сервиса
Monitoring. -
Слева выберите раздел Prometheus.
-
Выберите воркспейс Prometheus.
-
Перейдите на вкладку Конфигурация Alert manager.
-
Нажмите кнопку Загрузить файл конфигурации и загрузите файл конфигурации
в форматеYAML.Пример файла конфигурации
global: resolve_timeout: 5m route: receiver: telegram routes: - receiver: "null" matchers: - severity="none" continue: false receivers: - name: telegram yandex_monitoring_configs: - channel_names: - "<имя канала уведомлений>" - name: "null" yandex_monitoring_configs: - channel_names: []
-
-
Добавьте тестовое правило алертинга:
cat <<EOF | kubectl apply -f - apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: release: kube-prometheus-stack name: test spec: groups: - name: test rules: - alert: Test annotations: description: this is a test alert summary: test alert expr: vector(1) labels: severity: warning EOF -
Дождитесь, пока в выбранный канал уведомлений придет алерт, или проверьте статус алерта в консоли управления:
- Откройте главную страницу сервиса
Monitoring. - Слева выберите раздел Prometheus.
- Выберите воркспейс Prometheus.
- Перейдите на вкладку Управление правилами.
- Нажмите на имя тестового алерта.
- Перейдите на вкладку Алерты.
- Убедитесь, что тестовый алерт перешел в состояние
FIRING.
- Откройте главную страницу сервиса
Визуализируйте метрики
Постройте график на основе метрик и добавьте его на дашборд.
Постройте график по метрикам
-
Откройте главную страницу сервиса
Monitoring. -
На панели слева выберите Метрики.
-
Вверху в списке Источник данных выберите Prometheus.
-
Выберите воркспейс.
-
Введите запрос на языке PromQL
. -
Чтобы отобразить на графике несколько линий, нажмите кнопку Добавить запрос и введите новый запрос.
-
Нажмите кнопку Выполнить запрос, чтобы построить график.
Получившийся график можно добавить на дашборд в качестве виджета.
Добавьте график на дашборд
- Постройте график.
- Справа вверху нажмите кнопку Добавить на дашборд.
- Введите название графика.
- Выберите облако и каталог.
- Выберите существующий дашборд или создайте новый.
- Выберите один из вариантов добавления графика:
- Добавить — график будет добавлен на дашборд, вы останетесь в разделе Метрики.
- Добавить и перейти к дашборду — график будет добавлен на дашборд, вы перейдете в раздел Дашборды. В разделе Метрики график не сохранится.
Совет
Вы также можете создать пустой дашборд и потом добавить на него нужные графики.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера Managed Service for Kubernetes публичный статический IP-адрес, удалите его.