Partilhar via


Monitore as métricas do Apache Spark Applications com Prometheus e Grafana

Descrição geral

Neste tutorial, você aprenderá como implantar a solução de métricas de aplicativo Apache Spark em um cluster do Serviço Kubernetes do Azure (AKS) 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 seu aplicativo Apache Spark. O código-fonte e as configurações foram de código aberto no GitHub.

Pré-requisitos

  1. CLI do Azure
  2. Leme cliente 3.30+
  3. Kubectl
  4. Azure Kubernetes Service (AKS)

Ou use o Azure Cloud Shell, que já inclui a CLI do Azure, o cliente Helm e o kubectl prontos para uso.

Iniciar sessão no Azure

az login
az account set --subscription "<subscription_id>"

Criar uma instância de serviço do Kubernetes do Azure (AKS)

Use o comando CLI do Azure para criar um cluster Kubernetes em sua 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>

Nota: Esta etapa pode ser ignorada se você já tiver um cluster AKS.

Criar uma entidade de serviço e conceder permissão ao espaço de trabalho Synapse

az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>

O resultado deve ser parecido com:

{
  "appId": "abcdef...",
  "displayName": "<service_principal_name>",
  "name": "http://<service_principal_name>",
  "password": "abc....",
  "tenant": "<tenant_id>"
}

Anote o appId, a senha e o tenantID.

screenshot grant permission srbac

  1. Inicie sessão na sua área de trabalho do Azure Synapse Analytics como Synapse Administrator

  2. No Synapse Studio, no painel esquerdo, selecione Gerenciar > controle de acesso

  3. Clique no botão Adicionar no canto superior esquerdo para adicionar uma atribuição de função

  4. Em Escopo, escolha Espaço de trabalho

  5. Em Role, escolha Synapse Compute Operator

  6. Em Selecionar usuário, insira o <service_principal_name> e clique na entidade de serviço

  7. Clique em Aplicar (Aguarde 3 minutos para que a permissão entre em vigor.)

Nota

Certifique-se de que a entidade de serviço é, pelo menos, a função "Leitor" na área de trabalho do Sinapse. Vá para a guia Controle de Acesso (IAM) do portal do Azure e verifique as configurações de permissão.

Instalar conector, servidor Prometheus, painel Grafana

  1. Adicione o repositório de gráficos de sinapse ao cliente Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. Instale componentes através 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 espaço de trabalho Sinapse.
  • subscription_id: ID de assinatura do espaço de trabalho Sinapse.
  • workspace_resource_group_name: Nome do grupo de recursos do espaço de trabalho Sinapse.
  • tenant_id: ID do locatário do espaço de trabalho Sinapse.
  • service_principal_app_id: A entidade de serviço "appId"
  • service_principal_password: A senha da entidade de serviço que você criou.

Iniciar sessão em Grafana

Obtenha a senha padrão e o endereç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

Obter ip de serviço, copiar & colar o ip externo para o navegador, e login com o nome de usuário "admin" e a senha.

Usar painéis do Grafana

Encontre o Synapse Dashboard no canto superior esquerdo da página do Grafana (Home -> Synapse Workspace / Synapse Application), tente executar um código de exemplo no Synapse Studio e aguarde alguns segundos para que as métricas sejam puxadas.

Além disso, você pode usar os painéis "Synapse Workspace / Workspace" e "Synapse Workspace / Apache Spark pools" para obter uma visão geral do seu espaço de trabalho e dos pools do Apache Spark.

Desinstale o .

Remova os componentes pelo comando Helm da seguinte maneira.

helm delete <release_name> -n <namespace>

Exclua o cluster 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 Helm baseado no Prometheus Operator e no Synapse Prometheus Connector. O gráfico Helm inclui o servidor Prometheus, o servidor Grafana e os painéis Grafana para métricas no nível do aplicativo Apache Spark. Você pode usar o Prometheus, um popular sistema de monitoramento de código aberto, para coletar essas métricas quase em tempo real e usar o Grafana para visualização.

Sinapse Prometheus Conector

O Synapse Prometheus Connector ajuda a conectar o pool do Azure Synapse Apache Spark e seu servidor Prometheus. Implementa:

  1. Autenticação: é uma autenticação baseada no AAD e pode atualizar automaticamente o token AAD da entidade de serviço para descoberta de aplicativos, ingestão de métricas e outras funções.
  2. Descoberta de aplicativos Apache Spark: Quando você envia aplicativos no espaço de trabalho de destino, o Synapse Prometheus Connector pode descobrir automaticamente esses aplicativos.
  3. Metadados do aplicativo Apache Spark: Ele coleta informações básicas do aplicativo e exporta os dados para o Prometheus.

Synapse Prometheus Connector é lançado como uma imagem docker hospedado no Microsoft Container Registry. Ele é de código aberto e está localizado nas métricas do aplicativo Apache Spark do Azure Synapse.

Servidor do Prometheus

Prometheus é um kit de ferramentas de monitoramento e alerta de código aberto. Prometheus formou-se na Cloud Native Computing Foundation (CNCF) e tornou-se o padrão de facto para monitorização nativa da nuvem. O Prometheus pode nos ajudar a coletar, consultar e armazenar grandes quantidades de dados de séries cronológicas, e pode ser facilmente integrado ao Grafana. Nesta solução, implantamos o componente Prometheus com base no gráfico de leme.

Grafana e dashboards

Grafana é um software de visualização e análise de código aberto. Ele permite que você consulte, visualize, alerte e explore suas métricas. O Azure Synapse Analytics fornece um conjunto de painéis Grafana padrão para visualizar métricas no nível do aplicativo Apache Spark.

O painel "Synapse Workspace / Workspace" fornece uma visualização no nível do espaço de trabalho de todos os pools do Apache Spark, contagens de aplicativos, núcleos de cpu, etc.

screenshot dashboard workspace

O painel "Synapse Workspace / Apache Spark pools" contém as métricas dos aplicativos Apache Spark em execução no pool Apache Spark selecionado durante o período de tempo.

screenshot dashboard sparkpool

O painel "Synapse Workspace / Apache Spark Application" contém o aplicativo Apache Spark selecionado.

screenshot dashboard application

Os modelos de painel acima foram de código aberto nas métricas do aplicativo Apache Spark do Azure Synapse.