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


Мониторинг приложений Apache Spark с помощью Azure Log Analytics

В этом учебнике описано, как включить встроенный в Log Analytics соединитель Synapse Studio. Затем вы можете собирать и передавать метрики приложений и журналы Apache Spark в рабочую область Log Analytics. Наконец, вы сможете визуализировать эти метрики и журналы с помощью книги Azure Monitor.

Настройка сведений о рабочей области

Выполните приведенные ниже действия, чтобы настроить необходимые сведения в Synapse Studio.

Шаг 1. Создание рабочей области Log Analytics

Чтобы создать эту рабочую область, ознакомьтесь с одним из следующих ресурсов:

Шаг 2. Сбор сведений о конфигурации

Используйте любой из следующих параметров для подготовки конфигурации.

Вариант 1. Настройка с помощью идентификатора и ключа рабочей области Log Analytics

Соберите следующие значения для конфигурации Spark:

  • <LOG_ANALYTICS_WORKSPACE_ID> — идентификатор рабочей области Log Analytics.
  • <LOG_ANALYTICS_WORKSPACE_KEY> — ключ Log Analytics. Чтобы найти это, в портал Azure перейдите к первичному ключу агентов>рабочей области>Azure Log Analytics.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

Вариант 2. Настройка с помощью Azure Key Vault

Примечание.

Вам нужно предоставить разрешение на чтение секрета пользователям, которые будут отправлять приложения Apache Spark. Дополнительные сведения см. в статье Предоставление доступа к ключам, сертификатам и секретам Key Vault с помощью управления доступом на основе ролей Azure. Если эта функция включена в конвейере Synapse, нужно использовать вариант 3. Это необходимо для получения секрета из Azure Key Vault с управляемым удостоверением рабочей области.

Чтобы настроить хранение ключа рабочей области в Azure Key Vault, выполните следующие действия:

  1. На портале Azure создайте хранилище ключей и перейдите к нему.

  2. На странице параметров хранилища ключей выберите Секреты.

  3. Выберите Создать/импортировать.

  4. На экране Создание секрета выберите следующие значения:

    • Имя — укажите имя секрета. Для значения по умолчанию введите SparkLogAnalyticsSecret.
    • Значение — введите <LOG_ANALYTICS_WORKSPACE_KEY> для секрета.
    • Оставьте другие значения по умолчанию. Затем выберите Создать.
  5. Соберите следующие значения для конфигурации Spark:

    • <LOG_ANALYTICS_WORKSPACE_ID> — идентификатор рабочей области Log Analytics.
    • <AZURE_KEY_VAULT_NAME> — имя настроенного хранилища ключей.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (необязательно) — имя секрета в хранилище ключей для ключа рабочей области. Значение по умолчанию — SparkLogAnalyticsSecret.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Примечание.

Вы также можете сохранить идентификатор рабочей области в Key Vault. Руководствуясь предыдущими шагами, сохраните идентификатор рабочей области с именем секрета SparkLogAnalyticsWorkspaceId. Кроме того, можно использовать конфигурацию spark.synapse.logAnalytics.keyVault.key.workspaceId, чтобы указать имя секрета для идентификатора рабочей области в Key Vault.

Вариант 3. Настройка с помощью связанной службы

Примечание.

В этом случае необходимо предоставить разрешение на чтение секрета управляемому удостоверению рабочей области. Дополнительные сведения см. в статье Предоставление доступа к ключам, сертификатам и секретам Key Vault с помощью управления доступом на основе ролей Azure.

Чтобы настроить в Synapse Studio связанную службу Key Vault для хранения ключа рабочей области, выполните следующие действия:

  1. Выполните все действия, описанные в разделе "Вариант 2".

  2. Создайте в Synapse Studio связанную с Key Vault службу, сделав следующее:

    a. Выберите Synapse Studio>Управление>Связанные службы, а затем выберите Создать.

    b. В поле поиска введите Azure Key Vault.

    c. Введите имя для связанной службы.

    d. Выберите хранилище ключей и нажмите Создать.

  3. Добавьте элемент spark.synapse.logAnalytics.keyVault.linkedServiceName в конфигурацию Apache Spark.

spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

Список конфигураций Apache Spark см. в разделе "Доступные конфигурации Apache Spark"

Шаг 3. Создание конфигурации Apache Spark

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

  1. Выберите Управление>Конфигурации Apache Spark.

  2. Нажмите кнопку "Создать" , чтобы создать новую конфигурацию Apache Spark.

  3. После нажатия кнопки "Создать" откроется новая страница конфигурации Apache Spark.

    Снимок экрана: создание конфигурации Spark.

  4. В поле Имя можно ввести предпочитаемое и допустимое имя.

  5. В поле Описание можно ввести описание.

  6. Вы можете добавить заметки, нажав кнопку Создать, а также удалить существующие заметки, нажав кнопку Удалить.

  7. Для свойств конфигурации добавьте все свойства из выбранного параметра конфигурации, нажав кнопку "Добавить ". Для свойства добавьте имя свойства, указанное в списке, и для значения используется значение, которое вы собрали во время шага 2. Если вы не добавите свойство, Azure Synapse будет использовать значение по умолчанию при необходимости.

    Снимок экрана: пример обновления свойств конфигурации.

Отправка приложения Apache Spark и просмотр журналов и метрик

Это делается следующим образом:

  1. Отправьте приложение Apache Spark в пул Apache Spark, настроенный на предыдущем шаге. Можно использовать любой из следующих способов:

    • Запустите записную книжку в Synapse Studio.
    • В Synapse Studio отправьте пакетное задание Apache Spark с помощью определения задания Apache Spark.
    • Запустите конвейер, который содержит действие Apache Spark.
  2. Когда приложение Apache Spark запустится, перейдите в указанную рабочую область Log Analytics, а затем просмотрите метрики и журналы приложения.

Запись настраиваемых журналов приложений

Для записи настраиваемых журналов можно использовать библиотеку Apache Log4j.

Пример для Scala:

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

Пример для PySpark:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

Использование примера книги для визуализации метрик и журналов

  1. Скачайте нужную книгу.

  2. Откройте и скопируйте содержимое файла книги.

  3. На портале Azure выберите Рабочие области Log Analytics>Книги.

  4. Откройте книгу Empty (Пустая). Перейдите в режим Расширенный редактор, выбрав значок </>.

  5. Вставьте скопированный текст, заменив им любой существующий код JSON.

  6. Нажмите кнопку Применить, а затем — Редактирование завершено.

    Снимок экрана, на котором показана новая книга.

    Снимок экрана, на котором показано, как импортировать книгу.

Затем отправьте приложение Apache Spark в настроенный пул Apache Spark. Когда приложение перейдет в состояние выполнения, выберите работающее приложение в раскрывающемся списке книги.

Снимок экрана, на котором показана книга.

Книгу можно настроить. Например, можно использовать запросы Kusto и настроить оповещения.

Снимок экрана, на котором показана настройка книги с помощью запроса и оповещений.

Запрос данных с помощью Kusto

Ниже приведен пример запроса событий Apache Spark.

SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Ниже приведен пример запроса журналов драйверов и исполнителей приложения Apache Spark.

SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100

Ниже приведен пример запроса метрик Apache Spark.

SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Создание оповещений и управление ими

Пользователи могут отправлять запросы для оценки метрик и журналов с заданной периодичностью и запуска оповещений на основе результатов. Дополнительные сведения см. в разделе Создание и просмотр оповещений журналов, а также управление ими с помощью Azure Monitor.

Рабочая область Synapse с включенной защитой от кражи данных

После создания рабочей области Synapse с включенной защитой от кражи данных.

Если вы хотите включить эту функцию, необходимо создать запросы на подключение управляемых частных конечных точек к областям приватного канала Azure Monitor (AMPLS) в утвержденных клиентах Microsoft Entra рабочей области.

Чтобы создать управляемое подключение к частной конечной точке для областей приватных каналов Azure Monitor (AMPLS), сделайте следующее:

  1. Если нет существующих AMPLS, вы можете следовать настройке подключения Azure Monitor Приватный канал, чтобы создать его.
  2. Перейдите к AMPLS в портал Azure на странице ресурсов Azure Monitor, выберите "Добавить", чтобы добавить подключение к рабочей области Azure Log Analytics.
  3. Перейдите к управляемым частным конечным точкам Synapse Studio > >, нажмите кнопку "Создать", выберите Azure Monitor Приватный канал области и продолжить.

    Снимок экрана: создание управляемой частной конечной точки AMPLS 1.

  4. Выберите созданную область azure Monitor Приватный канал и нажмите кнопку "Создать".

    Снимок экрана: создание управляемой частной конечной точки AMPLS 2.

  5. Подождите несколько минут, пока частная конечная точка не будет подготовлена.
  6. Снова перейдите к AMPLS на портале Azure на странице Подключения к частной конечной точке, выберите подготовленное подключение и нажмите Утвердить.

Примечание.