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


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

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

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

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

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

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

Шаг 2. Подготовка файла конфигурации Apache Spark

Для подготовки файла используйте любой из указанных ниже вариантов.

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

Скопируйте указанную ниже конфигурацию Apache Spark, сохраните ее с именем spark_loganalytics_conf.txt и заполните следующие параметры:

  • <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. Скопируйте указанную ниже конфигурацию Apache Spark, сохраните ее с именем spark_loganalytics_conf.txt и заполните следующие параметры:

    • <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.name <AZURE_KEY_VAULT_NAME>
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

Примечание.

Этот шаг будет заменен на шаге 4.

Файл конфигурации можно передать в пул Apache Spark в Azure Synapse Analytics. В Synapse Studio:

  1. Выберите Управление>Пулы Apache Spark.

  2. Рядом с пулом Apache Spark нажмите кнопку ....

  3. Выберите Конфигурация Apache Spark.

  4. Щелкните Отправить и выберите файл spark_loganalytics_conf.txt.

  5. Выберите Отправить, а затем — Применить.

    Снимок экрана, на котором показана конфигурация пула Spark.

Примечание.

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

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

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

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

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

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

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

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

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

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

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

Отправка приложения 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 (A M P L S) в утвержденных клиентах Microsoft Entra рабочей области.

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

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

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

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

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

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

Примечание.

  • Объект AMPLS имеет ряд ограничений, которые следует учитывать при планировании настройки Приватного канала. Дополнительные сведения об ограничениях см. в этой статье.
  • Проверьте, есть ли у вас разрешение на создание управляемой частной конечной точки.

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