Share via


Senden von Prometheus-Daten an Azure Monitor unter Verwendung der Authentifizierung mit verwalteten Identitäten

In diesem Artikel erfahren Sie, wie Sie Remoteschreibzugriff einrichten, um Daten von einem selbstverwalteten, in Ihr AKS-Cluster (Azure Kubernetes Service) oder in ein Kubernetes-Cluster mit Azure Arc-Unterstützung ausgeführten Prometheus-Server unter Verwendung der verwalteten Identitätsauthentifizierung zu senden. Sie können entweder eine vorhandene Identität verwenden, die von AKS erstellt wird, oder eigene Identitäten erstellen. Beide Optionen werden in diesem Artikel beschrieben.

Clusterkonfigurationen

Dieser Artikel gilt für die folgenden Clusterkonfigurationen:

  • Azure Kubernetes Service-Cluster
  • Kubernetes-Cluster mit Azure Arc-Unterstützung

Hinweis

Informationen zum Einrichten von Remoteschreibvorgängen für ein Kubernetes-Cluster, das in einer anderen Cloud oder lokal ausgeführt wird, finden Sie unter Senden von Prometheus-Daten an Azure Monitor mithilfe der Microsoft Entra-Authentifizierung.

Voraussetzungen

Unterstützte Versionen

Prometheus-Versionen größer als v2.45 sind für die Authentifizierung mit der verwalteten Identität erforderlich.

Azure Monitor-Arbeitsbereich

Dieser Artikel behandelt das Senden von Prometheus-Metriken an einen Azure Monitor-Arbeitsbereich. Informationen zum Erstellen eines Azure Monitor-Arbeitsbereichs finden Sie unter Verwalten eines Azure Monitor-Arbeitsbereichs.

Berechtigungen

Zum Ausführen der Schritte in diesem Artikel sind Administratorberechtigungen für den Cluster oder die Ressource erforderlich.

Einrichten einer Anwendung für die verwaltete Identität

Der Prozess zum Einrichten des Prometheus-Remoteschreibzugriffs für eine Anwendung unter Verwendung der verwalteten Identitätsauthentifizierung umfasst folgende Aufgaben:

  1. Rufen Sie den Namen der AKS-Knotenressourcengruppe ab.
  2. Rufen Sie die Client-ID der benutzerseitig zugewiesenen verwalteten Identität ab.
  3. Weisen Sie die Rolle „Herausgeber von Überwachungsmetriken“ in der Datensammlungsregel des Arbeitsbereichs zur verwalteten Identität zu.
  4. Gewähren Sie dem AKS-Cluster Zugriff auf die verwaltete Identität.
  5. Stellen Sie einen Sidecar-Container zum Einrichten des Remoteschreibzugriffs bereit.

Die Aufgaben werden in den folgenden Abschnitten beschrieben.

Abrufen des Namens der AKS-Knotenressourcengruppe

Die Knotenressourcengruppe des AKS-Clusters enthält Ressourcen, die Sie für andere Schritte in diesem Prozess verwenden. Diese Ressourcengruppe hat den Namen MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Sie finden den Ressourcengruppennamen mithilfe des Menüs Ressourcengruppen im Azure-Portal.

Screenshot einer Liste der Ressourcengruppen.

Abrufen der Client-ID der benutzerseitig zugewiesenen verwalteten Identität

Sie brauchen die Client-ID der Identität, die Sie verwenden möchten. Kopieren Sie die Client-ID, um sie später im Prozess zu verwenden.

Anstatt Ihre eigene Client-ID zu erstellen, können Sie eine der Identitäten verwenden, die von AKS erstellt werden. Weitere Informationen zu den Identitäten finden Sie unter Verwenden einer verwalteten Identität in Azure Kubernetes Service.

In diesem Artikel wird die Kubelet-Identität verwendet. Der Name dieser Identität ist <AKS-CLUSTER-NAME>-agentpool und sie ist in der Knotenressourcegruppe des AKS-Clusters.

Screenshot einer Liste der Ressourcen in einer Knotenressourcegruppe.

Auswählen der verwalteten Identität <AKS-CLUSTER-NAME>-agentpool. Kopieren Sie auf der Seite Übersicht den Wert für Client-ID. Weitere Informationen finden Sie unter Verwalten von benutzerseitig zugewiesenen verwalteten Identitäten.

Screenshot einer Client-ID auf einer Übersichtsseite für eine verwaltete Identität.

Zuweisen der Rolle „Herausgeber von Überwachungsmetriken“ in der Datensammlungsregel der verwalteten Identität

Der verwalteten Identität muss die Rolle „Herausgeber von Überwachungsmetriken“ in der Datensammlungsregel zugewiesen werden, die Ihrem Azure Monitor-Arbeitsbereich zugeordnet ist.

  1. Wählen Sie im Ressourcenmenü für Ihren Azure Monitor-Arbeitsbereich die Option Übersicht aus. Wählen Sie unter Datensammlungsregel den Link aus.

    Screenshot der Datensammlungsregel, die dem Azure Monitor-Arbeitsbereich zugeordnet ist.

  2. Wählen Sie im Ressourcenmenü für die Datensammlungsregel die Option Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen und dann Rollenzuweisung hinzufügen aus.

    Screenshot des Hinzufügens einer Rollenzuweisung auf Zugriffssteuerungsseiten

  4. Wählen Sie die Rolle Herausgeber von Überwachungsmetriken und dann Weiter aus.

    Screenshot einer Liste mit Rollenzuweisungen

  5. Wählen Sie Verwaltete Identität aus, und wählen Sie dann Mitglieder auswählen aus. Wählen Sie das Abonnement aus, das die benutzerseitig zugewiesene Identität enthält, und wählen Sie dann Benutzerseitig zugewiesene verwaltete Identität aus. Wählen Sie die vom Benutzer zugewiesene Identität aus, die Sie verwenden möchten, und wählen Sie dann Auswählen aus.

    Screenshot der Auswahl einer benutzerseitig zugewiesenen verwalteten Identität.

  6. Wählen Sie Überprüfen + zuweisen aus, um die Rollenzuweisung abzuschließen.

Gewähren des AKS-Clusterzugriffs auf die verwaltete Identität

Dieser Schritt ist nicht erforderlich, wenn Sie eine AKS-Identität verwenden. Eine AKS-Identität hat bereits Zugriff auf das Cluster.

Wichtig

Um die Schritte in diesem Abschnitt ausführen zu können, müssen Sie über Administratorberechtigungen für den Besitzer oder den Benutzerzugriff für das Cluster verfügen.

  1. Identifizieren Sie die VM-Skalierungsgruppen in der Knotenressourcengruppe für Ihren AKS-Cluster.

    Screenshot mit VM-Skalierungsgruppen in der Knotenressourcengruppe

  2. Führen Sie den folgenden Befehl in Azure CLI für jede VM-Skalierungsgruppe aus:

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

Bereitstellen eines Sidecar-Containers zum Einrichten des Remoteschreibzugriffs

  1. Kopieren Sie den folgenden YAML-Code, und speichern Sie ihn in einer Datei. In dem YAML-Code wird der Port 8081 als Lauschport verwendet. Ändern Sie den Port im YAML-Code, falls Sie einen anderen Port verwenden.

    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. Ersetzen Sie die folgenden Werte in YAML:

    Wert Beschreibung
    <AKS-CLUSTER-NAME> Der Name Ihres AKS-Clusters.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240507.1
    Die Version des Remoteschreibzugriff-Containerimages.
    <INGESTION-URL> Der Wert für Metrikerfassungsendpunkt auf der Seite Übersicht für den Azure Monitor-Arbeitsbereich.
    <MANAGED-IDENTITY-CLIENT-ID> Der Wert für Client-ID auf der Seite Übersicht für die verwaltete Identität.
    <CLUSTER-NAME> Der Name des Clusters, in dem Prometheus ausgeführt wird.

    Wichtig

    Fügen Sie für die Azure Government-Cloud die folgenden Umgebungsvariablen im env-Abschnitt der YAML-Datei hinzu:

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

  3. Öffnen Sie Azure Cloud Shell, und laden Sie die YAML-Datei hoch.

  4. Verwenden Sie Helm, um die YAML-Datei anzuwenden und Ihre Prometheus-Konfiguration zu aktualisieren:

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

Überprüfung und Problembehandlung

Informationen zur Überprüfung und Problembehandlung finden Sie unter Problembehandlung bei Remoteschreibzugriff und Verwalteter Azure Monitor-Dienst für Prometheus-Remoteschreibzugriff.

Nächste Schritte