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


Сбор метрик и журналов приложений Apache Spark с помощью учетной записи службы хранилища Azure

Расширение отправителя данных диагностики Synapse Apache Spark — это библиотека, которая позволяет приложению Apache Spark передавать журналы, журналы событий и метрики в одно или несколько назначений, включая Azure Log Analytics, службу хранилища Azure и Центры событий Azure.

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

Сбор журналов и метрик в учетную запись хранения

Шаг 1. Создание учетной записи хранения

Для сбора журналов диагностики и метрик в учетную запись хранения можно использовать существующую учетную запись службы хранилища Azure. Если же у вас ее нет, вы можете создать учетную запись Хранилища BLOB-объектов Azure или учетную запись хранения для использования с Azure Data Lake Storage 2-го поколения.

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

Создайте diagnostic-emitter-azure-storage-conf.txt и скопируйте указанное ниже содержимое в файл. Или скачайте пример файла шаблона для конфигурации пула Apache Spark.

spark.synapse.diagnostic.emitters MyDestination1
spark.synapse.diagnostic.emitter.MyDestination1.type AzureStorage
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.uri https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>
spark.synapse.diagnostic.emitter.MyDestination1.auth AccessKey
spark.synapse.diagnostic.emitter.MyDestination1.secret <storage-access-key>

В файле конфигурации задайте следующие параметры: <my-blob-storage>, <container-name>, <folder-name> и <storage-access-key>. Дополнительные сведения о параметрах см. в разделе Конфигурации службы хранилища Azure.

Шаг 3. Отправка файла конфигурации Apache Spark в Synapse Studio и его использование в пуле Spark

  1. Откройте страницу конфигураций Apache Spark (управление> конфигурациями Apache Spark)
  2. Нажмите кнопку импорта, чтобы отправить файл конфигурации Apache Spark в Synapse Studio.
  3. Перейдите к пулу Apache Spark в Synapse Studio (управление> пулами Apache Spark).
  4. Нажмите кнопку "..." справа от пула Apache Spark и выберите конфигурацию Apache Spark.
  5. Вы можете выбрать файл конфигурации, который вы только что загрузили в раскрывающемся меню.
  6. Нажмите кнопку "Применить" после выбора файла конфигурации.

Шаг 4. Просмотр файлов журналов в учетной записи хранения Azure

После отправки задания в настроенный пул Apache Spark вы сможете просматривать журналы и файлы метрик в целевой учетной записи хранения. Журналы будут помещены в соответствующие расположения с учетом разных приложений по <workspaceName>.<sparkPoolName>.<livySessionId>. Все файлы журналов будут иметь формат строк JSON с символами новой строки (ndjson), который удобен для обработки данных.

Доступные конфигурации

Настройка Description
spark.synapse.diagnostic.emitters Обязательное. Имена назначений отправителей диагностических данных, разделенные запятой. Например: MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Обязательный. Встроенный тип назначения. Чтобы включить назначение хранилища Azure, необходимо включить AzureStorage в это поле.
spark.synapse.diagnostic.emitter.<destination>.categories Необязательно. Выбранные категории журнала, разделенные запятой. Доступные значения: DriverLog, ExecutorLog, EventLog, Metrics. Если значение не указано, по умолчанию задаются все категории.
spark.synapse.diagnostic.emitter.<destination>.auth Обязательный. AccessKey для использования авторизации на основе ключа доступа учетной записи хранения. SAS для авторизации на основе подписанных URL-адресов.
spark.synapse.diagnostic.emitter.<destination>.uri Обязательный. URI папки контейнера BLOB-объектов назначения. Ожидается соответствие шаблону https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Необязательно. Секретное содержимое (AccessKey или SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Обязательный, если .secret он не указан. Имя хранилища ключей Azure, где хранится секрет (AccessKey или SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Обязателен, если указан ключ .secret.keyVault. Имя секрета хранилища ключей Azure, где хранится секрет (AccessKey или SAS).
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

Пример журнала данных

Ниже приведен пример записи журнала в формате 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-адресов.

  1. Перейдите в раздел Synapse Studio > Управление > Управляемые частные конечные точки, нажмите кнопку Создать, выберите элемент Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения и продолжайте работу.

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

    Примечание.

    Мы можем поддерживать как Хранилище BLOB-объектов Azure, так и Azure Data Lake Storage 2-го поколения. Но нам не удалось проанализировать формат abfss:// . Azure Data Lake Storage 2-го поколения конечные точки должны быть отформатированы как URL-адрес большого двоичного объекта:

    https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> 
    
  2. Выберите учетную запись службы хранилища Azure в поле Имя учетной записи службы хранилища и нажмите кнопку Создать.

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

  3. Подождите несколько минут, пока частная конечная точка не будет подготовлена.

  4. Перейдите к своей учетной записи хранения на портале Azure на странице Сеть>Подключения к частной конечной точке, выберите подготовленное подключение и щелкните команду Утвердить.