Как настроить мониторинг Kubernetes с использованием Prometheus, Grafana и Alertmanager на DigitalOcean

Статус: Устаревший

Эта статья устарела и больше не поддерживается.

Причина

Шаги в этом руководстве все еще работают, но создают конфигурацию, которую теперь необходимо сложно поддерживать.

Смотрите вместо этого

Эта статья может быть полезной в качестве справочного материала, но может не соответствовать лучшим практикам. Мы настоятельно рекомендуем использовать более свежую статью.

Введение

Вместе с трассировкой и ведением журнала мониторинг и оповещение являются важными компонентами стека наблюдаемости Kubernetes. Настройка мониторинга для вашего кластера Kubernetes DigitalOcean позволяет отслеживать использование ресурсов и анализировать и устранять ошибки приложений.

A monitoring system usually consists of a time-series database that houses metric data and a visualization layer. In addition, an alerting layer creates and manages alerts, handing them off to integrations and external services as necessary. Finally, one or more components generate or expose the metric data that will be stored, visualized, and processed for alerts by the stack.

Одним из популярных решений для мониторинга является стек с открытым исходным кодом Prometheus, Grafana и Alertmanager, развернутый наряду с kube-state-metrics и node_exporter для предоставления метрик объектов Kubernetes на уровне кластера, а также метрик уровня машины, таких как использование ЦП и памяти.

Внедрение этого стека мониторинга на кластер Kubernetes требует настройки отдельных компонентов, манифестов, метрик Prometheus и панелей мониторинга Grafana, что может занять некоторое время. Быстрый старт мониторинга кластера Kubernetes DigitalOcean, выпущенный командой образования разработчиков сообщества DigitalOcean, содержит полностью определенные манифесты для стека мониторинга кластера Prometheus-Grafana-Alertmanager, а также набор предварительно настроенных оповещений и панелей мониторинга Grafana. Он может помочь вам быстро запуститься и является прочной основой для создания вашего стека наблюдаемости.

В этом руководстве мы развернем этот предварительно настроенный стек на Kubernetes DigitalOcean, получим доступ к интерфейсам Prometheus, Grafana и Alertmanager, и опишем, как его настроить.

Предварительные требования

Прежде чем начать, вам понадобится кластер Kubernetes от DigitalOcean, а также следующие инструменты, установленные в вашей локальной среде разработки:

  • Командный интерфейс kubectl, установленный на вашем локальном компьютере и настроенный для подключения к вашему кластеру. Более подробную информацию о установке и настройке kubectl можно найти в его официальной документации.
  • Система контроля версий git, установленная на вашем локальном компьютере. Чтобы узнать, как установить git на Ubuntu 18.04, обратитесь к инструкции по установке Git на Ubuntu 18.04.
  • Утилита Coreutils base64, установленная на вашем локальном компьютере. Если вы используете Linux, она, скорее всего, уже установлена. Если вы используете macOS, вы можете использовать openssl base64, который по умолчанию установлен.

<$>[note]
Примечание: Быстрый запуск мониторинга кластера был протестирован только на кластерах Kubernetes от DigitalOcean. Чтобы использовать быстрый запуск с другими кластерами Kubernetes, может потребоваться некоторое изменение файлов манифестов.
<$>

Шаг 1 — Клонирование репозитория GitHub и настройка переменных среды

Для начала склонируйте репозиторий мониторинга кластера Kubernetes DigitalOcean с GitHub на свой локальный компьютер, используя git:

  1. git clone https://github.com/do-community/doks-monitoring.git

Затем перейдите в репозиторий:

  1. cd doks-monitoring

Вы должны увидеть следующую структуру каталогов:

  1. ls
Output
LICENSE README.md changes.txt manifest

Каталог manifest содержит манифесты Kubernetes для всех компонентов стека мониторинга, включая Учетные записи служб, Разворачивания, StatefulSets, ConfigMaps и т. д. Чтобы узнать больше о этих файлах манифестов и о том, как их настроить, перейдите к Настройке стека мониторинга.

Если вы хотите просто запустить процесс, начните с установки переменных среды APP_INSTANCE_NAME и NAMESPACE, которые будут использоваться для настройки уникального имени компонентов стека и настройки пространства имен, в которое будет развернут стек:

  1. export APP_INSTANCE_NAME=sammy-cluster-monitoring
  2. export NAMESPACE=default

В этом руководстве мы устанавливаем APP_INSTANCE_NAME в sammy-cluster-monitoring, который будет добавлен ко всем именам объектов стека мониторинга Kubernetes. Вы должны заменить его уникальным описательным префиксом для вашего стека мониторинга. Мы также устанавливаем Пространство имен в default. Если вы хотите развернуть стек мониторинга в другое Пространство имен default, убедитесь, что вы сначала создали его в своем кластере:

  1. kubectl create namespace "$NAMESPACE"

Вы должны увидеть следующий вывод:

Output
namespace/sammy created

В этом случае переменная среды NAMESPACE была установлена на sammy. На протяжении всего остального руководства мы будем предполагать, что NAMESPACE установлен в default.

Теперь используйте команду base64 для кодирования в base64 безопасного пароля Grafana. Обязательно замените пароль на свой выбор на место your_grafana_password:

  1. export GRAFANA_GENERATED_PASSWORD="$(echo -n 'your_grafana_password' | base64)"

Если вы используете macOS, вы можете заменить команду openssl base64, которая устанавливается по умолчанию.

На этом этапе вы получили манифесты Kubernetes стека и настроили необходимые переменные среды, так что теперь готовы подставить сконфигурированные переменные в файлы манифестов Kubernetes и создать стек в своем кластере Kubernetes.

Шаг 2 — Создание стека мониторинга

Репозиторий DigitalOcean Kubernetes Monitoring Quickstart содержит манифесты для следующих компонентов мониторинга, скрапинга и визуализации:

  • Prometheus – это база данных временных рядов и инструмент мониторинга, который работает путем опроса конечных точек метрик и скрапинга и обработки данных, предоставленных этими конечными точками. Он позволяет запрашивать эти данные, используя PromQL, язык запросов данных временных рядов. Prometheus будет развернут в кластере как StatefulSet с 2 репликами, использующими Постоянные тома с использованием Блочного хранилища DigitalOcean. Кроме того, заранее настроенный набор предупреждений, правил и заданий Prometheus будет сохранен как ConfigMap. Чтобы узнать больше об этом, перейдите к разделу Prometheus настройки стека мониторинга.
  • Alertmanager, обычно развертываемый наряду с Prometheus, формирует слой оповещения стека, обрабатывая оповещения, генерируемые Prometheus, и удаляя дубликаты, группируя и маршрутизируя их в интеграции, такие как электронная почта или PagerDuty. Alertmanager будет установлен как StatefulSet с 2 репликами. Чтобы узнать больше о Alertmanager, обратитесь к Системе оповещений из документации Prometheus.
  • Grafana – это инструмент визуализации данных и аналитики, который позволяет создавать информационные панели и графики для ваших метрических данных. Grafana будет установлен как StatefulSet с одной репликой. Кроме того, предварительно настроенный набор панелей, сгенерированных kubernetes-mixin, будет сохранен как ConfigMap.
  • kube-state-metrics – это дополнительный агент, который прослушивает сервер API Kubernetes и генерирует метрики о состоянии объектов Kubernetes, таких как развертывания и поды. Эти метрики предоставляются в виде обычного текста на конечных точках HTTP и потребляются Prometheus. kube-state-metrics будет установлен как автомасштабируемый Deployment с одной репликой.
  • node-exporter – это экспортер Prometheus, который запускается на узлах кластера и предоставляет метрики ОС и оборудования, такие как использование CPU и памяти, Prometheus. Эти метрики также предоставляются в виде обычного текста на конечных точках HTTP и потребляются Prometheus. node-exporter будет установлен как DaemonSet.

По умолчанию, наряду с извлечением метрик, генерируемых node-exporter, kube-state-metrics и другими перечисленными выше компонентами, Prometheus будет настроен на извлечение метрик из следующих компонентов:

  • kube-apiserver, сервера API Kubernetes.
  • kubelet, основного агента узла, который взаимодействует с kube-apiserver для управления подами и контейнерами на узле.
  • cAdvisor, агента узла, который обнаруживает работающие контейнеры и собирает их метрики использования процессора, памяти, файловой системы и сети.

Чтобы узнать больше о настройке этих компонентов и задач сбора метрик Prometheus, перейдите к разделу Настройка стека мониторинга. Теперь мы заменим переменные среды, определенные на предыдущем этапе, в файлы манифестов репозитория и объединим отдельные манифесты в один основной файл.

Начните с использования awk и envsubst для заполнения переменных APP_INSTANCE_NAME, NAMESPACE и GRAFANA_GENERATED_PASSWORD в файлах манифеста репозитория. После замены значений переменных файлы будут объединены и сохранены в основной файл манифеста с именем sammy-cluster-monitoring_manifest.yaml.

  1. awk 'FNR==1 {print "---"}{print}' manifest/* \
  2. | envsubst '$APP_INSTANCE_NAME $NAMESPACE $GRAFANA_GENERATED_PASSWORD' \
  3. > "${APP_INSTANCE_NAME}_manifest.yaml"

Вы должны рассмотреть возможность хранения этого файла в системе контроля версий, чтобы отслеживать изменения в стеке мониторинга и откатываться к предыдущим версиям. Если вы сделаете это, убедитесь, что вы удалили переменную admin-password из файла, чтобы не загружать ваш пароль от Grafana в систему контроля версий.

Теперь, когда вы сгенерировали основной файл манифеста, используйте kubectl apply -f, чтобы применить манифест и создать стек в настроенном пространстве имен:

  1. kubectl apply -f "${APP_INSTANCE_NAME}_manifest.yaml" --namespace "${NAMESPACE}"

Вы должны увидеть вывод, аналогичный следующему:

Output
serviceaccount/alertmanager created configmap/sammy-cluster-monitoring-alertmanager-config created service/sammy-cluster-monitoring-alertmanager-operated created service/sammy-cluster-monitoring-alertmanager created . . . clusterrolebinding.rbac.authorization.k8s.io/prometheus created configmap/sammy-cluster-monitoring-prometheus-config created service/sammy-cluster-monitoring-prometheus created statefulset.apps/sammy-cluster-monitoring-prometheus created

Вы можете отслеживать прогресс развертывания стека, используя kubectl get all. Как только все компоненты стека будут в состоянии RUNNING, вы сможете получить доступ к предварительно сконфигурированным панелям инструментов Grafana через веб-интерфейс Grafana.

Шаг 3 — Доступ к Grafana и Исследование данных метрик

Манифест Службы Grafana предоставляет доступ к Grafana как службу ClusterIP, что означает, что она доступна только по внутреннему IP-адресу кластера. Чтобы получить доступ к Grafana вне вашего кластера Kubernetes, вы можете либо использовать kubectl patch для обновления службы на месте на общедоступный тип, такой как NodePort или LoadBalancer, либо использовать kubectl port-forward для перенаправления локального порта на порт Пода Grafana. В этом руководстве мы будем перенаправлять порты, поэтому вы можете перейти к Перенаправление локального порта для доступа к службе Grafana. Следующий раздел о предоставлении доступа к Grafana снаружи включен для справочных целей.

Предоставление доступа к службе Grafana с помощью балансировщика нагрузки (необязательно)

Если вы хотите создать балансировщик нагрузки DigitalOcean для Grafana с внешним общедоступным IP-адресом, используйте kubectl patch для обновления существующей службы Grafana на месте до типа службы LoadBalancer:

  1. kubectl patch svc "$APP_INSTANCE_NAME-grafana" \
  2. --namespace "$NAMESPACE" \
  3. -p '{"spec": {"type": "LoadBalancer"}}'

Команда patch в kubectl позволяет вам обновлять объекты Kubernetes на месте, чтобы вносить изменения без необходимости повторного развертывания объектов. Вы также можете изменить основной файл манифеста напрямую, добавив параметр type: LoadBalancer в спецификацию Службы Grafana. Чтобы узнать больше о kubectl patch и типах Служб Kubernetes, вы можете обратиться к ресурсам Обновление объектов API на месте с использованием kubectl patch и Службы в официальной документации Kubernetes.

После выполнения вышеуказанной команды, вы должны увидеть следующее:

Output
service/sammy-cluster-monitoring-grafana patched

Это может занять несколько минут для создания балансировщика нагрузки и назначения ему общедоступного IP-адреса. Вы можете отслеживать его прогресс, используя следующую команду с флагом -w, чтобы наблюдать за изменениями:

  1. kubectl get service "$APP_INSTANCE_NAME-grafana" -w

После того как балансировщик нагрузки DigitalOcean будет создан и ему будет назначен внешний IP-адрес, вы можете получить его внешний IP-адрес, используя следующие команды:

  1. SERVICE_IP=$(kubectl get svc $APP_INSTANCE_NAME-grafana \
  2. --namespace $NAMESPACE \
  3. --output jsonpath='{.status.loadBalancer.ingress[0].ip}')
  4. echo "http://${SERVICE_IP}/"

Теперь вы можете получить доступ к интерфейсу Grafana, перейдя по ссылке http://SERVICE_IP/.

Пересылка локального порта для доступа к Службе Grafana

Если вы не хотите открывать службу Grafana наружу, вы также можете перенаправить локальный порт 3000 непосредственно в кластер к Pod Grafana, используя kubectl port-forward.

  1. kubectl port-forward --namespace ${NAMESPACE} ${APP_INSTANCE_NAME}-grafana-0 3000

Вы должны увидеть следующий вывод:

Output
Forwarding from 127.0.0.1:3000 -> 3000 Forwarding from [::1]:3000 -> 3000

Это перенаправит локальный порт 3000 на containerPort 3000 Pod Grafana sammy-cluster-monitoring-grafana-0. Чтобы узнать больше о перенаправлении портов в кластер Kubernetes, обратитесь к Использование переадресации портов для доступа к приложениям в кластере.

Перейдите по адресу http://localhost:3000 в вашем веб-браузере. Вы должны увидеть следующую страницу входа в Grafana:

Для входа используйте имя пользователя по умолчанию admin (если вы не изменили параметр admin-user) и пароль, настроенный на Шаге 1.

Вы будете перенаправлены на следующую Домашнюю панель:

На левой панели навигации выберите кнопку Панели, затем щелкните Управление:

Вы попадете на следующий интерфейс управления панелями, который перечисляет панели, настроенные в манифесте dashboards-configmap.yaml:

Эти панели управления создаются с помощью kubernetes-mixin, проекта с открытым исходным кодом, который позволяет создавать стандартизированный набор панелей мониторинга кластера Grafana и оповещений Prometheus. Чтобы узнать больше, обратитесь к репозиторию GitHub Kubernetes-mixin.

Нажмите на панель управления Kubernetes / Nodes, которая визуализирует использование процессора, памяти, диска и сети для определенного узла:

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

На следующем этапе мы выполним аналогичный процесс подключения и исследования системы мониторинга Prometheus.

Шаг 4 — Доступ к Prometheus и Alertmanager

Для подключения к подам Prometheus можно использовать kubectl port-forward, чтобы перенаправить локальный порт. Если вы закончили изучение Grafana, вы можете закрыть туннель перенаправления порта, нажав CTRL-C. В качестве альтернативы вы можете открыть новую оболочку и создать новое соединение с перенаправлением порта.

Начните с перечисления запущенных подов в пространстве имен default:

  1. kubectl get pod -n default

Вы должны увидеть следующие поды:

Output
sammy-cluster-monitoring-alertmanager-0 1/1 Running 0 17m sammy-cluster-monitoring-alertmanager-1 1/1 Running 0 15m sammy-cluster-monitoring-grafana-0 1/1 Running 0 16m sammy-cluster-monitoring-kube-state-metrics-d68bb884-gmgxt 2/2 Running 0 16m sammy-cluster-monitoring-node-exporter-7hvb7 1/1 Running 0 16m sammy-cluster-monitoring-node-exporter-c2rvj 1/1 Running 0 16m sammy-cluster-monitoring-node-exporter-w8j74 1/1 Running 0 16m sammy-cluster-monitoring-prometheus-0 1/1 Running 0 16m sammy-cluster-monitoring-prometheus-1 1/1 Running 0 16m

Мы собираемся перенаправить локальный порт 9090 на порт 9090 пода sammy-cluster-monitoring-prometheus-0:

  1. kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-prometheus-0 9090

Вы должны увидеть следующий вывод:

Output
Forwarding from 127.0.0.1:9090 -> 9090 Forwarding from [::1]:9090 -> 9090

Это указывает на то, что локальный порт 9090 успешно перенаправляется на под Prometheus.

Посетите http://localhost:9090 в вашем веб-браузере. Вы должны увидеть следующую страницу Графика Prometheus:

Отсюда вы можете использовать PromQL, язык запросов Prometheus, для выбора и агрегации временных рядов метрик, хранящихся в его базе данных. Чтобы узнать больше о PromQL, обратитесь к Запросу Prometheus в официальной документации Prometheus.

В поле Выражение введите kubelet_node_name и нажмите Выполнить. Вы должны увидеть список временных рядов с метрикой kubelet_node_name, отображающей узлы в вашем кластере Kubernetes. Вы можете увидеть, какой узел сгенерировал метрику, и какая задача скрапила метрику в метках метрики:

Наконец, на верхней панели навигации щелкните Статус, а затем Цели, чтобы увидеть список целей, для которых настроен Prometheus для скрапинга. Вы должны увидеть список целей, соответствующий списку точек мониторинга, описанному в начале Шага 2.

Чтобы узнать больше о Prometheus и способах запроса метрик вашего кластера, обратитесь к официальной документации Prometheus.

Чтобы подключиться к Alertmanager, который управляет оповещениями, созданными Prometheus, мы будем следовать аналогичному процессу, который мы использовали для подключения к Prometheus. В общем, вы можете исследовать оповещения Alertmanager, щелкнув Оповещения на верхней панели навигации Prometheus.

Чтобы подключиться к контейнерам Alertmanager, мы снова будем использовать kubectl port-forward, чтобы перенаправить локальный порт. Если вы закончили исследование Prometheus, вы можете закрыть туннель port-forward, нажав CTRL-C или открыть новый оболочку, чтобы создать новое соединение. .

Мы собираемся перенаправить локальный порт 9093 на порт 9093 Pod sammy-cluster-monitoring-alertmanager-0:

  1. kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-alertmanager-0 9093

Вы должны увидеть следующий вывод:

Output
Forwarding from 127.0.0.1:9093 -> 9093 Forwarding from [::1]:9093 -> 9093

Это указывает на успешное перенаправление локального порта 9093 на Pod Alertmanager.

Перейдите по ссылке http://localhost:9093 в вашем веб-браузере. Вы должны увидеть следующую страницу Alerts Alertmanager:

Отсюда вы можете исследовать возникшие оповещения и по желанию убрать их. Чтобы узнать больше о Alertmanager, обратитесь к официальной документации Alertmanager.

На следующем шаге вы узнаете, как необязательно настроить и масштабировать некоторые компоненты стека мониторинга.

Шаг 6 — Настройка стека мониторинга (необязательно)

Манифесты, включенные в репозиторий быстрого старта мониторинга кластера Kubernetes DigitalOcean, можно изменить для использования других образов контейнеров, другого количества реплик Pod, других портов и настраиваемых файлов конфигурации.

На этом этапе мы предоставим общий обзор назначения каждого манифеста, а затем продемонстрируем, как увеличить количество реплик Prometheus до 3, изменив файл манифеста.

Для начала перейдите в подкаталог manifests в репозитории и выведите содержимое каталога:

  1. cd manifest
  2. ls
Output
alertmanager-0serviceaccount.yaml alertmanager-configmap.yaml alertmanager-operated-service.yaml alertmanager-service.yaml . . . node-exporter-ds.yaml prometheus-0serviceaccount.yaml prometheus-configmap.yaml prometheus-service.yaml prometheus-statefulset.yaml

Здесь вы найдете манифесты для различных компонентов стека мониторинга. Чтобы узнать больше о конкретных параметрах в манифестах, перейдите по ссылкам и ознакомьтесь с комментариями, включенными в файлы YAML:

Alertmanager

  • alertmanager-0serviceaccount.yaml: Учетная запись сервиса Alertmanager, используемая для предоставления подам Alertmanager в Kubernetes идентичности. Чтобы узнать больше о учетных записях сервисов, обратитесь к Настройка учетных записей сервисов для подов.

  • alertmanager-configmap.yaml: ConfigMap, содержащий минимальный файл конфигурации Alertmanager, названный alertmanager.yml. Настройка Alertmanager выходит за рамки данного руководства, но вы можете узнать больше, проконсультировав раздел Настройка документации Alertmanager.

  • alertmanager-operated-service.yaml: Сервис Alertmanager mesh, используемый для маршрутизации запросов между подами Alertmanager в текущей конфигурации с высокой доступностью с двумя репликами.

  • alertmanager-service.yaml: Служба Alertmanager web, которая используется для доступа к веб-интерфейсу Alertmanager, который вы могли выполнить на предыдущем этапе.

  • alertmanager-statefulset.yaml: Набор состояний Alertmanager, настроенный на 2 реплики.

Grafana

  • dashboards-configmap.yaml: ConfigMap, содержащий предварительно сконфигурированные JSON-панели мониторинга Grafana. Генерация нового набора панелей и оповещений с нуля выходит за рамки этого учебного пособия, но для получения дополнительной информации вы можете обратиться к репозиторию kubernetes-mixin GitHub.

  • grafana-0serviceaccount.yaml: Учетная запись сервиса Grafana.

  • grafana-configmap.yaml: Конфигурационная карта (ConfigMap), содержащая набор минимальных файлов конфигурации Grafana.

  • grafana-secret.yaml: Секрет Kubernetes, содержащий имя пользователя и пароль администратора Grafana. Чтобы узнать больше о секретах Kubernetes, обратитесь к Секретам.

  • grafana-service.yaml: Манифест, определяющий Службу Grafana.

  • grafana-statefulset.yaml: StatefulSet Grafana, настроенный с 1 репликой, которая не масштабируется. Масштабирование Grafana выходит за рамки этого руководства. Чтобы узнать, как создать высокодоступную установку Grafana, вы можете обратиться к Как настроить Grafana для обеспечения высокой доступности из официальной документации Grafana.

kube-state-metrics

node-exporter

  • node-exporter-0serviceaccount.yaml: Учетная запись службы node-exporter.

  • node-exporter-ds.yaml: Манифест DaemonSet для node-exporter. Поскольку node-exporter является DaemonSet, под node-exporter запускается на каждом узле в кластере.

###Prometheus

  • prometheus-0serviceaccount.yaml: Учетная запись службы Prometheus, ClusterRole и ClusterRoleBinding.

  • prometheus-configmap.yaml: ConfigMap, который содержит три файла конфигурации:

    • alerts.yaml: Содержит предварительно настроенный набор предупреждений, сгенерированных с помощью kubernetes-mixin (который также использовался для создания панелей мониторинга Grafana). Чтобы узнать больше о настройке правил оповещения, обратитесь к Правилам оповещения из документации Prometheus.
    • prometheus.yaml: Основной файл конфигурации Prometheus. Prometheus предварительно настроен на сбор данных со всех компонентов, перечисленных в начале Шага 2. Настройка Prometheus выходит за рамки этой статьи, но чтобы узнать больше, вы можете обратиться к Конфигурации в официальной документации Prometheus.
    • rules.yaml: Набор правил записи Prometheus, который позволяет Prometheus вычислять часто необходимые или вычислительно затратные выражения и сохранять их результаты в виде нового набора временных рядов. Эти правила также созданы с помощью kubernetes-mixin, и их настройка выходит за рамки этой статьи. Чтобы узнать больше, вы можете обратиться к Правилам записи в официальной документации Prometheus.
  • prometheus-service.yaml: Служба, которая открывает доступ к StatefulSet Prometheus.

  • prometheus-statefulset.yaml: StatefulSet Prometheus, настроенный с 2 репликами. Этот параметр может быть масштабирован в зависимости от ваших потребностей.

Пример: Масштабирование Prometheus

Чтобы продемонстрировать, как изменить стек мониторинга, мы увеличим количество реплик Prometheus с 2 до 3.

Откройте мастер-файл манифеста sammy-cluster-monitoring_manifest.yaml с помощью выбранного вами редактора:

  1. nano sammy-cluster-monitoring_manifest.yaml

Прокрутите вниз до раздела StatefulSet Prometheus в манифесте:

Output
. . . apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: sammy-cluster-monitoring-prometheus labels: &Labels k8s-app: prometheus app.kubernetes.io/name: sammy-cluster-monitoring app.kubernetes.io/component: prometheus spec: serviceName: "sammy-cluster-monitoring-prometheus" replicas: 2 podManagementPolicy: "Parallel" updateStrategy: type: "RollingUpdate" selector: matchLabels: *Labels template: metadata: labels: *Labels spec: . . .

Измените количество реплик с 2 на 3:

Output
. . . apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: sammy-cluster-monitoring-prometheus labels: &Labels k8s-app: prometheus app.kubernetes.io/name: sammy-cluster-monitoring app.kubernetes.io/component: prometheus spec: serviceName: "sammy-cluster-monitoring-prometheus" replicas: 3 podManagementPolicy: "Parallel" updateStrategy: type: "RollingUpdate" selector: matchLabels: *Labels template: metadata: labels: *Labels spec: . . .

Когда закончите, сохраните и закройте файл.

Примените изменения с помощью kubectl apply -f:

  1. kubectl apply -f sammy-cluster-monitoring_manifest.yaml --namespace default

Вы можете отслеживать прогресс, используя kubectl get pods. С использованием этой же техники вы можете обновить многие параметры Kubernetes и многое из конфигурации для этого стека мониторинга.

Заключение

В этом руководстве вы установили стек мониторинга Prometheus, Grafana и Alertmanager в свой кластер Kubernetes DigitalOcean с помощью стандартного набора панелей мониторинга, правил Prometheus и оповещений.

Вы также можете выбрать развертывание этого стека мониторинга с использованием менеджера пакетов Kubernetes Helm. Чтобы узнать больше, ознакомьтесь с руководством Как настроить мониторинг кластера Kubernetes DigitalOcean с помощью Helm и Prometheus. Альтернативным способом запуска аналогичного стека является использование решения Kubernetes Monitoring Stack в маркетплейсе DigitalOcean, в настоящее время находящегося в бета-версии.

Репозиторий DigitalOcean Kubernetes Cluster Monitoring Quickstart тесно основан и изменен по сравнению с решением click-to-deploy Prometheus от Google Cloud Platform. Полный список модификаций и изменений по сравнению с оригинальным репозиторием можно найти в файле changes.md репозитория Quickstart.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-kubernetes-monitoring-stack-with-prometheus-grafana-and-alertmanager-on-digitalocean