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:
- Crie um espaço de trabalho no portal do Azure.
- Crie um espaço de trabalho com a CLI do Azure.
- Crie e configure um espaço de trabalho no Azure Monitor usando o PowerShell.
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:
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.
Selecione Gerar/Importar.
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.
- Nome: introduza o nome para o segredo. Para o padrão, digite
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 SparkLogAnalyticsWorkspaceId
secreto . 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:
Siga todas as etapas na seção anterior, "Opção 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.
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.
Selecione Gerenciar>configurações do Apache Spark.
Selecione o botão Novo para criar uma nova configuração do Apache Spark.
A nova página de configuração do Apache Spark será aberta depois de selecionar o botão Novo .
Em Nome, você pode inserir seu nome preferido e válido.
Para Descrição, você pode inserir alguma descrição nele.
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 .
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.
Envie um aplicativo Apache Spark e visualize os logs e métricas
Saiba como:
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.
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
Abra e copie o conteúdo do arquivo da pasta de trabalho.
No portal do Azure, selecione Pastas de trabalho do espaço de trabalho>do Log Analytics.
Abra a pasta de trabalho vazia . Use o modo Editor Avançado selecionando o <ícone /> .
Cole sobre qualquer código JSON existente.
Selecione Aplicar e, em seguida, selecione Edição concluída.
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.
Você pode personalizar a pasta de trabalho. Por exemplo, você pode usar consultas Kusto e configurar 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):
- Se não houver AMPLS existente, você poderá seguir a configuração de conexão de Link Privado do Azure Monitor para criar uma.
- 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.
- Navegue até Synapse Studio > Manage > Managed private endpoints, selecione o botão Novo , selecione Escopos de Link Privado do Azure Monitor e continue.
- Escolha o Escopo de Link Privado do Azure Monitor que você criou e selecione o botão Criar .
- Aguarde alguns minutos para o provisionamento de ponto de extremidade privado.
- 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.
Conteúdos relacionados
- Execute um aplicativo Spark no bloco de anotações.
- Colete logs e métricas de aplicativos Apache Spark com a conta de Armazenamento do Azure.
- Colete logs e métricas de aplicativos Apache Spark com os Hubs de Eventos do Azure.