Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification avec une identité managée

Cet article décrit comment configurer l’écriture à distance pour envoyer des données depuis un serveur Prometheus autogéré s’exécutant dans votre cluster Azure Kubernetes Service (AKS) ou dans votre cluster Kubernetes avec Azure Arc en utilisant l’authentification avec une identité managée et un conteneur side-car fournit par Azure Monitor. Vous pouvez utiliser une identité existante qui est créée par AKS ou bien créer la vôtre. Les deux options sont décrites ici.

Remarque

Si vous utilisez l’identité managée affectée par l’utilisateur, nous vous recommandons de configurer directement Prometheus s’exécutant sur votre cluster Kubernetes pour écrire à distance dans l’espace de travail Azure Monitor. Pour en savoir plus, consultez Envoyer des données Prometheus à Azure Monitor en utilisant une identité managée affectée par l’utilisateur. Les étapes ci-dessous utilisent le conteneur side-car Azure Monitor.

Configurations de cluster

Cet article s’applique aux configurations de cluster suivantes :

  • Cluster Azure Kubernetes Service
  • Cluster Kubernetes avec Azure Arc

Remarque

Pour plus d’informations sur la configuration de l’écriture à distance pour un cluster Kubernetes s’exécutant dans un autre cloud ou en local, consultez Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification Microsoft Entra.

Prérequis

Versions prises en charge

Les versions Prometheus supérieures à la version 2.45 sont requises pour l'authentification d'identité managée.

Espace de travail Azure Monitor

Cet article traite de l'envoi de métriques Prometheus à un espace de travail Azure Monitor. Pour créer un espace de travail Azure Monitor, consultez Gérer un espace de travail Azure Monitor.

Autorisations

Les autorisations d'administrateur pour le cluster ou la ressource sont nécessaires pour effectuer les étapes de cet article.

Configurer une application pour l’identité managée

Le processus de configuration de l’écriture à distance Prometheus pour application en utilisant l’authentification avec une identité managée implique d’effectuer les tâches suivantes :

  1. Obtenir le nom du groupe de ressources du nœud AKS.
  2. Obtenir l’ID client de l’identité managée affectée par l’utilisateur.
  3. Attribuer à l’identité managée le rôle Éditeur d’indicateurs de performance d’analyse sur la règle de collecte de données d’espace de travail.
  4. Donner au cluster AKS l’accès à l’identité managée.
  5. Déployer un conteneur side-car pour configurer l’écriture à distance.

Les tâches sont décrites dans les sections suivantes.

Obtenir le nom du groupe de ressources du nœud AKS

Le groupe de ressources de nœud du cluster AKS contient des ressources que vous utilisez dans d’autres étapes de ce processus. Ce groupe de ressources a le nom MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Vous trouverez le nom du groupe de ressources en utilisant le menu Groupes de ressources dans le portail Azure.

Capture d’écran montrant une liste de groupes de ressources.

Obtenir l’ID client de l’identité managée affectée par l’utilisateur

Vous devez obtenir l’ID client de l’identité que vous allez utiliser. Copiez l’ID client pour l’utiliser plus tard dans le processus.

Au lieu de créer votre propre ID client, vous pouvez utiliser une des identités créées par AKS. Pour plus d’informations sur les identités, consultez Utiliser une identité managée dans Azure Kubernetes Service.

Cet article utilise l’identité kubelet. Le nom de cette identité est <AKS-CLUSTER-NAME>-agentpool et elle se trouve dans le groupe de ressources de nœud du cluster AKS.

Capture d’écran montrant la liste des ressources qui se trouvent dans le groupe de ressources de nœud.

Sélectionnez l’identité managée <AKS-CLUSTER-NAME>-agentpool. Dans la page Vue d’ensemble, copiez la valeur de ID client. Pour plus d’informations, consultez Gérer les identités managées affectées par l’utilisateur.

Capture d’écran montrant un ID client sur une page de vue d’ensemble d’une identité managée.

Attribuer à l’identité managée le rôle Éditeur d’indicateurs de performance d’analyse sur la règle de collecte de données d’espace de travail

L’identité managée nécessite le rôle Éditeur d’indicateurs de performance d’analyse sur la règle de collecte de données associée à votre espace de travail Azure Monitor.

  1. Dans le menu des ressources de votre espace de travail Azure Monitor, sélectionnez Vue d’ensemble. Pour Règle de collecte de données, sélectionnez le lien.

    Capture d’écran montrant la règle de collecte de données associée avec un espace de travail Azure Monitor.

  2. Dans le menu des ressources de la règle de collecte de données, sélectionnez Contrôle d’accès (IAM).

  3. Sélectionnez Ajouter, puis sélectionnez Ajouter une attribution de rôle.

    Capture d’écran montrant l’ajout d’une attribution de rôle dans les pages du contrôle d’accès.

  4. Sélectionnez le rôle Éditeur d’indicateurs de performance d’analyse, puis sélectionnez Suivant.

    Capture d’écran montrant la liste des attributions de rôle.

  5. Sélectionnez Identité managée, puis choisissez Sélectionner les membres. Sélectionnez l’abonnement qui contient l’identité affectée par l’utilisateur, puis sélectionnez Identité managée affectée par l’utilisateur. Sélectionnez l’identité affectée par l’utilisateur que vous souhaitez utiliser, puis choisissez Sélectionner.

    Capture d’écran qui montre la sélection d’une identité managée affectée par l’utilisateur.

  6. Pour terminer le processus d’attribution de rôle, sélectionnez Vérifier + attribuer.

Donner au cluster AKS l’accès à l’identité managée

Cette étape n’est pas nécessaire si vous utilisez une identité AKS. Une identité AKS a déjà accès au cluster.

Important

Pour effectuer les étapes décrites dans cette section, vous devez disposer des autorisations d’administrateur d’accès propriétaire ou utilisateur pour le cluster.

  1. Identifiez les groupes de machines virtuelles identiques dans le groupe de ressources de nœud de votre cluster AKS.

    Capture d’écran montrant des groupes de machines virtuelles identiques dans le groupe de ressources de nœud.

  2. Pour chaque groupe de machines virtuelles identiques, exécutez la commande suivante dans Azure CLI :

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

Déployer un conteneur side-car pour configurer l’écriture à distance

  1. Copiez le code YAML suivant et enregistrez-le dans un fichier. Le code YAML utilise le port 8081 comme port d’écoute. Si vous utilisez un autre port, modifiez cette valeur dans le 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. Remplacez les valeurs suivantes dans le YAML :

    Valeur Description
    <AKS-CLUSTER-NAME> Le nom de votre cluster AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    La version d’image conteneur d’écriture distante.
    <INGESTION-URL> La valeur pour Point de terminaison d’ingestion des métriques de la page Vue d’ensemble de l’espace de travail Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> La valeur de ID client de la page Vue d’ensemble de l’identité managée.
    <CLUSTER-NAME> Le nom du cluster sur lequel Prometheus s’exécute.

    Important

    Pour le cloud Azure Government, ajoutez les variables d’environnement suivantes dans la section env du fichier YAML :

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

  3. Ouvrez Azure Cloud Shell et chargez le fichier YAML.

  4. Utilisez Helm pour appliquer le fichier YAML et mettre à jour votre configuration 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> 
    

Vérification et résolution des problèmes

Pour plus d'informations sur la vérification et la résolution des problèmes, consultez Résolution des problèmes de l'écriture distante et le service géré pour Prometheus Azure Monitor pour l'écriture distante Prometheus.

Étapes suivantes