Partilhar via


Colete seus logs e métricas de aplicativos Apache Spark usando os Hubs de Eventos do Azure (visualização)

A extensão do emissor de diagnóstico do Fabric Apache Spark é uma biblioteca que permite que os aplicativos Apache Spark emitam logs, logs de eventos e métricas para vários destinos, incluindo o Azure Log Analytics, o Armazenamento do Azure e os Hubs de Eventos do Azure.

Neste tutorial, você aprenderá a usar a extensão de emissor de diagnóstico do Fabric Apache Spark para enviar logs de aplicativos, logs de eventos e métricas do Apache Spark para seus Hubs de Eventos do Azure.

Coletar logs e métricas para Hubs de Eventos do Azure

Etapa 1: Criar uma instância dos Hubs de Eventos do Azure

Para coletar logs de diagnóstico e métricas, você pode usar uma instância existente dos Hubs de Eventos do Azure. Se você não tiver um, poderá criar um hub de eventos.

Etapa 2: Criar um artefato de ambiente de malha com a configuração do Apache Spark

Opção 1: Configurar com a Cadeia de Conexão dos Hubs de Eventos do Azure

  1. Criar um artefato de ambiente de malha na malha

  2. Adicione as seguintes propriedades do Spark com os valores apropriados ao artefato de ambiente ou selecione Adicionar de .yml na faixa de opções para baixar o arquivo yaml de exemplo que já contém as seguintes propriedades.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Preencha os <connection-string> parâmetros no arquivo de configuração. Para obter mais informações, consulte Configurações dos Hubs de Eventos do Azure.

Opção 2: Configurar com o Azure Key Vault

Nota

Problema conhecido: Não é possível iniciar uma sessão usando a Opção 2 provisoriamente. Atualmente, o armazenamento de segredos no Cofre de Chaves impede que as sessões do Spark sejam iniciadas. Priorize configurá-lo usando o método descrito na Opção 1.

Certifique-se de que os usuários que enviam aplicativos Apache Spark recebam permissões de segredo de leitura. Para obter mais informações, consulte Fornecer acesso a chaves, certificados e segredos do Cofre da Chave com um controle de acesso baseado em função do Azure.

Para configurar o Cofre da Chave do Azure para armazenar a chave do espaço de trabalho:

  1. Crie e vá para o seu cofre de chaves no portal do Azure.

  2. Na página de configurações do cofre de chaves, selecione Segredos e, em seguida , Gerar/Importar.

  3. No ecrã Criar um segredo, selecione os seguintes valores:

    • Nome: introduza o nome para o segredo.
    • Valor: Insira o <connection-string> para o segredo.
    • Deixe as outras opções com os valores predefinidos. Depois, selecione Criar.
  4. Crie um artefato de ambiente de malha no Fabric.

  5. Adicione as seguintes propriedades do Spark. Ou selecione Adicionar de .yml na faixa de opções para baixar o arquivo yaml de exemplo, que inclui as seguintes propriedades do Spark.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Preencha os seguintes parâmetros no arquivo de configuração: <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Para obter mais detalhes sobre esses parâmetros, consulte Configurações dos Hubs de Eventos do Azure.

  6. Salve e publique as alterações.

Etapa 3: Anexar o artefato de ambiente a blocos de anotações ou definições de trabalho do Spark ou defini-lo como o padrão do espaço de trabalho

Para anexar o ambiente às definições de trabalho do Notebooks ou do Spark:

  1. Navegue até a definição de trabalho específica do bloco de anotações ou do Spark na Malha.
  2. Selecione o menu Ambiente na guia Página Inicial e selecione o ambiente com as propriedades do Spark de diagnóstico configuradas.
  3. A configuração é aplicada quando você inicia uma sessão do Spark.

Para definir o ambiente como o espaço de trabalho padrão:

  1. Navegue até Configurações do espaço de trabalho na malha.
  2. Encontre as configurações do Spark nas configurações do espaço de trabalho (configuração do espaço de trabalho -> Engenharia de dados/Ciência -> configurações do Spark).
  3. Selecione a guia Ambiente e escolha o ambiente com propriedades de faísca de diagnóstico configuradas e clique em Salvar.

Nota

Somente os administradores do espaço de trabalho podem gerenciar as configurações do espaço de trabalho. As alterações feitas aqui serão aplicadas a todos os blocos de anotações e definições de trabalho do Spark anexados às configurações do espaço de trabalho. Para obter mais informações, consulte Configurações do espaço de trabalho de malha.

Configurações disponíveis

Configuração Description
spark.synapse.diagnostic.emitters Obrigatório. Os nomes de destino separados por vírgulas dos emissores de diagnóstico.
spark.synapse.diagnostic.emitter.<destination>.type Obrigatório. Tipo de destino incorporado. Para habilitar o destino dos Hubs de Eventos do Azure, o valor deve ser AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories Opcional. As categorias de log selecionadas separadas por vírgula. Os valores disponíveis incluem DriverLog, ExecutorLog, EventLog, Metrics. Se não estiver definido, o valor padrão será todas as categorias.
spark.synapse.diagnostic.emitter.<destination>.secret Opcional. A cadeia de conexão de instância dos Hubs de Eventos do Azure. Este campo deve corresponder a este padrão Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Obrigatório se .secret não for especificado. O nome do cofre da Chave do Azure onde o segredo (cadeia de conexão) está armazenado.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Obrigatório se .secret.keyVault for especificado. O nome secreto do cofre da Chave do Azure onde o segredo (cadeia de conexão) está armazenado.
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Opcional. Os nomes de eventos de faísca separados por vírgula, você pode especificar quais eventos coletar. Por exemplo: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Opcional. Os nomes de logger Log4j separados por vírgula, você pode especificar quais logs coletar. Por exemplo: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Opcional. Os sufixos de nome de métrica de faísca separados por vírgula, você pode especificar quais métricas coletar. Por exemplo: jvm.heap.used

Nota

A cadeia de conexão da instância do Azure Eventhub sempre deve conter o EntityPath, que é o nome da instância dos Hubs de Eventos do Azure.

Exemplo de dados de log

Aqui está um registro de log de exemplo no formato JSON:

{
  "timestamp": "2024-09-06T03:09:37.235Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "fabricTenantId": "<my-fabric-tenant-id>",
  "capacityId": "<my-fabric-capacity-id>",
  "artifactType": "SynapseNotebook|SparkJobDefinition",
  "artifactId": "<my-fabric-artifact-id>",
  "fabricWorkspaceId": "<my-fabric-workspace-id>",
  "fabricEnvId": "<my-fabric-environment-id>",
  "executorMin": "<executor-min>",
  "executorMax": "<executor-max>",
  "isHighConcurrencyEnabled": "true|false",
  "properties": {
    // The message properties of logs, events and metrics.
    "timestamp": "2024-09-06T03:09:37.235Z",
    "message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
    "logger_name": "org.apache.spark.storage.BlockManager",
    "level": "INFO",
    "thread_name": "dispatcher-Executor"
    //...
  }
}

Espaços de trabalho de malha com rede virtual gerenciada

Crie um ponto de extremidade privado gerenciado para os Hubs de Eventos do Azure de destino. Para obter instruções detalhadas, consulte Criar e usar pontos de extremidade privados gerenciados no Microsoft Fabric - Microsoft Fabric.

Depois que o ponto de extremidade privado gerenciado for aprovado, os usuários poderão começar a emitir logs e métricas para os Hubs de Eventos do Azure de destino.

Próximos passos