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


Получение журналов и метрик приложений 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

  1. Перейдите к пулу Apache Spark в Synapse Studio (Управление -> Пулы Apache Spark)
  2. Щелкните ... справа от пула Apache Spark и выберите элемент Apache Spark configuration (Конфигурация Apache Spark).
  3. Нажмите Загрузить и выберите файл конфигурации .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-адресов.