Partilhar via


Recolher logs e métricas de aplicações Apache Spark usando Hubs de Eventos do Azure (em pré-visualização)

A extensão do emissor de diagnósticos do Fabric Apache Spark é uma biblioteca que permite que as aplicações Apache Spark emitam registos, registos de eventos e métricas para vários destinos, incluindo o Azure Log Analytics, o Azure Storage e o Azure Event Hubs. 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.

Recolher 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 Fabric no Fabric

  2. Adicione as seguintes propriedades do Spark com os valores apropriados ao artefacto do ambiente, ou selecione Adicionar de .yml na faixa de opções para descarregar o ficheiro 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

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 Key Vault com um controle de acesso baseado em funções 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 artefacto de ambiente no Fabric.

  5. Adicione as seguintes propriedades do Spark. Ou selecione Adicionar de .yml na barra de ferramentas para baixar o exemplo de arquivo yaml, 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_URI>
    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_URI>, <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 artefacto de ambiente aos notebooks ou às definições de tarefas do Spark, ou defini-lo como o padrão do espaço de trabalho

Nota

  • Somente os administradores de espaço de trabalho podem designar um ambiente como padrão para um espaço de trabalho.
  • Uma vez definido, ele se torna o ambiente padrão para todos os blocos de anotações e definições de trabalho do Spark no espaço de trabalho. Para obter mais informações, consulte Configurações do espaço de trabalho de malha.

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

  1. Navegue até ao notebook específico ou à definição de tarefa do Spark na plataforma Fabric.
  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 no Fabric.
  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 selecione Salvar.

Configurações disponíveis

Configuração Descrição
spark.synapse.diagnostic.emitters Obrigatório. Os nomes de destino separados por vírgulas dos elementos 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. Azure Key Vault uri 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 dos eventos do Spark separados por vírgula permitem 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 do Spark, separados por vírgula, permitem especificar quais métricas recolher. Por exemplo: jvm.heap.used
spark.fabric.pools.skipStarterPools Obrigatório. Esta propriedade Spark é usada para forçar uma sessão Spark sob demanda. Você deve definir o valor como true ao usar o pool padrão para acionar as bibliotecas para emitir logs e métricas.

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": "2025-02-28T09:13:57.978Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "userId": "<the-submitter-user-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": "2025-02-28T09:13:57.941Z",
    "message": "ApplicationAttemptId: appattempt_1740734011890_0001_000001",
    "logger_name": "org.apache.spark.deploy.yarn.ApplicationMaster",
    "level": "INFO",
    "thread_name": "main"
    // ...
  }
}

Depois que o diagnóstico for emitido para o Hub de Eventos do Azure, você poderá usar esse Hub de Eventos como uma fonte em um Fluxo de Eventos de Malha para processar ou rotear os dados.

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