Поделиться через


Мониторинг метрик приложений Apache Spark с помощью Prometheus и Grafana

Обзор

В этом руководстве вы узнаете, как развернуть решение метрик приложения Apache Spark в кластере Службы Azure Kubernetes (AKS) и узнать, как интегрировать панели мониторинга Grafana.

Это решение можно использовать для сбора и запроса данных метрик Apache Spark практически в режиме реального времени. Интегрированные панели мониторинга Grafana позволяют диагностировать и отслеживать приложение Apache Spark. Исходный код и конфигурации были открыты на GitHub.

Предпосылки

  1. Azure CLI
  2. #B0 клиент Helm 3.30+ #C1
  3. kubectl
  4. Служба Azure Kubernetes (AKS)

Или используйте Azure Cloud Shell, который уже включает Azure CLI, клиент Helm и kubectl из коробки.

Вход в Azure

az login
az account set --subscription "<subscription_id>"

Создайте экземпляр службы Azure Kubernetes (AKS)

Используйте команду Azure CLI для создания кластера Kubernetes в подписке.

az aks create --name <kubernetes_name> --resource-group <kubernetes_resource_group> --location <location> --node-vm-size Standard_D2s_v3
az aks get-credentials --name <kubernetes_name> --resource-group <kubernetes_resource_group>

Примечание. Этот шаг можно пропустить, если у вас уже есть кластер AKS.

Создайте субъект-службу и предоставьте разрешения для рабочей области Synapse

az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>

Результат должен выглядеть следующим образом:

{
  "appId": "abcdef...",
  "displayName": "<service_principal_name>",
  "name": "http://<service_principal_name>",
  "password": "abc....",
  "tenant": "<tenant_id>"
}

Запишите идентификатор приложения, пароль и идентификатор клиента.

#B0 #A1 #A2 снимок экрана: предоставление разрешений srbac #A3 #A4 #C5

  1. Войдите в рабочую область Azure Synapse Analytics в качестве администратора Synapse.

  2. В Synapse Studio на левой панели выберите Управление > доступом

  3. Нажмите кнопку "Добавить" в левом верхнем углу, чтобы назначить роль.

  4. Для параметра Scope выберите Workspace

  5. Для роли выберите Synapse Compute Operator

  6. Для Select пользователя введите ваш <service_principal_name> и нажмите на основной сервис.

  7. Нажмите Применить (подождите 3 минуты, чтобы разрешение вступило в силу.)

Примечание.

Убедитесь, что ваша учетная запись службы обладает по крайней мере ролью "Читатель" в вашей рабочей области Synapse. Перейдите на вкладку управления доступом (IAM) портала Azure и проверьте параметры разрешений.

Установка соединителя, сервер Prometheus, панель мониторинга Grafana

  1. Добавьте репозиторий synapse-charts в клиент Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. Установите компоненты через клиент Helm:
helm install spo synapse-charts/synapse-prometheus-operator --create-namespace --namespace spo \
    --set synapse.workspaces[0].workspace_name="<workspace_name>" \
    --set synapse.workspaces[0].tenant_id="<tenant_id>" \
    --set synapse.workspaces[0].service_principal_name="<service_principal_app_id>" \
    --set synapse.workspaces[0].service_principal_password="<service_principal_password>" \
    --set synapse.workspaces[0].subscription_id="<subscription_id>" \
    --set synapse.workspaces[0].resource_group="<workspace_resource_group_name>"
  • workspace_name: имя рабочей области Synapse.
  • subscription_id: Идентификатор подписки для рабочей области Synapse.
  • workspace_resource_group_name: имя группы ресурсов рабочей области Synapse.
  • tenant_id: идентификатор клиента рабочей области Synapse.
  • service_principal_app_id: служебный принципал "appId"
  • service_principal_password: пароль основного сервиса, который вы создали.

Вход в Grafana

Получите пароль и адрес Grafana по умолчанию. Вы можете изменить пароль в параметрах Grafana.

kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana

Получите IP-адрес службы, скопируйте и вставьте внешний IP-адрес в браузер, затем войдите, используя имя пользователя "admin" и пароль.

Использование панелей мониторинга Grafana

Найдите панель приборов Synapse в левом верхнем углу страницы Grafana (Главная - > Рабочая область Synapse / Приложение Synapse), попробуйте запустить пример кода в Synapse Studio и подождите несколько секунд, пока не произойдет извлечение метрик.

Кроме того, можно использовать панели мониторинга "Рабочая область Synapse / Рабочая область" и "Рабочая область Synapse / пулы Apache Spark", чтобы получить общие сведения о рабочей области и пулах Apache Spark.

Деинсталляция

Удалите компоненты с помощью команды Helm следующим образом.

helm delete <release_name> -n <namespace>

Удалите кластер AKS.

az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>

Общие сведения о компонентах

Azure Synapse Analytics предоставляет диаграмму Helm на основе оператора Prometheus и коннектора Synapse Prometheus. Диаграмма Helm включает сервер Prometheus, сервер Grafana и панели мониторинга Grafana для метрик уровня приложения Apache Spark. Вы можете использовать Prometheus, популярную систему мониторинга с открытым исходным кодом, для сбора этих метрик в почти реальном времени и использовать Grafana для визуализации.

Соединитель Synapse Prometheus

Соединитель Synapse Prometheus позволяет подключать пул Apache Spark в Azure Synapse и сервер Prometheus. Он реализует:

  1. Аутентификация: Это аутентификация, основанная на AAD, и она может автоматически обновлять токен AAD служебного принципала для обнаружения приложений, сбора метрик и выполнения других функций.
  2. Обнаружение приложений Apache Spark. При отправке приложений в целевой рабочей области соединитель Synapse Prometheus может автоматически обнаруживать эти приложения.
  3. Метаданные приложения Apache Spark: он собирает основные сведения о приложении и экспортирует данные в Prometheus.

Коннектор Synapse Prometheus выпускается в виде образа Docker, размещенного в реестре контейнеров Microsoft. Он является программным обеспечением с открытым исходным кодом и находится в метриках приложений Azure Synapse Apache Spark.

Сервер Prometheus

Prometheus — это набор средств мониторинга и оповещений с открытым кодом. Prometheus завершил программу Cloud Native Computing Foundation (CNCF) и стал де-факто стандартом для мониторинга облачно-нативных технологий. Prometheus может помочь нам собирать, запрашивать и хранить большие объемы данных временных рядов, и его можно легко интегрировать с Grafana. В этом решении мы развертываем компонент Prometheus на основе диаграммы helm.

Grafana и панели мониторинга

Grafana — это программное обеспечение для визуализации и аналитики с открытым кодом. Он позволяет запрашивать, визуализировать, оповещать и изучать метрики. Azure Synapse Analytics предоставляет набор панелей мониторинга Grafana по умолчанию для визуализации метрик на уровне приложения Apache Spark.

Панель мониторинга Synapse Workspace / Workspace предоставляет представление на уровне рабочей области всех пулов Apache Spark, счетчиков приложений, ядер ЦП и т. д.

#B0 #A1 #A2 снимок экрана: рабочая область панели мониторинга #A3 #A4 #C5

Информационная панель "Пулы Apache Spark для рабочей области Synapse" содержит метрики приложений Apache Spark, работающих в выбранном пуле в течение заданного периода времени.

#B0 #A1 #A2 снимок экрана панели мониторинга Sparkpool #A3 #A4 #C5

Панель мониторинга "Рабочая область Synapse / приложение Apache Spark" содержит выбранное приложение Apache Spark.

#B0 #A1 #A2 снимок экрана: приложение панели мониторинга #A3 #A4 #C5

Приведенные выше шаблоны панелей мониторинга были открыты с открытым исходным кодом в метриках приложений Azure Synapse Apache Spark.