Compartir vía


Supervisión de métricas de aplicaciones de Apache Spark con Prometheus y Grafana

Información general

En este tutorial aprenderá a implementar la solución de métricas de aplicación de Apache Spark en un clúster de Azure Kubernetes Service (AKS) y obtendrá información sobre cómo integrar los paneles de Grafana.

Puede usar esta solución para recopilar y consultar datos de métricas de Apache Spark casi en tiempo real. Los paneles de Grafana integrados permiten diagnosticar y supervisar la aplicación Apache Spark. El código fuente y las configuraciones son de código abierto en GitHub.

Requisitos previos

  1. CLI de Azure
  2. Cliente de Helm 3.30+
  3. kubectl
  4. Azure Kubernetes Service (AKS)

O bien, use Azure Cloud Shell, que ya incluye la CLI de Azure, el cliente Helm y kubectl de serie.

Inicio de sesión en Azure

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

Creación de una instancia de Azure Kubernetes Service (AKS)

Use el comando de la CLI de Azure para crear un clúster de Kubernetes en la suscripción.

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: Este paso se puede omitir si ya tiene un clúster de AKS.

Creación de una entidad de servicio y concesión de permisos para el área de trabajo de Synapse

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

El resultado debería tener este aspecto:

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

Anote el identificador de la aplicación, la contraseña y el identificador de inquilino.

screenshot grant permission srbac

  1. Inicie sesión en el área de trabajo de Azure Synapse Analytics como administrador de Synapse.

  2. En Synapse Studio, en el panel de la izquierda, seleccione Administrar > Control de acceso

  3. Haga clic en el botón Agregar situado en la parte superior izquierda para agregar una asignación de roles.

  4. Como ámbito, elija Área de trabajo.

  5. Seleccione el rol Operador de procesos de Synapse.

  6. En Seleccionar usuario, introduzca el >service_principal_name y haga clic en su servicio principal.

  7. Haga clic en Aplicar (espere 3 minutos para que se apliquen los permisos).

Nota

Asegúrese de que la entidad de servicio tenga, como mínimo, el rol "Lector" en el área de trabajo de Synapse. Vaya a la pestaña Access Control (IAM) de Azure Portal y compruebe la configuración de los permisos.

Instalación del conector, servidor de Prometheus, panel de Grafana

  1. Agregue el repositorio synapse-charts al cliente de Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. Instale los componentes mediante el cliente de 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: nombre del área de trabajo de Synapse.
  • subscription_id: identificador de la suscripción del área de trabajo de Synapse.
  • workspace_resource_group_name: nombre del grupo de recursos del área de trabajo de Synapse.
  • tenant_id: identificador de inquilino del área de trabajo de Synapse.
  • service_principal_app_id: valor "appId" de la entidad de servicio.
  • service_principal_password: contraseña de la entidad de servicio que ha creado.

Iniciar sesión en Grafana

Obtenga la contraseña y la dirección predeterminadas de Grafana. Puede cambiar la contraseña en la configuración de Grafana.

kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana

Obtenga la dirección IP del servicio, copie y pegue la dirección IP externa en el explorador e inicie sesión con el nombre de usuario "admin" y la contraseña.

Uso de paneles de Grafana

Busque el panel de Synapse en la esquina superior izquierda de la página Grafana (Inicio -> Área de trabajo de Synapse/Aplicación Synapse), intente ejecutar un código de ejemplo en Synapse Studio y espere unos segundos para la extracción de las métricas.

Además, puede usar los paneles "Área de trabajo de Synapse/Área de trabajo" y "Área de trabajo de Synapse/Grupos de Apache Spark" para obtener información general sobre el área de trabajo y los grupos de Apache Spark.

Desinstalación

Quite los componentes con el comando de Helm como se indica a continuación.

helm delete <release_name> -n <namespace>

Elimine el clúster de AKS.

az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>

Introducción a los componentes

Azure Synapse Analytics proporciona un gráfico de Helm basado en el operador Prometheus y el conector Prometheus de Synapse. El gráfico de Helm incluye el servidor de Prometheus y Grafana Server, y paneles de Grafana para métricas de nivel de aplicación de Apache Spark. Puede usar Prometheus, un conocido sistema de supervisión de código abierto, para recopilar estas métricas casi en tiempo real, y utilizar Grafana para la visualización.

Conector Prometheus de Synapse

El conector Prometheus de Synapse ayuda a conectar el grupo de Apache Spark de Azure Synapse y el servidor de Prometheus. Implementa lo siguiente:

  1. Autenticación: es la autenticación basada en AAD y puede actualizar automáticamente el token de AAD de la entidad de servicio para la detección de aplicaciones, la ingesta de métricas y otras funciones.
  2. Detección de aplicaciones de Apache Spark: cuando se envían aplicaciones en el área de trabajo de destino, el conector Prometheus de Synapse puede detectarlas de forma automática.
  3. Metadatos de aplicación de Apache Spark: recopila información básica de la aplicación y exporta los datos a Prometheus.

El conecto Prometheus de Synapse se publica como una imagen de Docker hospedada en Microsoft Container Registry. Es de código abierto y se encuentra en las métricas de aplicación de Apache Spark de Azure Synapse.

Servidor Prometheus

Prometheus es un kit de herramientas de alerta y supervisión de código abierto. Prometheus nació de la Cloud Native Computing Foundation (CNCF) y se ha convertido en el estándar de facto para la supervisión nativa en la nube. Puede facilitar las tareas de recopilar, consultar y almacenar grandes cantidades de datos de series temporales, y se puede integrar fácilmente con Grafana. En esta solución, se implementa el componente Prometheus basado en el gráfico de Helm.

Grafana y los paneles

Grafana es un software de análisis y visualización de código abierto. Permite consultar, visualizar, enviar alertas y explorar las métricas. Azure Synapse Analytics proporciona un conjunto de paneles de Grafana predeterminados para visualizar métricas de nivel de aplicación de Apache Spark.

En el panel "Área de trabajo de Synapse / Área de trabajo" se proporciona una vista de nivel de área de trabajo de todos los grupos de Apache Spark, recuentos de aplicaciones, núcleos de CPU, etc.

screenshot dashboard workspace

El panel "Área de trabajo de Synapse / Grupos de Apache Spark" contiene las métricas de aplicaciones de Apache Spark que se ejecutan en el grupo de Apache Spark seleccionado durante el período de tiempo.

screenshot dashboard sparkpool

El panel "Área de trabajo de Synapse / Aplicación de Apache Spark" contiene la aplicación de Apache Spark seleccionada.

screenshot dashboard application

Las plantillas de panel anteriores son de código abierto en las métricas de aplicación de Apache Spark de Azure Synapse.