Compartir a través de


Envío de datos de Prometheus a Azure Monitor mediante la autenticación de identidad administrada

En este artículo se describe cómo configurar la escritura remota para enviar datos desde un servidor Prometheus autoadministrado que se ejecuta en el clúster de Azure Kubernetes Service (AKS) o el clúster de Kubernetes habilitado para Azure Arc mediante la autenticación de identidad administrada y un contenedor de sidecar proporcionado por Azure Monitor. Puede usar una identidad existente creada por AKS o crear la suya propia. Aquí se describen ambas opciones.

Nota:

Si usa la identidad administrada asignada por el usuario, se recomienda configurar directamente Prometheus en ejecución en el clúster de Kubernetes para escribir de forma remota en el área de trabajo de Azure Monitor. Vea Envío de datos de Prometheus a Azure Monitor mediante la identidad administrada asignada por el usuario para más información. En los pasos siguientes se usa el contenedor de sidecar de Azure Monitor.

Configuraciones de clústeres

Este artículo se aplica a las configuraciones de clúster siguientes:

  • Clúster de Azure Kubernetes Service
  • Clúster de Kubernetes habilitado para Azure Arc

Nota:

Para obtener información sobre cómo configurar la escritura remota para un clúster de Kubernetes que se ejecuta en una nube diferente o local, consulte Envío de datos de Prometheus a Azure Monitor mediante la autenticación 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, consulte Administrar 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 una aplicación para la identidad administrada

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

  1. Obtenga el nombre del grupo de recursos del nodo de AKS.
  2. Obtenga el identificador de cliente de la identidad administrada asignada por el usuario.
  3. Asigne el rol Editor de métricas de supervisión en la regla de recopilación de datos del área de trabajo a la identidad administrada.
  4. Proporcione al clúster de AKS acceso a la identidad administrada.
  5. Implementar un contenedor sidecar para configurar la escritura remota.

Los formatos se describen en las secciones siguientes.

Obtener el nombre del grupo de recursos del nodo de AKS

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.

Captura de pantalla que muestra una lista de grupos de recursos.

Obtener el identificador de cliente de la identidad administrada asignada por el usuario

Debe obtener el identificador de cliente de la identidad que va a usar. Copie el identificador de cliente para usarlo más adelante en el proceso.

En lugar de crear su propio identificador de cliente, puede usar una de las identidades creadas por AKS. Para más información sobre las identidades, consulte Uso de una identidad administrada en Azure Kubernetes Service.

En este artículo se usa la identidad de kubelet. El nombre de esta identidad es <AKS-CLUSTER-NAME>-agentpool y se encuentra en el grupo de recursos de nodo del clúster de AKS.

Captura de pantalla que muestra una lista de recursos que se encuentran en el grupo de recursos del nodo.

Seleccione la identidad administrada <AKS-CLUSTER-NAME>-agentpool. En la página de Información general, copie el valor de Id. de cliente. Para obtener más información, consulte Administración de identidades administradas asignadas por el usuario.

Captura de pantalla que muestra un identificador de cliente en una página de información general de una identidad administrada.

Asignar el rol Editor de métricas de supervisión en la regla de recopilación de datos del área de trabajo a la identidad administrada

La identidad administrada debe tener asignado el rol Editor de métricas de monitorización en la regla de recopilación de datos asociada al área de trabajo de Azure Monitor.

  1. En el menú de recursos del área de trabajo de Azure Monitor, seleccione Información general. Para Regla de recopilación de datos, seleccione el vínculo.

    Captura de pantalla que muestra la regla de recopilación de datos asociada a un área de trabajo de Azure Monitor.

  2. En el menú de recursos de la regla de recopilación de datos, seleccione Control de acceso (IAM).

  3. Seleccione Agregar y, después, Agregar asignación de roles.

    Captura de pantalla que muestra cómo agregar una asignación de roles en las páginas de control de acceso.

  4. Seleccione el rol Publicador de métricas de supervisión y, a continuación, seleccione Siguiente.

    Captura de pantalla que muestra una lista de asignaciones de roles.

  5. Seleccione Identidad administrada y después elija Seleccionar miembros. Seleccione la suscripción que contiene la identidad asignada por el usuario y, después, seleccione Identidad administrada asignada por el usuario. Seleccione la identidad asignada por el usuario que quiera usar y, después, seleccione Seleccionar.

    Captura de pantalla que muestra la selección de una identidad administrada asignada por el usuario.

  6. Para completar la asignación de roles, seleccione Revisar y asignar.

Proporcionar al clúster de AKS acceso a la identidad administrada

Este paso no es necesario si usa una identidad de AKS. Una identidad de AKS ya tiene acceso al clúster.

Importante

Para completar los pasos descritos en esta sección, debe tener permisos de administrador de acceso de usuario o propietario para el clúster.

  1. Identifique los conjuntos de escalado de máquinas virtuales en el grupo de recursos de nodo del clúster de AKS.

    Captura de pantalla que muestra conjuntos de escalado de máquinas virtuales en el grupo de recursos del nodo.

  2. Para cada conjunto de escalado de máquinas virtuales, ejecute el siguiente comando en la CLI de Azure:

    az vmss identity assign -g <AKS-NODE-RESOURCE-GROUP> -n <AKS-VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
    

Implementación de un contenedor sidecar 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 el puerto en YAML.

    prometheus:
      prometheusSpec:
        externalLabels:
              cluster: <AKS-CLUSTER-NAME>
    
        ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write    
        remoteWrite:
        - url: 'http://localhost:8081/api/v1/write'
      ## Azure Managed Prometheus currently exports some default mixins in Grafana. 
      ## These mixins are compatible with Azure Monitor agent on your Azure Kubernetes Service cluster. 
      ## However, these mixins aren't compatible with Prometheus metrics scraped by the Kube Prometheus stack. 
      ## In order to make these mixins compatible, uncomment remote write relabel configuration below:
    
      ## writeRelabelConfigs:
      ##   - sourceLabels: [metrics_path]
      ##     regex: /metrics/cadvisor
      ##     targetLabel: job
      ##     replacement: cadvisor
      ##     action: replace
      ##   - sourceLabels: [job]
      ##     regex: 'node-exporter'
      ##     targetLabel: job
      ##     replacement: node
      ##     action: replace
        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. Reemplace los valores siguientes en YAML:

    Value Descripción
    <AKS-CLUSTER-NAME> Nombre del clúster de AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    La versión de la imagen de contenedor de escritura remota.
    <INGESTION-URL> El valor para el punto de conexión de ingesta de datos de la página de información general del área de trabajo de Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> El valor de Id. de cliente de la página de Información general de la identidad administrada.
    <CLUSTER-NAME> Nombre del clúster en el que se ejecuta Prometheus.

    Importante

    Para la nube de Azure Government, agregue las siguientes variables de entorno en la sección env del archivo YAML:

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Abra Azure Cloud Shell y cargue el archivo YAML.

  4. Use Helm para aplicar el archivo YAML y actualizar la configuración de Prometheus:

    # set 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