Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 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:
Crie e aceda ao seu cofre de chaves no portal do Azure.
Conceda a permissão certa aos usuários ou identidades gerenciadas do espaço de trabalho.
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 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 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.linkedServiceNameitem à 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.
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
Veja 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 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
Abra e copie o conteúdo do arquivo da pasta de trabalho.
No portal do Azure, selecionePastas detrabalho 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 enquanto o ponto final privado é provisionado.
- 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.
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 você tem permissão certa para criar um ponto de extremidade privado gerenciado.
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 isso, no portal do Azure, vá para Chave primária dos agentes do espaço de trabalho > do Azure Log Analytics > . |
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 secreto do cofre da Chave do Azure 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 habilitado no pipeline do Synapse, isso é necessário para obter o segredo do cofre da Chave do Azure. (Verifique se o MSI tem acesso de leitura ao cofre da Chave do Azure). |
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 |