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
Criar um artefato de ambiente de malha na malha
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:
Crie e vá para o seu cofre de chaves no portal do Azure.
Na página de configurações do cofre de chaves, selecione Segredos e, em seguida , Gerar/Importar.
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.
Crie um artefato de ambiente de malha no Fabric.
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.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:
- Navegue até a definição de trabalho específica do bloco de anotações ou do Spark na Malha.
- Selecione o menu Ambiente na guia Página Inicial e selecione o ambiente com as propriedades do Spark de diagnóstico configuradas.
- A configuração é aplicada quando você inicia uma sessão do Spark.
Para definir o ambiente como o espaço de trabalho padrão:
- Navegue até Configurações do espaço de trabalho na malha.
- 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).
- 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.