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

Используйте манифесты Kubernetes Quickstart для мониторинга кластеров!

Вступление

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

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

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

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

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

Предпосылки

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

  • Интерфейс командной строкиkubectl, установленный на вашем локальном компьютере и настроенный для подключения к вашему кластеру. Вы можете узнать больше об установке и настройкеkubectlin its official documentation.

  • Система управления версиямиgit, установленная на вашем локальном компьютере. Чтобы узнать, как установить git в Ubuntu 18.04, обратитесь кHow To Install Git on Ubuntu 18.04.

  • Утилита Coreutilsbase64 установлена ​​на вашем локальном компьютере. Если вы используете компьютер с Linux, скорее всего, он уже установлен. Если вы используете OS X, вы можете использоватьopenssl base64, который устанавливается по умолчанию.

[.note] #Note: Быстрый запуск Cluster Monitoring был протестирован только на кластерах DigitalOcean Kubernetes. Чтобы использовать Quickstart с другими кластерами Kubernetes, могут потребоваться некоторые изменения в файлах манифеста.
#

[[step-1 -—- cloning-the-github-repository-and-configuring-environment-variables]] == Шаг 1. Клонирование репозитория GitHub и настройка переменных среды

Для начала клонируйте DigitalOcean Kubernetes Cluster MonitoringGitHub repository на локальный компьютер с помощью git:

git clone [email protected]:do-community/doks-monitoring.git

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

cd doks-monitoring

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

ls
OutputLICENSE
README.md
changes.txt
manifest

Каталогmanifest содержит манифесты Kubernetes для всех компонентов стека мониторинга, включаяService Accounts,Deployments,StatefulSets,ConfigMaps и т. Д. Чтобы узнать больше об этих файлах манифеста и о том, как их настроить, перейдите кConfiguring the Monitoring Stack.

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

export APP_INSTANCE_NAME=sammy-cluster-monitoring
export NAMESPACE=default

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

kubectl create namespace "$NAMESPACE"

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

Outputnamespace/sammy created

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

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

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

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

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

[[step-2 -—- Creating-the-monitoring-stack]] == Шаг 2. Создание стека мониторинга

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

  • Prometheus - это база данных временных рядов и инструмент мониторинга, который работает, опрашивая конечные точки метрик, а также очищая и обрабатывая данные, предоставляемые этими конечными точками. Он позволяет запрашивать эти данные, используяPromQL, язык запросов данных временных рядов. Prometheus будет развернут в кластере какStatefulSet с 2 репликами, который используетPersistent Volumes с DigitalOceanBlock Storage. Кроме того, предварительно настроенный набор предупреждений, правил и заданий Prometheus будет сохранен какConfigMap. Чтобы узнать больше об этом, перейдите к разделуPrometheus в разделе «Настройка стека мониторинга».

  • Alertmanager, обычно развертываемый вместе с Prometheus, формирует уровень предупреждений в стеке, обрабатывая предупреждения, генерируемые Prometheus, и дедуплицирует, группирует и направляет их в такие интеграции, как электронная почта илиPagerDuty. Alertmanager будет установлен как StatefulSet с 2 репликами. Чтобы узнать больше о Alertmanager, обратитесь кAlerting из документации Prometheus.

  • Grafana - это инструмент визуализации и аналитики данных, позволяющий создавать информационные панели и графики для данных ваших показателей. Графана будет установлена ​​как StatefulSet с одной репликой. Кроме того, предварительно настроенный набор панелей мониторинга, сгенерированныйkubernetes-mixin, будет сохранен как ConfigMap.

  • kube-state-metrics - это дополнительный агент, который прослушивает сервер API Kubernetes и генерирует метрики о состоянии объектов Kubernetes, таких как Deployments и Pods. Эти метрики служат открытым текстом на конечных точках HTTP и используются Прометеем. kube-state-metrics будет установлен как автоматически масштабируемыйDeployment с одной репликой.

  • node-exporter, экспортер Prometheus, который работает на узлах кластера и предоставляет Prometheus такие показатели ОС и оборудования, как использование ЦП и памяти. Эти метрики также служат открытым текстом на конечных точках HTTP и используются Прометеем. узел-экспортер будет установлен какDaemonSet.

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

  • kube-apiserver,Kubernetes API server.

  • kubelet, агент основного узла, который взаимодействует с kube-apiserver для управления модулями и контейнерами на узле.

  • cAdvisor, агент узла, который обнаруживает запущенные контейнеры и собирает их показатели использования ЦП, памяти, файловой системы и сети.

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

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

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

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

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

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

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

Outputserviceaccount/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.

[[step-3 -—- accessing-grafana-and-explore-metrics-data]] == Шаг 3. Доступ к Grafana и изучение данных метрик

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

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

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

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

Команда kubectlpatch позволяет обновлять объекты Kubernetes на месте, чтобы вносить изменения без повторного развертывания объектов. Вы также можете напрямую изменить главный файл манифеста, добавив параметрtype: LoadBalancer вGrafana Service spec. Чтобы узнать больше о типах сервисовkubectl patch и Kubernetes, вы можете обратиться к ресурсамUpdate API Objects in Place Using kubectl patch иServices в официальной документации Kubernetes.

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

Outputservice/sammy-cluster-monitoring-grafana patched

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

kubectl get service "$APP_INSTANCE_NAME-grafana" -w

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

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

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

Переадресация локального порта для доступа к сервису Grafana

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

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

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

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

Это перенаправит локальный порт3000 наcontainerPort3000 Grafana Podsammy-cluster-monitoring-grafana-0. Чтобы узнать больше о перенаправлении портов в кластер Kubernetes, обратитесь кUse Port Forwarding to Access Applications in a Cluster.

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

Grafana Login Page

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

Вы попадете в следующийHome Dashboard:

Grafana Home Page

На левой панели навигации нажмите кнопкуDashboards, затем нажмитеManage:

Grafana Dashboard Tab

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

Grafana Dashboard List

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

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

Grafana Nodes Dashboard

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

  • Чтобы узнать больше о методе USE для анализа производительности системы, вы можете обратиться к странице Брендана ГреггаThe Utilization Saturation and Errors (USE) Method.

  • SRE Book от Google - еще один полезный ресурс, в частности, глава 6:Monitoring Distributed Systems.

  • Чтобы узнать, как создавать собственные панели управления Grafana, посетите страницу GrafanaGetting Started.

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

[[step-4 -—- accessing-prometheus-and-alertmanager]] == Шаг 4. Доступ к Prometheus и Alertmanager

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

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

kubectl get pod -n default

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

Outputsammy-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:

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

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

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

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

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

Prometheus Graph Page

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

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

Prometheus Query Results

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

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

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

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

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

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

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

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

Это означает, что локальный порт9093 успешно перенаправляется на модуль Alertmanager Pod.

Посетитеhttp://localhost:9093 в своем браузере. Вы должны увидеть следующую страницу AlertmanagerAlerts:

Alertmanager Alerts Page

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

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

[[step-6 -—- configuring-the-monitoring-stack-optional]] == Шаг 6. Настройка стека мониторинга (необязательно)

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

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

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

cd manifest
ls
Outputalertmanager-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. Чтобы узнать больше об учетных записях служб, обратитесь кConfigure Service Accounts for Pods.

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

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

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

  • alertmanager-statefulset.yaml: StatefulSet Alertmanager, настроенный с 2 ​​репликами.

графана

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

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

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

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

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

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

Кубэ-состояние-метрика

Узел-экспортер

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

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

Прометей

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

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

    • alerts.yaml: содержит предварительно сконфигурированный набор предупреждений, сгенерированныхkubernetes-mixin (который также использовался для создания панелей мониторинга Grafana). Чтобы узнать больше о настройке правил предупреждений, обратитесь кAlerting Rules из документации Prometheus.

    • prometheus.yaml: основной файл конфигурации Prometheus. Prometheus был предварительно настроен для очистки всех компонентов, перечисленных в началеStep 2. Настройка Prometheus выходит за рамки этой статьи, но чтобы узнать больше, вы можете обратиться кConfiguration из официальной документации Prometheus.

    • rules.yaml: набор правил записи Prometheus, которые позволяют Prometheus вычислять часто необходимые или затратные в вычислительном отношении выражения и сохранять их результаты в виде нового набора временных рядов. Они также генерируютсяkubernetes-mixin, и их настройка выходит за рамки этой статьи. Чтобы узнать больше, вы можете обратиться кRecording Rules из официальной документации Prometheus.

  • prometheus-service.yaml: Служба, которая предоставляет Prometheus StatefulSet.

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

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

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

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

nano sammy-cluster-monitoring_manifest.yaml

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

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:

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

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

Заключение

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

Вы также можете развернуть этот стек мониторинга с помощью диспетчера пакетов KubernetesHelm. Чтобы узнать больше, обратитесь кHow to Set Up DigitalOcean Kubernetes Cluster Monitoring with Helm and Prometheus. Альтернативный способ получить и запустить аналогичный стек - использовать DigitalOcean MarketplaceKubernetes Monitoring Stack solution, который в настоящее время находится в стадии бета-тестирования.

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

Related