Мониторинг метрик приложений Apache Spark с помощью Prometheus и Grafana
Обзор
В этом руководстве вы узнаете, как развернуть решение метрик приложения Apache Spark в кластере Службы Azure Kubernetes (AKS) и узнать, как интегрировать панели мониторинга Grafana.
Это решение можно использовать для сбора и запроса данных метрик Apache Spark практически в режиме реального времени. Интегрированные панели мониторинга Grafana позволяют диагностировать и отслеживать приложение Apache Spark. Исходный код и конфигурации были открыты на GitHub.
Предпосылки
- Azure CLI
- #B0 клиент Helm 3.30+ #C1
- kubectl
- Служба 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
Войдите в рабочую область Azure Synapse Analytics в качестве администратора Synapse.
В Synapse Studio на левой панели выберите Управление > доступом
Нажмите кнопку "Добавить" в левом верхнем углу, чтобы назначить роль.
Для параметра Scope выберите Workspace
Для роли выберите Synapse Compute Operator
Для Select пользователя введите ваш <service_principal_name> и нажмите на основной сервис.
Нажмите Применить (подождите 3 минуты, чтобы разрешение вступило в силу.)
Примечание.
Убедитесь, что ваша учетная запись службы обладает по крайней мере ролью "Читатель" в вашей рабочей области Synapse. Перейдите на вкладку управления доступом (IAM) портала Azure и проверьте параметры разрешений.
Установка соединителя, сервер Prometheus, панель мониторинга Grafana
- Добавьте репозиторий synapse-charts в клиент Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
- Установите компоненты через клиент 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. Он реализует:
- Аутентификация: Это аутентификация, основанная на AAD, и она может автоматически обновлять токен AAD служебного принципала для обнаружения приложений, сбора метрик и выполнения других функций.
- Обнаружение приложений Apache Spark. При отправке приложений в целевой рабочей области соединитель Synapse Prometheus может автоматически обнаруживать эти приложения.
- Метаданные приложения 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.