Мониторинг приложений Apache Spark с помощью Azure Log Analytics
В этом учебнике описано, как включить встроенный в Log Analytics соединитель Synapse Studio. Затем вы можете собирать и передавать метрики приложений и журналы Apache Spark в рабочую область Log Analytics. Наконец, вы сможете визуализировать эти метрики и журналы с помощью книги Azure Monitor.
Настройка сведений о рабочей области
Выполните приведенные ниже действия, чтобы настроить необходимые сведения в Synapse Studio.
Шаг 1. Создание рабочей области Log Analytics
Чтобы создать эту рабочую область, ознакомьтесь с одним из следующих ресурсов:
- Создание рабочей области на портале Azure
- Создание рабочей области Log Analytics с помощью Azure CLI
- Создание и настройка рабочей области в Azure Monitor с помощью PowerShell
Шаг 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, выполните следующие действия:
На портале Azure создайте хранилище ключей и перейдите к нему.
На странице параметров хранилища ключей выберите Секреты.
Выберите Создать/импортировать.
На экране Создание секрета выберите следующие значения:
- Имя — укажите имя секрета. Для значения по умолчанию введите
SparkLogAnalyticsSecret
. - Значение — введите
<LOG_ANALYTICS_WORKSPACE_KEY>
для секрета. - Оставьте другие значения по умолчанию. Затем выберите Создать.
- Имя — укажите имя секрета. Для значения по умолчанию введите
Соберите следующие значения для конфигурации 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 для хранения ключа рабочей области, выполните следующие действия:
Выполните все действия, описанные в разделе "Вариант 2".
Создайте в Synapse Studio связанную с Key Vault службу, сделав следующее:
a. Выберите Synapse Studio>Управление>Связанные службы, а затем выберите Создать.
b. В поле поиска введите Azure Key Vault.
c. Введите имя для связанной службы.
d. Выберите хранилище ключей и нажмите Создать.
Добавьте элемент
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. При выборе этого параметра отображаются сведения о конфигурации.
Выберите Управление>Конфигурации Apache Spark.
Нажмите кнопку "Создать" , чтобы создать новую конфигурацию Apache Spark.
После нажатия кнопки "Создать" откроется новая страница конфигурации Apache Spark.
В поле Имя можно ввести предпочитаемое и допустимое имя.
В поле Описание можно ввести описание.
Вы можете добавить заметки, нажав кнопку Создать, а также удалить существующие заметки, нажав кнопку Удалить.
Для свойств конфигурации добавьте все свойства из выбранного параметра конфигурации, нажав кнопку "Добавить ". Для свойства добавьте имя свойства, указанное в списке, и для значения используется значение, которое вы собрали во время шага 2. Если вы не добавите свойство, Azure Synapse будет использовать значение по умолчанию при необходимости.
Отправка приложения Apache Spark и просмотр журналов и метрик
Это делается следующим образом:
Отправьте приложение Apache Spark в пул Apache Spark, настроенный на предыдущем шаге. Можно использовать любой из следующих способов:
- Запустите записную книжку в Synapse Studio.
- В Synapse Studio отправьте пакетное задание Apache Spark с помощью определения задания Apache Spark.
- Запустите конвейер, который содержит действие Apache Spark.
Когда приложение 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")
Использование примера книги для визуализации метрик и журналов
Откройте и скопируйте содержимое файла книги.
На портале Azure выберите Рабочие области Log Analytics>Книги.
Откройте книгу Empty (Пустая). Перейдите в режим Расширенный редактор, выбрав значок </>.
Вставьте скопированный текст, заменив им любой существующий код JSON.
Нажмите кнопку Применить, а затем — Редактирование завершено.
Затем отправьте приложение 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), сделайте следующее:
- Если нет существующих AMPLS, вы можете следовать настройке подключения Azure Monitor Приватный канал, чтобы создать его.
- Перейдите к AMPLS в портал Azure на странице ресурсов Azure Monitor, выберите "Добавить", чтобы добавить подключение к рабочей области Azure Log Analytics.
- Перейдите к управляемым частным конечным точкам Synapse Studio > >, нажмите кнопку "Создать", выберите Azure Monitor Приватный канал области и продолжить.
- Выберите созданную область azure Monitor Приватный канал и нажмите кнопку "Создать".
- Подождите несколько минут, пока частная конечная точка не будет подготовлена.
- Снова перейдите к AMPLS на портале Azure на странице Подключения к частной конечной точке, выберите подготовленное подключение и нажмите Утвердить.
Примечание.
- Объект AMPLS имеет ряд ограничений, которые следует учитывать при планировании настройки Приватного канала. Дополнительные сведения см. в статье Подключение сетей к Azure Monitor с помощью Приватного канала Azure.
- Проверьте, есть ли у вас разрешение на создание управляемой частной конечной точки.