Monitorar as métricas de aplicativos Apache Spark com o Prometheus e o Grafana
Visão geral
Neste tutorial, você aprenderá a implantar a solução de métricas do aplicativo Apache Spark em um cluster do AKS (Serviço de Kubernetes do Azure) e aprenderá a integrar os painéis do Grafana.
Você pode usar essa solução para coletar e consultar os dados de métricas do Apache Spark quase em tempo real. Os painéis integrados do Grafana permitem diagnosticar e monitorar o aplicativo Apache Spark. O código-fonte e as configurações foram transformados em software livre no GitHub.
Pré-requisitos
Ou use o Azure Cloud Shell, que já inclui a CLI do Azure, o Helm client e o kubectl prontos para uso.
Fazer logon no Azure
az login
az account set --subscription "<subscription_id>"
Criar uma instância de AKS (Serviço de Kubernetes do Azure)
Use o comando da CLI do Azure para criar um cluster de Kubernetes na assinatura.
az aks create --name <kubernetes_name> --resource-group <kubernetes_resource_group> --location <location> --node-vm-size Standard_D2s_v3
az aks get-credentials --name <kubernetes_name> --resource-group <kubernetes_resource_group>
Observação: esta etapa poderá ser ignorada se você já tiver um cluster de AKS.
Criar uma entidade de serviço e conceder permissão para o workspace do Synapse
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
O resultado deve ter esta aparência:
{
"appId": "abcdef...",
"displayName": "<service_principal_name>",
"name": "http://<service_principal_name>",
"password": "abc....",
"tenant": "<tenant_id>"
}
Anote a appId, senha e tenantID.
Faça logon no workspace do Azure Synapse Analytics como administrador do Synapse
No Synapse Studio, no painel do lado esquerdo, selecione Gerenciar > Controle de acesso
Clique no botão Adicionar na parte superior esquerda para adicionar uma atribuição de função
Para escopo, escolha Workspace
Para função, escolha Operador de computação do Synapse
Para selecionar usuário, insira o <service_principal_name> e clique na entidade de serviço
Clique em Aplicar (aguarde 3 minutos para que a permissão entre em vigor.)
Observação
Verifique se sua entidade de serviço tem, pelo menos, a função "Leitor" no espaço de trabalho Synapse. Acesse a guia Controle de Acesso (IAM) do portal do Azure e verifique as configurações de permissão.
Instalar conector, servidor Prometheus, painel do Grafana
- Adicione o repositório synapse-charts ao cliente Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
- Instalar componentes por meio do cliente Helm:
helm install spo synapse-charts/synapse-prometheus-operator --create-namespace --namespace spo \
--set synapse.workspaces[0].workspace_name="<workspace_name>" \
--set synapse.workspaces[0].tenant_id="<tenant_id>" \
--set synapse.workspaces[0].service_principal_name="<service_principal_app_id>" \
--set synapse.workspaces[0].service_principal_password="<service_principal_password>" \
--set synapse.workspaces[0].subscription_id="<subscription_id>" \
--set synapse.workspaces[0].resource_group="<workspace_resource_group_name>"
- workspace_name: nome do workspace do Synapse.
- subscription_id: ID da assinatura do workspace do Synapse.
- workspace_resource_group_name: nome do grupo de recursos do workspace do Synapse.
- tenant_id: ID de locatário do workspace do Synapse.
- service_principal_app_id: a "appId" da entidade de serviço
- service_principal_password: a senha da entidade de serviço criada.
Fazer logon no Grafana
Obtenha a senha e o endereço padrão do Grafana. Você pode alterar a senha nas configurações do Grafana.
kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana
Obtenha o IP de serviço, copie e cole o IP externo no navegador e faça logon com o nome de usuário "admin" e a senha.
Use os painéis do Grafana
Encontre o painel do Synapse no canto superior esquerdo da página Grafana (Página Inicial -> Workspace do Synapse/Aplicativo Synapse), tente executar um código de exemplo no Synapse Studio e aguarde alguns segundos para a extração de métricas.
Além disso, você pode usar os painéis "Workspace do Azure Synapse/Workspace" e "Workspace do Azure Synapse/Pools do Apache Spark" para obter uma visão geral do workspace e dos Pools do Apache Spark.
Desinstalar
Remova os componentes usando o comando Helm da seguinte maneira.
helm delete <release_name> -n <namespace>
Exclua o cluster do AKS.
az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>
Introdução aos componentes
O Azure Synapse Analytics fornece um gráfico do Helm com base no operador do Prometheus e no conector do Synapse Prometheus. O gráfico do Helm inclui o servidor Prometheus, o servidor Grafana e os painéis do Grafana para métricas no nível de aplicativo do Apache Spark. Você pode usar o Prometheus, um sistema de monitoramento de software livre popular, para coletar essas métricas quase em tempo real e usar o Grafana para visualização.
Conector do Synapse Prometheus
O conector do Synapse Prometheus ajuda a conectar o pool do Apache Spark do Azure Synapse e o servidor Prometheus. Ele implementa:
- Autenticação: é a autenticação baseada no AAD e pode atualizar automaticamente o token do AAD da entidade de serviço para descoberta de aplicativos, ingestão de métricas e outras funções.
- Descoberta de aplicativos do Apache Spark: quando você envia aplicativos no workspace de destino, o conector do Synapse Prometheus pode descobrir esses aplicativos automaticamente.
- Metadados de aplicativo do Apache Spark: coleta as informações básicas do aplicativo e exporta os dados para o Prometheus.
O conector do Synapse Prometheus é lançado como imagem do Docker hospedada no Microsoft Container Registry. Ele é de código aberto e está localizado nas métricas do aplicativo Azure Synapse Apache Spark.
Servidor Prometheus
O Prometheus é um kit de ferramentas de monitoramento e alerta de software livre. O Prometheus se formou na CNCF (Cloud Native Computing Foundation) e se tornou o padrão de fato para monitoramento nativo da nuvem. O Prometheus pode ajudar a coletar, consultar e armazenar grandes volumes de dados de série temporal e pode ser facilmente integrado com o Grafana. Nesta solução, implantamos o componente Prometheus com base no gráfico do Helm.
Grafana e painéis
O Grafana é um software de análise e visualização de software livre. Permite consultar, Visualizar, alertar e explorar as métricas. O Azure Synapse Analytics fornece um conjunto de painéis padrão do Grafana para visualizar as métricas no nível do aplicativo Apache Spark.
O painel "Workspace do Synapse/Workspace" fornece uma exibição no nível do workspace de todos os pools do Apache Spark, contagens de aplicativos, núcleos de CPU, etc.
O painel "Workspace do Azure Synapse/Pools do Apache Spark" contém as métricas dos aplicativos Apache Spark em execução no Pool do Apache Spark selecionado durante o período.
O painel "Workspace do Azure Synapse/Aplicativo Apache Spark" contém o aplicativo Apache Spark selecionado.
Os códigos dos modelos de painéis acima foram disponibilizados nas métricas do aplicativo Azure Synapse Apache Spark.