Share via


Colete seus logs e métricas de aplicativos Apache Spark usando os Hubs de Eventos do Azure

A extensão do emissor de diagnóstico Synapse Apache Spark é uma biblioteca que permite que o aplicativo Apache Spark emita logs, logs de eventos e métricas para um ou mais 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 Synapse Apache Spark para emitir logs, logs de eventos e métricas de aplicativos Apache Spark para seus Hubs de Eventos do Azure.

Nota

Esse recurso não está disponível no tempo de execução do Azure Synapse Runtime for Apache Spark 3.4 , mas terá suporte pós-GA.

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

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

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

Etapa 2: Criar um arquivo de configuração do Apache Spark

Crie um diagnostic-emitter-azure-event-hub-conf.txt e copie o seguinte conteúdo para o arquivo. Ou baixe um arquivo de modelo de exemplo para a configuração do pool do Apache Spark.

spark.synapse.diagnostic.emitters MyDestination1
spark.synapse.diagnostic.emitter.MyDestination1.type AzureEventHub
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.secret <connection-string>

Preencha os seguintes parâmetros no arquivo de configuração: <connection-string>. Para obter mais descrição dos parâmetros, consulte as configurações do Azure EventHub

Etapa 3: Carregue o arquivo de configuração do Apache Spark para o pool do Apache Spark

  1. Navegue até o pool do Apache Spark no Synapse Studio (Gerenciar -> pools do Apache Spark)
  2. Clique no botão "..." à direita do seu pool do Apache Spark e selecione a configuração do Apache Spark
  3. Clique em Carregar e escolha o arquivo de configuração ".txt" e clique em Aplicar.

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 do Azure Eventhub. 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>.secret.keyVault.linkedService Opcional. O nome do serviço vinculado do Cofre da Chave do Azure. Quando ativado no pipeline Synapse, isso é necessário para obter o segredo do AKV. (Por favor, certifique-se de que a MSI tem permissão de leitura no AKV).
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": "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"
        // ...
    }
}

Espaço de trabalho Sinapse com proteção contra exfiltração de dados ativada

A área de trabalho do Azure Synapse Analytics suporta a ativação da proteção contra a transferência de dados não autorizada na área de trabalho. Com a proteção contra exfiltração, os logs e métricas não podem ser enviados diretamente para os pontos de extremidade de destino. Você pode criar pontos de extremidade privados gerenciados correspondentes para diferentes pontos de extremidade de destino ou criar regras de firewall IP nesse cenário.