Use dashboards to visualize Azure Databricks metrics (Визуализация метрик Azure Databricks с помощью панелей мониторинга)

Примечание.

В этой статье используется библиотека открытый код, размещенная на сайте GitHubhttps://github.com/mspnp/spark-monitoring:

Исходная библиотека поддерживает Azure Databricks Runtimes 10.x (Spark 3.2.x) и более ранних версий.

Databricks внесли обновленную версию для поддержки Azure Databricks Runtimes 11.0 (Spark 3.3.x) и выше в l4jv2 ветви по адресу: https://github.com/mspnp/spark-monitoring/tree/l4jv2

Обратите внимание, что выпуск 11.0 не совместим обратно из-за различных систем ведения журнала, используемых в Databricks Runtimes. Не забудьте использовать правильную сборку для среды выполнения Databricks. Библиотека и репозиторий GitHub находятся в режиме обслуживания. Нет планов для дальнейших выпусков, и поддержка проблем будет максимальной. Для получения дополнительных вопросов о библиотеке или стратегии мониторинга и ведения журнала сред Azure Databricks обратитесь в службу azure-spark-monitoring-help@databricks.comмониторинга и ведения журнала.

В этой статье показано, как настроить панель мониторинга Grafana для мониторинга заданий Azure Databricks на наличие проблем с производительностью.

Azure Databricks — это быстрая, высокоэффективная и поддерживающая совместную работу служба аналитики на основе Apache Spark, которая позволяет без труда разрабатывать и развертывать решения аналитики больших данных и искусственного интеллекта (ИИ). Наблюдение является важнейшим компонентом операционных Azure Databricks рабочих нагрузок в рабочей среде. Первым шагом является сбор метрик в рабочую область для анализа. В Azure лучшим решением для управления данными журналов является Azure Monitor. Azure Databricks не поддерживает отправку данных журнала в Azure Monitor, но библиотека для этой функции доступна в GitHub.

Эта библиотека включает ведение журнала метрик службы Azure Databricks, а также метрики событий запросов потоковой передачи для структуры Apache Spark. После успешного развертывания этой библиотеки в кластере Azure Databricks можно развернуть набор панелей мониторинга Grafana как часть рабочей среды.

Screenshot of the dashboard.

Необходимые компоненты

Настройте кластер Azure Databricks для использования библиотеки мониторинга, как описано в файле сведений GitHub.

Развертывание рабочей области Azure Log Analytics

Чтобы развернуть рабочую область Azure Log Analytics, выполните следующие действия:

  1. Перейдите к каталогу /perftools/deployment/loganalytics.

  2. Разверните шаблон Azure Resource Manager logAnalyticsDeploy.json. Дополнительные сведения о развертывании шаблонов Resource Manager см. в разделе Развертывание ресурсов с использованием шаблонов Resource Manager и Azure CLI. Шаблон включает следующие параметры:

    • location: регион, в котором развертываются рабочая область Log Analytics и панели мониторинга.
    • serviceTier: ценовая категория рабочей области. Список допустимых значений см. здесь.
    • dataRetention (необязательно): количество дней, в течение которых данные журналов хранятся в рабочей области Log Analytics. Значение по умолчанию — 30 дней. Для ценовой категории Free срок хранения данных должен составлять семь дней.
    • workspaceName (необязательно): имя рабочей области. Если не указано, шаблон сформирует имя самостоятельно.
    az deployment group create --resource-group <resource-group-name> --template-file logAnalyticsDeploy.json --parameters location='East US' serviceTier='Standalone'
    

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

Развертывание Grafana на виртуальной машине

Grafana — это проект с открытым исходным кодом, который можно развернуть для визуализации метрик временных рядов, хранящихся в рабочей области Azure Log Analytics, с помощью подключаемого модуля Grafana для Azure Monitor. Программное обеспечение Grafana выполняется на виртуальной машине, и для него требуются учетная запись хранения, виртуальная сеть и другие ресурсы. Чтобы развернуть виртуальную машину с образом Grafana, сертифицированным Bitnami, и соответствующими ресурсами, выполните следующие действия:

  1. Используйте Azure CLI, чтобы принять условия использования образа Azure Marketplace для Grafana.

    az vm image terms accept --publisher bitnami --offer grafana --plan default
    
  2. Перейдите в каталог /spark-monitoring/perftools/deployment/grafana локальной копии репозитория GitHub.

  3. Разверните шаблон Resource Manager grafanaDeploy.json следующим образом:

    export DATA_SOURCE="https://raw.githubusercontent.com/mspnp/spark-monitoring/master/perftools/deployment/grafana/AzureDataSource.sh"
    az deployment group create \
        --resource-group <resource-group-name> \
        --template-file grafanaDeploy.json \
        --parameters adminPass='<vm password>' dataSource=$DATA_SOURCE
    

После завершения развертывания на виртуальной машине будет установлен образ Grafana Bitnami.

Обновление пароля Grafana

В процессе установки сценарий установки Grafana выводит временный пароль для пользователя admin. Этот временный пароль необходим для входа. Чтобы получить временный пароль, выполните следующие действия:

  1. Войдите на портал Azure.
  2. Выберите группу ресурсов, в которой были развернуты ресурсы.
  3. Выберите виртуальную машину, на которой было установлено программное обеспечение Grafana. Если вы использовали имя параметра по умолчанию в шаблоне развертывания, то к имени виртуальной машины будет добавлен префикс sparkmonitoring-vm-grafana.
  4. В разделе Поддержка и устранение неполадок выберите Диагностика загрузки, чтобы открыть страницу "Диагностика загрузки".
  5. На странице "Диагностика загрузки" щелкните Последовательный журнал.
  6. Найдите строку "Setting Bitnami application password to" ("Установка пароля приложения Bitnami").
  7. Скопируйте пароль в надежное расположение.

Затем измените пароль администратора Grafana, выполнив следующие действия:

  1. На портале Azure выберите виртуальную машину и щелкните Обзор.
  2. Скопируйте общедоступный IP-адрес.
  3. Откройте браузер и перейдите по следующему URL-адресу: http://<IP address>:3000.
  4. На экране входа Grafana введите admin в качестве имени пользователя и используйте пароль Grafana из предыдущих шагов.
  5. После входа выберите Конфигурация (значок шестеренки).
  6. Выберите Администратор сервера.
  7. На вкладке Пользователи выберите имя входа admin.
  8. Обновите пароль.

Создание источника данных Azure Monitor

  1. Создайте субъект-службу, который позволяет Grafana управлять доступом к рабочей области Log Analytics. Дополнительные сведения см. в статье Создание субъекта-службы Azure с помощью Azure CLI.

    az ad sp create-for-rbac --name http://<service principal name> \
                    --role "Log Analytics Reader" \
                    --scopes /subscriptions/mySubscriptionID
    
  2. Обратите внимание на значения идентификатора приложения (appId), пароля (password) и клиента (client) в выходных данных этой команды:

    {
        "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "displayName": "azure-cli-2019-03-27-00-33-39",
        "name": "http://<service principal name>",
        "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  3. Выполните вход в Grafana, как описано выше. Выберите Конфигурация (значок шестеренки), а затем Источники данных.

  4. На вкладке Источники данных щелкните Добавить источник данных.

  5. Выберите Azure Monitor в качестве типа источника данных.

  6. В разделе Параметры введите имя источника данных в текстовое поле Имя.

  7. В разделе Сведения об API Azure Monitor укажите следующие сведения:

    • Идентификатор подписки: идентификатор вашей подписки Azure.
    • Идентификатор арендатора: идентификатор арендатора, использованный ранее.
    • Идентификатор клиента: значение параметра "appId", использованное ранее.
    • Секрет клиента: значение параметра "password", использованное ранее.
  8. В разделе Сведения об API Azure Log Analytics установите флажок Те же сведения, что и для API Azure Monitor.

  9. Нажмите кнопку "Сохранить" и " Тест". Если источник данных Log Analytics настроен правильно, появится сообщение об успешном выполнении.

Создание панели мониторинга

Создайте панели мониторинга в Grafana, выполнив следующие действия:

  1. Перейдите в каталог /perftools/dashboards/grafana локальной копии репозитория GitHub.

  2. Выполните следующий скрипт:

    export WORKSPACE=<your Azure Log Analytics workspace ID>
    export LOGTYPE=SparkListenerEvent_CL
    
    sh DashGen.sh
    

    Выходные данные скрипта — это файл с именем SparkMonitoringDash.json.

  3. Вернитесь на панель мониторинга Grafana и выберите Создать (значок "плюс").

  4. Выберите Импорт.

  5. Выберите Отправить файл JSON.

  6. Выберите файл SparkMonitoringDash.json, созданный на шаге 2.

  7. В разделе Параметры в подразделе ALA выберите источник данных Azure Monitor, созданный ранее.

  8. Нажмите кнопку Импорт.

Визуализации на панелях мониторинга

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

Доступны следующие визуализации:

Задержка задания

На этой визуализации отображается задержка выполнения задания, которая позволяет получить грубую оценку общей производительности задания. Отображает продолжительность выполнения задания от начала до завершения. Обратите внимание, что время запуска задания отличается от времени отправки задания. Задержка представлена в виде процентилей выполнения задания (10 %, 30 %, 50 %, 90 %), индексированных по идентификатору кластера и идентификатору приложения.

Задержка этапа

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

Задержка задачи

На этой визуализации отображается задержка выполнения задачи. Задержка представлена в виде процентиля выполнения задачи на кластер, имя этапа и приложение.

Суммарное выполнение задач на узле

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

Метрики задач

На этой визуализации отображается набор метрик выполнения для указанной задачи. Эти метрики включают размер и длительность случайного перемещения данных, продолжительность операций сериализации и десериализации и другие показатели. Чтобы просмотреть полный набор метрик, воспользуйтесь запросом Log Analytics для панели. Эта визуализация помогает понять, какие операции входят в состав задачи и определить потребление ресурсов для каждой операции. Пики в графе представляют затратные операции, которые необходимо изучить.

Пропускная способность кластера

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

Пропускная способность и задержка потоковой передачи

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

Потребление ресурсов на исполнителя

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

Метрики времени вычислений исполнителя

Теперь рассмотрим набор визуализаций для панели мониторинга, которые показывают отношение времени сериализации, времени десериализации, времени ЦП и времени виртуальной машины Java исполнителя к общему времени вычислений исполнителя. Эти визуализации наглядно показывают вклад каждой из этих четырех метрик в общий объем операций обработки исполнителя.

Метрики случаного перемещения данных

Последний набор визуализаций показывает метрики случайного перемещения данных, связанные с запросом структурированной потоковой передачи, для всех исполнителей. К ним относятся число прочитанных и записанных в случайном порядке байт, объем памяти, используемой в случайном порядке, и размер дискового пространства для запросов, в которых используется файловая система.

Следующие шаги