Partilhar via


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

Visã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. Azure CLI
  2. Helm client 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.

Create a service principal and grant permission to Synapse workspace

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 Administrador Synapse

  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. For Select user, input your <service_principal_name> and click your service principal

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

Observação

Please make sure your service principal is at least "Reader" role in your Synapse workspace. Vá para a guia Controle de Acesso (IAM) do portal do Azure e verifique as configurações de permissão.

Instalar o conector, o servidor Prometheus e o 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 workspace do Synapse.
  • 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: The service principal "appId"
  • service_principal_password: The service principal password you created.

Log in to 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

Obtenha o IP de serviço, copie e cole o IP externo no navegador, e inicie sessão com o nome de utilizador "admin" e a respetiva palavra-passe.

Use Grafana Dashboards

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

Remova os componentes pelo comando Helm da seguinte maneira.

helm delete <release_name> -n <namespace>

Delete the AKS cluster.

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.

Synapse Prometheus Connector

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 hospedada no Microsoft Container Registry. Ele é de código aberto e está localizado nas métricas do aplicativo Apache Spark do Azure Synapse.

Servidor 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. In this solution, we deploy the Prometheus component based on the helm chart.

Grafana and 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.

The "Synapse Workspace / Workspace" dashboard provides a workspace level view of all the Apache Spark pools, application counts, cpu cores, 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.

captura de ecrã do dashboard sparkpool

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

Aplicativo de painel de captura de tela

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