Envío de datos de Prometheus a Azure Monitor mediante la autenticación de identidad administrada por pods de Microsoft Entra (versión preliminar)

En este artículo se muestra cómo configurar la escritura remota para el servicio administrado para Prometheus de Azure Monitor mediante la autenticación de identidad administrada por pods de Microsoft Entra (versión preliminar).

Nota:

El contenedor adicional de escritura remota que se describe en este artículo solo debería configurarse mediante los pasos siguientes y solo si el clúster de Azure Kubernetes Service (AKS) ya tuviera habilitado un pod de Microsoft Entra. Las identidades administradas por pods de Microsoft Entra han quedado en desuso para su reemplazo por el id. de carga de trabajo de Microsoft Entra. Se recomienda usar la autenticación del id. de carga de trabajo de Microsoft Entra.

Requisitos previos

Versiones compatibles

Las versiones de Prometheus mayores que v2.45 son necesarias para la autenticación de identidad administrada.

Área de trabajo de Azure Monitor

En este artículo se describe el envío de métricas de Prometheus a un área de trabajo de Azure Monitor. Para crear un área de trabajo de Azure Monitor, vea Administración de un área de trabajo de Azure Monitor.

Permisos

Los permisos de administrador para el clúster o recurso son necesarios para completar los pasos descritos en este artículo.

Configuración de aplicaciones para la identidad administrada por pods de Microsoft Entra

El proceso para configurar la escritura remota de Prometheus para aplicaciones mediante la autenticación de identidad administrada por pods de Microsoft Entra implica completar las tareas siguientes:

  1. Registro de identidades administradas asignadas por el usuario con Microsoft Entra ID.
  2. Asigne los roles Operador de identidades administradas y Colaborador de máquinas virtuales a la identidad administrada.
  3. Asigne el rol Publicador de métricas de supervisión a la identidad administrada asignada por el usuario.
  4. Cree un enlace de identidad de Azure.
  5. Agregue la etiqueta aadpodidbinding al pod de Prometheus.
  6. Implemente un contenedor adicional para configurar la escritura remota.

Las tareas se describen en las secciones siguientes.

Registro de identidades administradas con Microsoft Entra ID

Cree una identidad administrada asignada por el usuario o registre una existente.

Para obtener más información sobre cómo crear identidades administradas, consulte Configuración de la escritura remota para el servicio administrado para Prometheus de Azure Monitor mediante la autenticación de identidad administrada.

Asigne los roles Operador de identidades administradas y Colaborador de máquinas virtuales a la identidad administrada

az role assignment create --role "Managed Identity Operator" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 
          
az role assignment create --role "Virtual Machine Contributor" --assignee <managed identity clientID> --scope <Node ResourceGroup Id> 

El grupo de recursos de nodo del clúster de AKS contiene recursos que usará en otros pasos de este proceso. Este grupo de recursos tiene el nombre MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Es posible encontrar el nombre del grupo de recursos con el menú Grupo de recursos de Azure Portal.

Asigne el rol Publicador de métricas de supervisión a la identidad administrada

az role assignment create --role "Monitoring Metrics Publisher" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 

Creación de un enlace de identidad de Azure

La identidad administrada asignada por el usuario requiere un enlace de identidad para que la identidad se use como identidad administrada por pods.

Copie el siguiente código de YAML en el archivo aadpodidentitybinding.yaml:


apiVersion: "aadpodidentity.k8s.io/v1" 

kind: AzureIdentityBinding 
metadata: 
name: demo1-azure-identity-binding 
spec: 
AzureIdentity: “<AzureIdentityName>” 
Selector: “<AzureIdentityBindingSelector>” 

Ejecute el siguiente comando:

kubectl create -f aadpodidentitybinding.yaml 

Agregue la etiqueta aadpodidbinding al pod de Prometheus

La etiqueta aadpodidbinding deberá agregarse al pod de Prometheus para que la identidad administrada por pods surta efecto. Agregue la etiqueta actualizando el archivo deployment.yaml o insertando etiquetas al implementar el contenedor adicional, tal y como se describe en la sección siguiente.

Implementación de un contenedor adicional para configurar la escritura remota

  1. Copie el siguiente código YAML y guárdelo en un archivo. YAML usa el puerto 8081 como puerto de escucha. Si usa un puerto diferente, modifique ese valor en YAML.

    prometheus: 
      prometheusSpec: 
        podMetadata: 
          labels: 
            aadpodidbinding: <AzureIdentityBindingSelector> 
        externalLabels: 
          cluster: <AKS-CLUSTER-NAME> 
        remoteWrite: 
        - url: 'http://localhost:8081/api/v1/write' 
        containers: 
        - name: prom-remotewrite 
          image: <CONTAINER-IMAGE-VERSION> 
          imagePullPolicy: Always 
          ports: 
            - name: rw-port 
          containerPort: 8081 
          livenessProbe: 
            httpGet: 
              path: /health
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
          readinessProbe: 
             httpGet: 
              path: /ready
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
        env: 
          - name: INGESTION_URL 
            value: <INGESTION_URL> 
          - name: LISTENING_PORT 
            value: '8081' 
          - name: IDENTITY_TYPE 
            value: userAssigned 
          - name: AZURE_CLIENT_ID 
            value: <MANAGED-IDENTITY-CLIENT-ID> 
          # Optional parameter 
          - name: CLUSTER 
            value: <CLUSTER-NAME>         
    
  2. Use Helm para aplicar el archivo YAML y actualizar la configuración de Prometheus:

    # set the context to your cluster 
    az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name>
    
    # use Helm to update your remote write config 
    helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus pod resides>
    

Comprobación y solución de problemas

Para obtener información de comprobación y solución de problemas, vea Solución de problemas de escritura remota y Servicio administrado de Azure Monitor para la escritura remota de Prometheus.

Pasos siguientes