Вступление
Наряду с отслеживанием и регистрацией, мониторинг и оповещение являются важными компонентами стека наблюдаемости Kubernetes. Настройка мониторинга для вашего кластера DigitalOcean Kubernetes позволяет отслеживать использование ресурсов, а также анализировать и отлаживать ошибки приложений.
Система мониторинга обычно состоит из базы данных временных рядов, в которой хранятся метрические данные, и уровня визуализации. Кроме того, слой оповещений создает и управляет оповещениями, передавая их по мере необходимости интеграциям и внешним службам. Наконец, один или несколько компонентов генерируют или предоставляют метрические данные, которые будут храниться, визуализироваться и обрабатываться для предупреждений стеком.
Одним из популярных решений для мониторинга является стек Prometheus с открытым исходным кодом, Grafana и Alertmanager, развернуты вместе с kube-state-metrics и node_exporter для предоставления метрик объекта Kubernetes на уровне кластера, а также метрики машинного уровня, такие как загрузка процессора и памяти.
Для развертывания этого стека мониторинга в кластере Kubernetes требуется настройка отдельных компонентов, манифестов, метрик Prometheus и информационных панелей Grafana, что может занять некоторое время. Https://github.com/do-community/doks-monitoring[DigitalOcean Быстрый запуск мониторинга кластера Kubernetes], выпущенный командой по обучению разработчиков сообщества DigitalOcean, содержит полностью определенные манифесты для стека мониторинга кластера Prometheus-Grafana-Alertmanager, а также как набор предварительно настроенных оповещений и панелей Grafana. Он может помочь вам быстро приступить к работе и создать прочную основу для построения стека наблюдаемости.
В этом руководстве мы развернем этот предварительно настроенный стек в DigitalOcean Kubernetes, получим доступ к интерфейсам Prometheus, Grafana и Alertmanager и опишем, как его настроить.
Предпосылки
Прежде чем начать, вам потребуется DigitalOcean Kubernetes cluster и следующие инструменты, установленные в вашей локальной среде разработки:
-
Интерфейс командной строки
+ kubectl +
установлен на вашем локальном компьютере и настроен для подключения к вашему кластеру. Вы можете прочитать больше об установке и настройке+ kubectl +
in его официальной документации. -
Https://git-scm.com/book/en/v2/Getting-Started-Install-Git[git] Система контроля версий установлена на вашем локальном компьютере. Чтобы узнать, как установить git на Ubuntu 18.04, обратитесь к Как установить Git на Ubuntu 18.04.
-
Кореутилс base64 инструмент, установленный на вашем локальном компьютере. Если вы используете компьютер с Linux, скорее всего, он уже установлен. Если вы используете OS X, вы можете использовать
+ openssl base64 +
, который устанавливается по умолчанию.
[[step-1-—-cloning-the-github-repository-and-configuring-environment-variables]] === Шаг 1 - Клонирование репозитория GitHub и настройка переменных среды
Для начала клонируйте мониторинг кластера DigitalOcean Kubernetes GitHub 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, https: / /kubernetes.io/docs/concepts/workloads/controllers/deployment/[Deployments], StatefulSets, https://kubernetes.io/docs / tasks / configure-pod-container / configure-pod-configmap / [ConfigMaps] и т. д. Чтобы узнать больше об этих файлах манифеста и о том, как их настроить, перейдите по ссылке https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring- stack-on-digitalocean-kubernetes # step-6-% E2% 80% 94-configing-the-monitor-stack-option [Настройка стека мониторинга].
Если вы просто хотите начать работу, начните с установки переменных окружения + APP_INSTANCE_NAME +
и + NAMESPACE +
, которые будут использоваться для настройки уникального имени для компонентов стека и настройки https://kubernetes.io. / документы / концепции / обзор / работа с объектами / пространства имен / [пространство имен], в котором будет развернут стек:
export APP_INSTANCE_NAME=
export NAMESPACE=
В этом уроке мы установили для + APP_INSTANCE_NAME +
значение + sammy-cluster-мониторинг +
, что будет предшествовать всем именам объектов Kubernetes стека мониторинга. Вы должны заменить уникальный описательный префикс для вашего стека мониторинга. Мы также устанавливаем для пространства имен значение + default +
. Если вы хотите развернуть стек мониторинга в Пространстве имен *, отличном от * + default + `, убедитесь, что вы сначала создали его в своем кластере:
kubectl create namespace "$NAMESPACE"
Вы должны увидеть следующий вывод:
Outputnamespace/ created
В этом случае переменная окружения + NAMESPACE +
была установлена в + sammy +
. В оставшейся части урока мы будем предполагать, что для + NAMESPACE +
было установлено значение + default +
.
Теперь используйте команду + base64 +
для кодирования base64 безопасного пароля Grafana. Обязательно замените выбранный вами пароль на ++
:
export GRAFANA_GENERATED_PASSWORD="$(echo -n '' | base64)"
Если вы используете macOS, вы можете заменить команду + openssl base64 +
, которая устанавливается по умолчанию.
К этому моменту вы получили стеки Kubernetes манифестов и сконфигурировали необходимые переменные среды, так что теперь вы готовы подставить сконфигурированные переменные в файлы манифестов Kubernetes и создать стек в вашем кластере Kubernetes.
[[step-2-—-creating-the-monitoring-stack]] === Шаг 2 - Создание стека мониторинга
Репозиторий QuickOstart для DigitalOcean Kubernetes Monitoring содержит манифесты для следующих компонентов мониторинга, очистки и визуализации:
-
* Prometheus * - это база данных и инструмент мониторинга временных рядов, который работает путем опроса конечных точек метрик, а также очистки и обработки данных, представленных этими конечными точками. Он позволяет запрашивать эти данные, используя PromQL, язык запросов данных временных рядов. Прометей будет развернут в кластере как StatefulSet с двумя репликами, использующими https://kubernetes.io/docs/concepts/storage/persistent -volumes / [Постоянные тома] с DigitalOcean Block Storage. Кроме того, предварительно настроенный набор предупреждений, правил и заданий Prometheus будет храниться как ConfigMap. Чтобы узнать больше об этом, перейдите к https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack-on-digitalocean- kubernetes # prometheus Раздел [Prometheus] Настройка стека мониторинга.
-
* Alertmanager *, обычно развернутый рядом с Прометеем, образует слой предупреждений в стеке, обработка предупреждений, генерируемых Prometheus, и их дедупликация, группировка и маршрутизация в интеграции, такие как электронная почта или PagerDuty. Alertmanager будет установлен как StatefulSet с 2 репликами. Чтобы узнать больше об Alertmanager, обратитесь к Alerting из документации Prometheus.
-
* Grafana * - инструмент для визуализации и анализа данных, который позволяет вам строить панели мониторинга и графики для ваших данных метрик. Графана будет установлена как StatefulSet с одной репликой. Кроме того, предварительно сконфигурированный набор панелей мониторинга, созданный kubernetes-mixin, будет сохранен как ConfigMap.
-
* kube-state-metrics * - дополнительный агент, который слушает Kubernetes Сервер API и генерирует метрики о состоянии объектов Kubernetes, таких как Deployments и Pod. Эти метрики служат открытым текстом на конечных точках HTTP и используются Прометеем. kube-state-metrics будет установлен как автоматически масштабируемый Deployment с одной репликой.
-
* node-exporter *, экспортер Prometheus, который работает на узлах кластера и предоставляет метрики ОС и аппаратного обеспечения, такие как загрузка процессора и памяти, Prometheus. Эти метрики также служат открытым текстом на конечных точках HTTP и используются Прометеем. Узел-экспортер будет установлен как DaemonSet.
По умолчанию, наряду со соскребаемыми метриками, сгенерированными узлами-экспортерами, kube-state-metrics и другими компонентами, перечисленными выше, Prometheus будет настроен для очистки метрик от следующих компонентов:
-
куб-аписервер Kubernetes API server.
-
kubelet, агент основного узла, который взаимодействует с kube-apiserver для управления модулями и контейнерами на узле.
-
cAdvisor, агент узла, который обнаруживает запущенные контейнеры и собирает их показатели использования ЦП, памяти, файловой системы и сети.
Чтобы узнать больше о настройке этих компонентов и заданиях на очистку Prometheus, перейдите к https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack -on-digitalocean-kubernetes # step-6-% E2% 80% 94-configing-the-monitor-stack-необязательный [Конфигурирование стека мониторинга]. Теперь мы подставим переменные среды, определенные на предыдущем шаге, в файлы манифеста репозитория и объединим отдельные манифесты в один мастер-файл.
Начните с использования + awk +
и + envsubst +
, чтобы заполнить переменные + APP_INSTANCE_NAME +
, + NAMESPACE +
и + GRAFANA_GENERATED_PASSWORD +
в файлах манифеста репо. После подстановки в значения переменных файлы будут объединены и сохранены в главный файл манифеста с именем + _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/-alertmanager-config created
service/-alertmanager-operated created
service/-alertmanager created
. . .
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
configmap/-prometheus-config created
service/-prometheus created
statefulset.apps/-prometheus created
Вы можете отслеживать ход развертывания стека, используя + kubectl get all +
. Как только все компоненты стека будут + RUNNING +
, вы сможете получить доступ к предварительно сконфигурированным панелям мониторинга Grafana через веб-интерфейс Grafana.
[[step-3-—-accessing-grafana-and-exploring-metrics-data]] === Шаг 3 - Доступ к Grafana и изучение данных метрик
Манифест службы Grafana представляет Grafana как службу + ClusterIP +
, что означает, что она доступна только через внутренний IP-адрес кластера. Чтобы получить доступ к Grafana вне вашего кластера Kubernetes, вы можете либо использовать + kubectl patch +
, чтобы обновить сервис на месте для общедоступного типа, такого как + NodePort +
или + LoadBalancer +
, либо + kubectl port-forward +
перенаправить локальный порт в порт Grafana Pod. В этом руководстве мы перенаправим порты, поэтому вы можете перейти к https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack -on-digitalocean-kubernetes # forwarding-a-local-port-to-access-the-grafana-service [Пересылка локального порта для доступа к услуге Grafana]. Следующий раздел о внешнем воздействии Grafana включен для справочных целей.
Предоставление сервиса Grafana с использованием балансировщика нагрузки (необязательно)
Если вы хотите создать балансировщик нагрузки DigitalOcean для Grafana с внешним публичным IP-адресом, используйте + kubectl patch +
, чтобы обновить существующую службу Grafana на месте с типом службы + LoadBalancer +
:
kubectl patch svc "$APP_INSTANCE_NAME-grafana" \
--namespace "$NAMESPACE" \
-p '{"spec": {"type": "LoadBalancer"}}'
Команда kubectl + patch +
позволяет вам обновлять объекты Kubernetes на месте, чтобы вносить изменения без необходимости повторного развертывания объектов. Вы также можете изменить основной файл манифеста напрямую, добавив параметр + type: LoadBalancer +
в https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-service.yaml#L9 [Графана Сервис Спец]. Чтобы узнать больше о типах + kubectl patch +
и сервисах Kubernetes, вы можете обратиться к имеющимся API-объектам Update Использование kubectl patch и Services ресурсов в официальных документах Kubernetes.
После выполнения вышеуказанной команды вы должны увидеть следующее:
Outputservice/-grafana patched
Создание балансировщика нагрузки и назначение ему общедоступного IP-адреса может занять несколько минут. Вы можете отслеживать его прогресс, используя следующую команду с флагом + -w +
, чтобы отслеживать изменения:
kubectl get service "$APP_INSTANCE_NAME-grafana" -w
После того, как DigitalOcean Load Balancer был создан и назначен внешний IP-адрес, вы можете получить его внешний IP-адрес, используя следующие команды:
=$(kubectl get svc $APP_INSTANCE_NAME-grafana \
--namespace $NAMESPACE \
--output jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${}/"
Теперь вы можете получить доступ к интерфейсу Grafana, перейдя к + http: /// +
.
Переадресация локального порта для доступа к сервису Grafana
Если вы не хотите предоставлять сервис Grafana извне, вы также можете перенаправить локальный порт «+ 3000 » в кластер непосредственно на модуль Grafana, используя « 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 +
в + containerPort +
+ 3000 +
графического модуля + -grafana-0 +
. Чтобы узнать больше о переадресации портов в кластер Kubernetes, обратитесь к Use Переадресация портов для доступа к приложениям в кластере .
Посетите + http: // localhost: 3000 +
в вашем веб-браузере. Вы должны увидеть следующую страницу входа Grafana:
изображение: https: //assets.digitalocean.com/articles/doks_helm_monitoring/grafana_login.png [Страница входа в Grafana]
Чтобы войти в систему, используйте имя пользователя по умолчанию + admin
(если вы не изменили параметр` + admin-user`) и пароль, который вы настроили в шаге 1.
Вы попадете на следующую * Домашнюю панель управления *:
изображение: https: //assets.digitalocean.com/articles/doks_helm_monitoring/grafana_home.png [Домашняя страница Графана]
В левой навигационной панели выберите кнопку * Dashboards *, затем нажмите * Manage *:
изображение: https: //assets.digitalocean.com/articles/doks_helm_monitoring/grafana_dashboard.png [вкладка «Панель инструментов Grafana»]
Вы перейдете к следующему интерфейсу управления панелью мониторинга, в котором перечислены панели, сконфигурированные в `+dashboards. -configmap.yaml + ` manifest:
изображение: https: //assets.digitalocean.com/articles/doks_helm_monitoring/grafana_dashboard_list.png [Список панели Grafana]
Эти инструментальные панели генерируются с помощью + kubernetes-mixin +
, проекта с открытым исходным кодом, который позволяет создавать стандартизированный набор мониторинга кластеров инструментальных панелей Grafana и предупреждений Prometheus. Чтобы узнать больше, обратитесь к kubernetes-mixin репозиторий GitHub.
Нажмите на панель управления * Kubernetes / Nodes *, которая отображает использование процессора, памяти, диска и сети для данного узла:
изображение: https: //assets.digitalocean.com/articles/doks_helm_monitoring/grafana_nodes_dash.png [Панель инструментов узлов Grafana]
Описание использования этих сводных панелей выходит за рамки данного руководства, но вы можете обратиться к следующим ресурсам, чтобы узнать больше:
-
Чтобы узнать больше о методе USE для анализа системы производительность, вы можете обратиться к странице Брендана Грегга The Метод насыщения и ошибок использования (USE).
-
Https://landing.google.com/sre/books/[SRE Book] от Google - еще один полезный ресурс, в частности Глава 6: Monitoring Распределенные системы.
-
Чтобы узнать, как создавать свои собственные панели управления Grafana, ознакомьтесь с Getting Started страница.
На следующем шаге мы будем следовать аналогичному процессу подключения и изучения системы мониторинга Prometheus.
[[step-4-—-accessing-prometheus-and-alertmanager]] === Шаг 4 - Доступ к Prometheus и Alertmanager
Чтобы подключиться к модулю Prometheus, мы можем использовать + kubectl port-forward +
для пересылки локального порта. Если вы закончили изучение Grafana, вы можете закрыть туннель переадресации портов, нажав + CTRL-C +
. Кроме того, вы можете открыть новую оболочку и создать новое соединение с переадресацией портов.
Начнем с перечисления запущенных модулей в пространстве имен + default +
:
kubectl get pod -n
Вы должны увидеть следующие стручки:
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 +
модуля + -prometheus-0 +
:
kubectl port-forward --namespace ${NAMESPACE} -prometheus-0 9090
Вы должны увидеть следующий вывод:
OutputForwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090
Это указывает на то, что локальный порт + 9090 +
успешно перенаправляется в модуль Prometheus.
Посетите + http: // localhost: 9090 +
в вашем веб-браузере. Вы должны увидеть следующую страницу Prometheus * Graph *:
изображение: https: //assets.digitalocean.com/articles/doks_monitoring_quickstart/prometheus.png [Страница с графиком Прометея]
Отсюда вы можете использовать PromQL, язык запросов Prometheus, для выбора и агрегирования метрик временных рядов, хранящихся в его базе данных. Чтобы узнать больше о PromQL, обратитесь к Querying Prometheus в официальных документах Prometheus.
В поле * Выражение * введите + kubelet_node_name +
и нажмите * Выполнить *. Вы должны увидеть список временных рядов с метрикой + kubelet_node_name +
, которая сообщает об Узлах в вашем кластере Kubernetes. Вы можете увидеть, какой узел сгенерировал метрику, и какое задание удалило метрику в метках метрики:
изображение: https: //assets.digitalocean.com/articles/doks_monitoring_quickstart/prometheus_results.png [Результаты запроса Prometheus]
Наконец, в верхней панели навигации нажмите * Status *, а затем * Targets *, чтобы увидеть список целей, которые Prometheus настроил для очистки. Вы должны увидеть список целей, соответствующих списку конечных точек мониторинга, описанному в начале https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager -monitoring-stack-on-digitalocean-kubernetes # step-2-% E2% 80% 94-создание-стека мониторинга [Шаг 2].
Чтобы узнать больше о Prometheus и о том, как запрашивать показатели кластера, обратитесь к официальным документам Prometheus.
Чтобы подключиться к Alertmanager, который управляет оповещениями, генерируемыми Prometheus, мы будем следовать процессу, аналогичному тому, который мы использовали для подключения к Prometheus. , В общем, вы можете исследовать оповещения Alertmanager, щелкнув по * Alerts * в верхней панели навигации Prometheus.
Чтобы подключиться к блокам Alertmanager, мы снова будем использовать + kubectl port-forward +
для пересылки локального порта. Если вы ознакомились с Prometheus, вы можете закрыть туннель переадресации портов, нажав + CTRL-C +
, или открыть новую оболочку, чтобы создать новое соединение. .
Мы собираемся перенаправить локальный порт + 9093 +
в порт + 9093 +
модуля + -alertmanager-0 +
:
kubectl port-forward --namespace ${NAMESPACE} -alertmanager-0 9093
Вы должны увидеть следующий вывод:
OutputForwarding from 127.0.0.1:9093 -> 9093
Forwarding from [::1]:9093 -> 9093
Это указывает на то, что локальный порт + 9093 +
успешно перенаправляется в модуль Alertmanager.
Посетите + http: // localhost: 9093 +
в своем веб-браузере. Вы должны увидеть следующую страницу Alertmanager * Alerts *:
изображение: https: //assets.digitalocean.com/articles/doks_monitoring_quickstart/alertmanager.png [страница оповещений Alertmanager]
Отсюда вы можете изучить оповещения об увольнении и, при необходимости, отключить их. Чтобы узнать больше о Alertmanager, обратитесь к документации official Alertmanager.
На следующем шаге вы узнаете, как дополнительно настраивать и масштабировать некоторые компоненты стека мониторинга.
[[step-6-—-configuring-the-monitoring-stack-optional]] === Шаг 6 - Настройка стека мониторинга (необязательно)
Манифесты, включенные в репозиторий Quickstart для мониторинга кластера DigitalOcean Kubernetes, можно изменить, чтобы использовать разные образы контейнеров, разное количество реплик Pod, разные порты и настраиваемые файлы конфигурации.
На этом этапе мы предоставим общий обзор цели каждого манифеста, а затем продемонстрируем, как масштабировать Prometheus до 3-х реплик, изменяя основной файл манифеста.
Для начала перейдите в подкаталог + manifest +
в репозитории и перечислите содержимое каталога:
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
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-0serviceaccount.yaml [ '+ alertmanager-0serviceaccount.yaml + `]: Учетная запись службы Alertmanager, используемая для предоставления блокам Alertmanager идентификатора Kubernetes. Чтобы узнать больше об учетных записях служб, обратитесь к Configure учетные записи служб для модулей.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-configmap.yaml [ '+ alertmanager-configmap.yaml +
]: ConfigMap, содержащий минимальный файл конфигурации Alertmanager, называемый `+ alertmanager.yml +
. Настройка Alertmanager выходит за рамки данного руководства, но вы можете узнать больше, обратившись к разделу Configuration документации Alertmanager. -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-operated-service.yaml [ '+ alertmanager-оперированные-service.yaml +
]: Служба Alertmanager `+ mesh +
, которая используется для маршрутизации запросов между модулями Alertmanager в текущей конфигурации высокой доступности с 2 репликами. -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-service.yaml [ '+ alertmanager-service.yaml +
]: Служба Alertmanager `+ web +
, которая используется для доступа к веб-интерфейсу Alertmanager, что вы, возможно, сделали на предыдущем шаге. -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-statefulset.yaml [ '+ alertmanager-statefulset.yaml + `]: Alertmanager StatefulSet, настроенный с 2 репликами.
графана
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/dashboards-configmap.yaml [ '+ Щитки-configmap.yaml + `]: ConfigMap, содержащий предварительно сконфигурированные JSON инструментальные панели мониторинга Grafana. Создание нового набора информационных панелей и оповещений с нуля выходит за рамки данного руководства, но для получения дополнительной информации вы можете обратиться к kubernetes-mixin GitHub repo.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-0serviceaccount.yaml [ '+ графана-0serviceaccount.yaml + `]: Сервисный аккаунт Графана.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-configmap.yaml [ '+ графана-configmap.yaml + `]: ConfigMap, содержащий набор по умолчанию минимальных конфигурационных файлов Grafana.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-secret.yaml [ '+ графана-secret.yaml + `]: Секрет Kubernetes, содержащий имя пользователя и пароль администратора Grafana. Чтобы узнать больше о секретах Kubernetes, обратитесь к Secrets.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-service.yaml [ '+ графана-service.yaml + `]: Манифест, определяющий Службу Графана.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-statefulset.yaml [ '+ графана-statefulset.yaml + `]: Grafana StatefulSet, настроенный с 1 репликой, которая не масштабируется. Масштабирование Grafana выходит за рамки этого урока. Чтобы узнать, как создать высокодоступную настройку Grafana, вы можете обратиться к How для установки Grafana для высокой доступности из официальных документов Grafana.
Кубэ-состояние-метрика
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/kube-state-metrics-0serviceaccount.yaml [ '+ Kube-состояние-метрики-0serviceaccount.yaml + `]: Учетная запись службы показателей состояния куба и ClusterRole. Чтобы узнать больше о ClusterRoles, обратитесь к Role и ClusterRole из документов Kubernetes.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/kube-state-metrics-deployment.yaml [ '+ Kube-состояние-метрики-deployment.yaml +
]: Основной манифест развертывания метрики состояния куба, настроенный для 1 динамически масштабируемой реплики с использованием https://github.com/kubernetes/autoscaler/tree/master/addon-resizer [
+ addon-resizer +`]. -
https://github.com/do-community/doks-monitoring/blob/master/manifest/kube-state-metrics-service.yaml [ '+ Kube-состояние-метрики-service.yaml +
]: Сервис, предоставляющий `+ kube-state-metrics +
Развертывание.
Узел-экспортер
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/node-exporter-0serviceaccount.yaml [ '+ узел-экспортер-0serviceaccount.yaml + `]: Учетная запись службы узла-экспортера.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/node-exporter-ds.yaml [ '+ узел-экспортер-ds.yaml + `]: Манифест узла-экспортера DaemonSet. Так как узел-экспортер является DaemonSet, модуль-узел-экспортер запускается на каждом узле в кластере.
Прометей
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-0serviceaccount.yaml [ '+ ПРОМЕТЕЙ-0serviceaccount.yaml + `]: Учетная запись службы Prometheus, ClusterRole и ClusterRoleBinding.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-configmap.yaml [ '+ ПРОМЕТЕЙ-configmap.yaml + `]: ConfigMap, который содержит три файла конфигурации:
-
+ alerts.yaml +
: содержит предварительно настроенный набор оповещений, сгенерированных+ kubernetes-mixin +
(который также использовался для генерации информационных панелей Grafana). Чтобы узнать больше о настройке правил оповещения, обратитесь к Alerting Rules из документации Prometheus. -
+ prometheus.yaml +
: основной файл конфигурации Prometheus. Прометей был предварительно настроен для очистки всех компонентов, перечисленных в начале https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack-on -digitalocean-kubernetes # step-2-% E2% 80% 94-создание-стека мониторинга [Шаг 2]. Настройка Prometheus выходит за рамки этой статьи, но чтобы узнать больше, вы можете обратиться к Configuration в официальных документах Prometheus. -
+ rules.yaml +
: набор правил записи Prometheus, которые позволяют Прометей для вычисления часто необходимых или вычислительно дорогих выражений и сохранения их результатов в виде нового набора временных рядов. Они также генерируются+ kubernetes-mixin +
, и их настройка выходит за рамки этой статьи. Чтобы узнать больше, вы можете обратиться к Recording Rules из официальной документации Prometheus. -
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-service.yaml [ '+ ПРОМЕТЕЙ-service.yaml + `]: Сервис, который предоставляет Prometheus StatefulSet.
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-statefulset.yaml [ '+ ПРОМЕТЕЙ-statefulset.yaml + `]: Prometheus StatefulSet, настроенный с 2 репликами. Этот параметр можно масштабировать в зависимости от ваших потребностей.
Пример: масштабирование Прометея
Чтобы продемонстрировать, как изменить стек мониторинга, мы масштабируем количество реплик Prometheus с 2 до 3.
Откройте файл мастер-манифеста + _manifest.yaml +
с помощью выбранного вами редактора:
nano _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:
podManagementPolicy: "Parallel"
updateStrategy:
type: "RollingUpdate"
selector:
matchLabels: *Labels
template:
metadata:
labels: *Labels
spec:
. . .
Когда вы закончите, сохраните и закройте файл.
Примените изменения, используя + kubectl apply -f +
:
kubectl apply -f _manifest.yaml --namespace default
Вы можете отслеживать прогресс, используя + kubectl get pods +
. Используя эту же технику, вы можете обновить многие параметры Kubernetes и большую часть конфигурации для этого стека наблюдаемости.
Заключение
В этом руководстве вы установили стек мониторинга Prometheus, Grafana и Alertmanager в свой кластер DigitalOcean Kubernetes со стандартным набором панелей мониторинга, правил Prometheus и предупреждений.
Вы также можете развернуть этот стек мониторинга с помощью диспетчера пакетов Kubernetes Helm. Чтобы узнать больше, обратитесь к How для установки DigitalOcean Мониторинг кластера Кубернетеса с помощью шлема и прометея. Еще один способ установить и запустить этот стек - это использовать DigitalOcean Marketplace https://marketplace.digitalocean.com/apps/kubernetes-monitoring-stack-beta[Kubernetes Solution Stack Solution, который в настоящее время находится в стадии бета-тестирования.
Хранилище быстрого запуска DigitalOcean Kubernetes Cluster Monitoring в значительной степени основано на решении click-to-deploy Prometheus и изменено с него. Полный манифест изменений и изменений из исходного репозитория можно найти в https://github.com/do-community/doks-monitoring/blob/master/changes.md [+ changes.md +
file быстрого репозитория репозитория. ,