Partilhar via


Monitorar aplicativos Apache Spark com o Azure Log Analytics

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 Chave primária dos agentes do espaço de trabalho>do Azure Log Analytics>.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

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

Nota

Você precisa conceder permissão de leitura secreta aos usuários que enviarão aplicativos Apache Spark. 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. 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 vá para o seu cofre de chaves no portal do Azure.

  2. Na página de configurações do cofre de chaves, selecione Segredos.

  3. Selecione Gerar/Importar.

  4. 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.
  5. 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 da 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>

Nota

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. Configurar com um serviço vinculado

Nota

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 Cofre da Chave com um controle de acesso baseado em função do Azure.

Para configurar um serviço vinculado do Cofre da Chave no Synapse Studio para armazenar a chave do espaço de trabalho, siga estas etapas:

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

  2. Crie um serviço vinculado do Cofre de Chaves 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.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

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 de faísca.

  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

Saiba 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 logs de aplicativos personalizados

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 para 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 Pastas de trabalho do espaço de trabalho>do Log Analytics.

  4. Abra a pasta de trabalho vazia . 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 que o aplicativo for para um estado de execução, escolha o aplicativo em execução na lista suspensa 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 habilitar esse recurso, você precisa criar solicitações de conexão de ponto de extremidade privado gerenciado para AMPLS (escopos de link privado) do Azure Monitor nos locatários aprovados do Microsoft Entra do espaço de trabalho.

Você pode seguir as etapas abaixo para criar uma conexão de ponto de extremidade privado gerenciado com os escopos de link privado do Azure Monitor (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 > Manage > Managed private endpoints, selecione o botão Novo , selecione Escopos de Link Privado do Azure Monitor e continue.

    Captura de ecrã da criação do ponto de extremidade 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 tela de criar AMPLS managed private endpoint 2.

  5. Aguarde alguns minutos para o provisionamento de ponto de extremidade privado.
  6. Navegue até o AMPLS no portal do Azure novamente, na página Conexões de Ponto de Extremidade Privado, selecione a conexão provisionada e Aprove.

Nota

  • O objeto AMPLS tem vários 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 você tem permissão certa para criar um ponto de extremidade privado gerenciado.