Caminho legado da API de Coletor de Dados HTTP para Análise de Logs do Azure

Warning

Em vez de seguir este artigo, consulte Recolher logs e métricas com o Azure Log Analytics para novas configurações e migrações. Este artigo refere-se ao caminho legado da API HTTP Data Collector e é mantido apenas para referência.

Neste tutorial, você aprenderá a habilitar o conector Synapse Studio integrado ao Log Analytics. Em seguida, você pode coletar e enviar métricas e logs do aplicativo Apache Spark para seu espaço de trabalho do Log Analytics. Finalmente, você pode usar uma pasta de trabalho do Azure Monitor para visualizar as métricas e os logs.

Configurar informações do espaço de trabalho

Siga estas etapas para configurar as informações necessárias no Synapse Studio.

Etapa 1: Criar um espaço de trabalho do Log Analytics

Consulte um dos seguintes recursos para criar este espaço de trabalho:

Etapa 2: Reunir informações de configuração

Use qualquer uma das seguintes opções para preparar a configuração.

Opção 1: Configurar com ID e chave do espaço de trabalho do Log Analytics

Reúna os seguintes valores para a configuração de faísca:

  • <LOG_ANALYTICS_WORKSPACE_ID>: ID do espaço de trabalho do Log Analytics.
  • <LOG_ANALYTICS_WORKSPACE_KEY>: Chave do Log Analytics. Para encontrar isso, no portal do Azure, vá para o espaço de trabalho do Azure Log Analytics, depois para Agentes e, finalmente, Chave primária.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

Como alternativa, use as seguintes propriedades:

spark.synapse.diagnostic.emitters: LA
spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.diagnostic.emitter.LA.secret: <LOG_ANALYTICS_WORKSPACE_KEY>

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

Observação

Você precisa conceder permissão de leitura secreta aos usuários que enviam aplicativos Apache Spark. 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. Ao habilitar esse recurso em um pipeline Synapse, você precisa usar a Opção 3. Isso é necessário para obter o segredo do Cofre de Chaves do Azure com identidade gerenciada pelo espaço de trabalho.

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

  1. Crie e aceda ao seu cofre de chaves no portal do Azure.

  2. Conceda a permissão certa aos usuários ou identidades gerenciadas do espaço de trabalho.

  3. Na página de definições do cofre de chaves, selecione Segredos.

  4. Selecione Gerar/Importar.

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

    • Nome: introduza o nome para o segredo. Para o padrão, digite SparkLogAnalyticsSecret.
    • Valor: Insira o <LOG_ANALYTICS_WORKSPACE_KEY> para o segredo.
    • Deixe as outras opções com os valores predefinidos. Depois, selecione Criar.
  6. Reúna os seguintes valores para a configuração de faísca:

    • <LOG_ANALYTICS_WORKSPACE_ID>: O ID do espaço de trabalho do Log Analytics.
    • <AZURE_KEY_VAULT_NAME>: O nome do cofre de chaves que você configurou.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (opcional): O nome secreto no cofre de chaves para a chave do espaço de trabalho. A predefinição é SparkLogAnalyticsSecret.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Como alternativa, use as seguintes propriedades:

spark.synapse.diagnostic.emitters LA
spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.diagnostic.emitter.LA.secret.keyVault: <AZURE_KEY_VAULT_NAME>
spark.synapse.diagnostic.emitter.LA.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Observação

Você também pode armazenar o ID do espaço de trabalho no Cofre da Chave. Consulte as etapas anteriores e armazene a ID do espaço de trabalho com o nome SparkLogAnalyticsWorkspaceIdsecreto . Como alternativa, você pode usar a configuração spark.synapse.logAnalytics.keyVault.key.workspaceId para especificar o nome secreto do ID do espaço de trabalho no Cofre da Chave.

Opção 3. Configure com um serviço vinculado

Observação

Nessa opção, você precisa conceder permissão de segredo de leitura para a identidade gerenciada do espaço de trabalho. 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 um serviço ligado ao Key Vault no Synapse Studio para armazenar a chave da área de trabalho, siga estes passos:

  1. Siga todas as etapas na seção anterior, "Opção 2".

  2. Crie um serviço ligado ao Key Vault no Synapse Studio:

    a) Vá para Synapse Studio>Manage>Linked services e selecione New.

    b) Na caixa de pesquisa, procure Azure Key Vault.

    c. Insira um nome para o serviço vinculado.

    d. Escolha o cofre de chaves e selecione Criar.

  3. Adicione um spark.synapse.logAnalytics.keyVault.linkedServiceName item à configuração do Apache Spark.

spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

Como alternativa, use as seguintes propriedades:

spark.synapse.diagnostic.emitters LA
spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.diagnostic.emitter.LA.secret.keyVault: <AZURE_KEY_VAULT_NAME>
spark.synapse.diagnostic.emitter.LA.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.diagnostic.emitter.LA.secret.keyVault.linkedService: <AZURE_KEY_VAULT_LINKED_SERVICE>

Para obter uma lista de configurações do Apache Spark, consulte Configurações disponíveis do Apache Spark

Etapa 3: Criar uma configuração do Apache Spark

Você pode criar uma Configuração do Apache Spark para seu espaço de trabalho e, ao criar a definição de trabalho do Notebook ou do Apache Spark, pode selecionar a configuração do Apache Spark que deseja usar com o pool do Apache Spark. Quando você seleciona, os detalhes da configuração são exibidos.

  1. Selecione Gerenciar>configurações do Apache Spark.

  2. Selecione o botão Novo para criar uma nova configuração do Apache Spark.

  3. A nova página de configuração do Apache Spark será aberta depois de selecionar o botão Novo .

    Captura de tela que cria a configuração do Spark.

  4. Em Nome, você pode inserir seu nome preferido e válido.

  5. Para Descrição, você pode inserir alguma descrição nele.

  6. Para Anotações, você pode adicionar anotações clicando no botão Novo e também pode excluir anotações existentes selecionando e clicando no botão Excluir .

  7. Para Propriedades de configuração, adicione todas as propriedades da opção de configuração escolhida selecionando o botão Adicionar . Para Propriedade , adicione o nome da propriedade conforme listado e, para Valor , use o valor coletado durante a etapa 2. Se você não adicionar uma propriedade, o Azure Synapse usará o valor padrão quando aplicável.

    Captura de tela com um exemplo para atualizar as propriedades de configuração.

Envie um aplicativo Apache Spark e visualize os logs e métricas

Veja como:

  1. Envie um aplicativo Apache Spark para o pool Apache Spark configurado na etapa anterior. Você pode usar qualquer uma das seguintes maneiras de fazer isso:

    • Execute um bloco de anotações no Synapse Studio.
    • No Synapse Studio, envie um trabalho em lote do Apache Spark por meio de uma definição de trabalho do Apache Spark.
    • Execute um pipeline que contenha a atividade do Apache Spark.
  2. Vá para o espaço de trabalho especificado do Log Analytics e visualize as métricas e os logs do aplicativo quando o aplicativo Apache Spark começar a ser executado.

Escrever registos personalizados de aplicações

Você pode usar a biblioteca Apache Log4j para escrever logs personalizados.

Exemplo para Scala:

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

Exemplo de PySpark:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

Use a pasta de trabalho de exemplo para visualizar as métricas e os logs

  1. Baixe a pasta de trabalho.

  2. Abra e copie o conteúdo do arquivo da pasta de trabalho.

  3. No portal do Azure, selecione espaço de trabalho do Log Analytics>Livros.

  4. Abra a pasta de trabalho Empty. Use o modo Editor Avançado selecionando o <ícone /> .

  5. Cole sobre qualquer código JSON existente.

  6. Selecione Aplicar e, em seguida, selecione Edição concluída.

    Captura de tela que mostra uma nova pasta de trabalho.

    Captura de tela que mostra como importar uma pasta de trabalho.

Em seguida, envie seu aplicativo Apache Spark para o pool do Apache Spark configurado. Depois de a aplicação entrar em execução, escolha a aplicação em execução na lista pendente da pasta de trabalho.

Captura de ecrã que mostra um livro.

Você pode personalizar a pasta de trabalho. Por exemplo, você pode usar consultas Kusto e configurar alertas.

Captura de tela que mostra a personalização de uma pasta de trabalho com uma consulta e alertas.

Consultar dados com Kusto

Segue-se um exemplo de consulta a eventos do Apache Spark:

SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Aqui está um exemplo de consulta ao driver do aplicativo Apache Spark e aos logs dos executores:

SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100

E aqui está um exemplo de consulta às métricas do Apache Spark:

SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Criar e gerenciar alertas

Os usuários podem consultar para avaliar métricas e logs em uma frequência definida e disparar um alerta com base nos resultados. Para obter mais informações, consulte Criar, exibir e gerenciar alertas de log usando o Azure Monitor.

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

Depois que o espaço de trabalho Synapse é criado com a proteção contra exfiltração de dados habilitada.

Quando quiser ativar esta funcionalidade, tem de criar pedidos de ligação de ponto final privado gerido para âmbitos de Ligação Privada do Azure Monitor (AMPLS) nos inquilinos aprovados do Microsoft Entra da área de trabalho.

Pode seguir os passos abaixo para criar uma ligação de ponto final privado gerido aos âmbitos do Azure Monitor Private Link (AMPLS):

  1. Se não houver AMPLS existente, você poderá seguir a configuração de conexão de Link Privado do Azure Monitor para criar uma.
  2. Navegue até o AMPLS no portal do Azure, na página Recursos do Azure Monitor , selecione Adicionar para adicionar conexão ao seu espaço de trabalho do Azure Log Analytics.
  3. Navegue até Synapse Studio > Gerir > Pontos finais privados geridos, selecione o botão Novo, selecione Âmbitos de Ligação Privada do Azure Monitor e Continuar.

    Captura de ecrã da criação do ponto final privado gerido AMPLS 1.

  4. Escolha o Escopo de Link Privado do Azure Monitor que você criou e selecione o botão Criar .

    Captura de ecrã da criação do ponto final privado gerido AMPLS 2.

  5. Aguarde alguns minutos enquanto o ponto final privado é provisionado.
  6. Volte a aceder ao seu AMPLS no portal do Azure e, na página Ligações de ponto final privado, selecione a ligação aprovisionada e Aprovar.

Observação

  • O objeto AMPLS tem muitos limites que você deve considerar ao planejar sua configuração de Link Privado. Consulte os limites da AMPLS para uma revisão mais profunda desses limites.
  • Verifique se dispõe das permissões adequadas para criar um ponto final privado gerido.

Configurações disponíveis

Configuração Descrição
spark.synapse.diagnostic.emitters Obrigatório Os nomes de destino dos emissores diagnósticos, separados por vírgulas. Por exemplo, MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Obrigatório Tipo de destino incorporado. Para habilitar o destino do Azure Log Analytics, o AzureLogAnalytics precisa ser incluído neste campo.
spark.synapse.diagnostic.emitter.<destination>.categories Opcional. Categorias de log selecionadas, separadas por vírgulas. 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>.workspaceId Obrigatório Para habilitar o destino do Azure Log Analytics, workspaceId precisa ser incluído neste campo.
spark.synapse.diagnostic.emitter.<destination>.secret Opcional. O conteúdo secreto (chave do Log Analytics). Para encontrar isto, no portal do Azure, vá para Área de trabalho do Azure Log Analytics > Agentes > Chave primária.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Obrigatório se .secret não for especificado. O nome do Azure Key Vault onde o segredo (AccessKey ou SAS) está armazenado.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Obrigatório se .secret.keyVault for especificado. O nome do segredo do Azure Key Vault onde o segredo está armazenado.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService Opcional. O nome do serviço vinculado do Azure Key Vault. Quando ativado no pipeline do Synapse, isto é necessário para obter o segredo do Azure Key Vault. (Verifique se o MSI tem acesso de leitura ao Azure Key Vault).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Opcional. Os nomes dos registadores Log4j separados por vírgula permitem que especifique quais logs deseja coletar. Por exemplo, SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Opcional. Os nomes de logger do log4j separados por vírgula permitem que você especifique quais logs coletar. Por exemplo: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Opcional. Pode especificar, através dos sufixos de nome de métrica do Spark separados por vírgula, quais métricas deseja coletar. Por exemplo:jvm.heap.used