Получение журналов и метрик приложений Apache Spark с помощью Центров событий Azure
Расширение отправителя данных диагностики Synapse Apache Spark — это библиотека, которая позволяет приложению Apache Spark передавать журналы, журналы событий и метрики в одно или несколько назначений, включая Azure Log Analytics, службу хранилища Azure и Центры событий Azure.
В этом учебнике описывается, как использовать расширение системы диагностики Synapse Apache Spark для выведения журналов приложений, журналов событий и метрик Apache Spark в Центры событий Azure.
Передача журналов и метрик в Центры событий Azure
Шаг 1. Создание экземпляра Центры событий Azure
Для сбора журналов диагностики и метрик в Центры событий Azure можно использовать существующий экземпляр Центров событий Azure. Или если ее нет, можно создать концентратор событий.
Шаг 2. Создание файла конфигурации Apache Spark
Создайте diagnostic-emitter-azure-event-hub-conf.txt
и скопируйте указанное ниже содержимое в файл. Или скачайте пример файла шаблона для конфигурации пула Apache Spark.
spark.synapse.diagnostic.emitters MyDestination1
spark.synapse.diagnostic.emitter.MyDestination1.type AzureEventHub
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.secret <connection-string>
В файле конфигурации задайте следующие параметры: <connection-string>
.
Дополнительные сведения о параметрах см. в Центры событий Azure конфигурациях.
Шаг 3. Загрузка файла конфигурации Apache Spark в пул Apache Spark
- Перейдите к пулу Apache Spark в Synapse Studio (Управление -> Пулы Apache Spark)
- Щелкните ... справа от пула Apache Spark и выберите элемент Apache Spark configuration (Конфигурация Apache Spark).
- Нажмите Загрузить и выберите файл конфигурации .txt, затем нажмите Применить.
Доступные конфигурации
Настройка | Description |
---|---|
spark.synapse.diagnostic.emitters |
Обязательное. Имена назначений отправителей диагностических данных, разделенные запятой. |
spark.synapse.diagnostic.emitter.<destination>.type |
Обязательный. Встроенный тип назначения. Чтобы включить назначение Центров событий Azure, значение должно быть AzureEventHub . |
spark.synapse.diagnostic.emitter.<destination>.categories |
Необязательно. Выбранные категории журнала, разделенные запятой. Доступные значения: DriverLog , ExecutorLog , EventLog , Metrics . Если значение не указано, по умолчанию задаются все категории. |
spark.synapse.diagnostic.emitter.<destination>.secret |
Необязательно. Экземпляр Центры событий Azure строка подключения. Это поле должно соответствовать этому шаблону Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName> |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Обязательный, если .secret он не указан. Имя хранилища ключей Azure, в котором сохранен секрет (строка подключения). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Обязателен, если указан ключ .secret.keyVault . Имя секрета хранилища ключей Azure, где сохранен секрет (строка подключения). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService |
Необязательно. Имя связанной службы Azure Key Vault. Если эта конфигурация включена в конвейере Synapse, имя нужно для получения секрета из Azure Key Vault. (Убедитесь, что у MSI есть разрешение на чтение в Azure Key Vault.) |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Необязательно. Имена событий Apache Spark, разделенные запятыми; можно указать, какие события нужно собирать. Например: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Необязательно. Имена средств ведения журналов log4j, разделенные запятыми; можно указать, какие журналы нужно собирать. Например: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Необязательно. Суффиксы имен метрик Apache Spark, разделенные запятыми; можно указать, какие метрики нужно собирать. Пример: jvm.heap.used |
Примечание.
Строка подключения экземпляра Azure Eventhub всегда должна содержать EntityPath
, которое является именем экземпляра Центров событий Azure.
Пример журнала данных
Ниже приведен пример записи журнала в формате JSON:
{
"timestamp": "2021-01-02T12:34:56.789Z",
"category": "Log|EventLog|Metrics",
"workspaceName": "<my-workspace-name>",
"sparkPool": "<spark-pool-name>",
"livyId": "<livy-session-id>",
"applicationId": "<application-id>",
"applicationName": "<application-name>",
"executorId": "<driver-or-executor-id>",
"properties": {
// The message properties of logs, events and metrics.
"timestamp": "2021-01-02T12:34:56.789Z",
"message": "Registering signal handler for TERM",
"logger_name": "org.apache.spark.util.SignalUtils",
"level": "INFO",
"thread_name": "main"
// ...
}
}
Рабочая область Synapse с включенной защитой от кражи данных
В рабочих областях Azure Synapse Analytics можно включить защиту от кражи данных. Если применяется защита от кражи данных, журналы и метрики нельзя отправлять непосредственно в конечные точки назначения. В этом сценарии можно создать соответствующие управляемые закрытые конечные точки для разных конечных точек назначения или создать правило брандмауэра для IP-адресов.