Сбор метрик и журналов приложений 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
- Откройте страницу конфигураций Apache Spark (управление> конфигурациями Apache Spark)
- Нажмите кнопку импорта, чтобы отправить файл конфигурации Apache Spark в Synapse Studio.
- Перейдите к пулу Apache Spark в Synapse Studio (управление> пулами Apache Spark).
- Нажмите кнопку "..." справа от пула Apache Spark и выберите конфигурацию Apache Spark.
- Вы можете выбрать файл конфигурации, который вы только что загрузили в раскрывающемся меню.
- Нажмите кнопку "Применить" после выбора файла конфигурации.
Шаг 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-адресов.
Перейдите в раздел Synapse Studio > Управление > Управляемые частные конечные точки, нажмите кнопку Создать, выберите элемент Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения и продолжайте работу.
Примечание.
Мы можем поддерживать как Хранилище 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>
Выберите учетную запись службы хранилища Azure в поле Имя учетной записи службы хранилища и нажмите кнопку Создать.
Подождите несколько минут, пока частная конечная точка не будет подготовлена.
Перейдите к своей учетной записи хранения на портале Azure на странице Сеть>Подключения к частной конечной точке, выберите подготовленное подключение и щелкните команду Утвердить.