Freigeben über


Verbinden von selbstverwaltetem Prometheus mit dem verwalteten Azure Monitor-Dienst für Prometheus

Der verwaltete Azure Monitor-Dienst für Prometheus ist ein Ersatz für selbstverwaltete Prometheus, sodass Sie keinen Prometheus-Server in Ihren Kubernetes-Clustern verwalten müssen. Es kann jedoch Szenarien geben, in denen Sie weiterhin selbstverwaltete Prometheus in Ihren Kubernetes-Clustern verwenden möchten und gleichzeitig Daten für die langfristige Datenaufbewahrung an verwaltete Prometheus senden und eine zentrale Ansicht über Ihre Cluster hinweg erstellen möchten. Dies kann eine temporäre Lösung sein, während Sie zu Managed Prometheus oder einer langfristigen Lösung migrieren, wenn Sie bestimmte Anforderungen für selbstverwaltete Prometheus haben.

Architektur

Remote_write ist ein Feature in Prometheus, mit dem Sie Metriken von einer lokalen Prometheus-Instanz an Remotespeicher oder an eine andere Prometheus-Instanz senden können. Verwenden Sie dieses Feature, um Metriken von selbstverwalteten Prometheus zu senden, die in Ihren Kubernetes-Clustern oder virtuellen Computern ausgeführt werden, an einen Azure Monitor-Arbeitsbereich, der von verwaltetem Prometheus verwendet wird.

Das folgende Diagramm veranschaulicht diese Konfiguration: Eine Datensammlungsregel (Data Collection Rule, DCR) in Azure Monitor stellt einen Endpunkt für die selbstverwaltete Prometheus-Instanz zum Senden von Metriken bereit und definiert den Azure Monitor-Arbeitsbereich , in dem die Daten gesendet werden.

Diagramm, das die Verwendung von Remote-Schreibvorgängen zum Senden von Metriken von lokalem Prometheus an verwaltetes Prometheus zeigt.

Authentifizierungstypen

Die Konfigurationsanforderungen für Remoteschreibvorgänge hängen vom Authentifizierungstyp ab, der zum Herstellen einer Verbindung mit dem Azure Monitor-Arbeitsbereich verwendet wird. In der folgenden Tabelle werden die unterstützten Authentifizierungstypen beschrieben. Die Details für jede Konfiguration werden in den folgenden Abschnitten beschrieben.

Typ Unterstützte Cluster
Vom System zugewiesene verwaltete Identität Azure Kubernetes-Dienst (AKS)
Azure VM/VMSS
Vom Benutzer zugewiesene verwaltete Identität Azure Kubernetes-Dienst (AKS)
Kubernetes mit Arc-Unterstützung
Azure VM/VMSS
Microsoft Entra ID Azure Kubernetes-Dienst (AKS)
Arc-fähiges Kubernetes-Cluster
Cluster, der in einer anderen Cloud oder lokal ausgeführt wird
Azure VM/VMSS
Arc-fähige Server
VM, die in einer anderen Cloud oder lokal ausgeführt wird

Hinweis

Sie können auch die Authentifizierung mit Microsoft Entra ID Workload Identity verwenden, aber Sie müssen einen Sidecar-Container verwenden, um eine Abstraktion für die Verarbeitung von Prometheus-Remote-Write-Metriken bereitzustellen und bei der Authentifizierung von Paketen zu helfen. Siehe Senden von Prometheus-Daten an Azure Monitor mithilfe der Microsoft Entra Workload ID-Authentifizierung für die Konfiguration. |

Azure Monitor-Arbeitsbereich

Ihr Azure Monitor-Arbeitsbereich muss erstellt werden, bevor Sie Remoteschreibvorgänge konfigurieren können. Dadurch wird automatisch Managed Prometheus aktiviert. Wenn Sie noch keins haben, lesen Sie " Verwalten eines Azure Monitor-Arbeitsbereichs".

Erstellen einer Identität für die Authentifizierung

Bevor Sie Remoteschreibvorgänge konfigurieren können, müssen Sie die Identität erstellen, die Sie für die Authentifizierung beim Azure Monitor-Arbeitsbereich verwenden. In den folgenden Abschnitten wird beschrieben, wie Sie jeden Identitätstyp erstellen, wenn Sie keine vorhandene Identität verwenden.

Sie erstellen keine vom System zugewiesene verwaltete Identität, sondern aktivieren sie stattdessen für einen virtuellen Azure-Computer oder einen VM-Skalierungssatz. Bei einer Azure-VM können Sie die Identität aktivieren, wenn Sie den virtuellen Computer erstellen oder später über seine Identitätsseite im Azure-Portal aktivieren. Für einen VMSS müssen Sie diesen nach der Erstellung aktivieren. Die verschiedenen Optionen zum Aktivieren der vom System verwalteten Identität finden Sie unter Konfigurieren verwalteter Identitäten auf virtuellen Azure-Computern (VMs) und Konfigurieren von verwalteten Identitäten für Azure-Ressourcen in einer VM-Skalierungsgruppe.

Screenshot des Bildschirms zum Aktivieren der vom System zugewiesenen verwalteten Identität für einen virtuellen Azure-Computer.

Für einen AKS-Cluster muss die verwaltete Identität den Skalierungssätzen des virtuellen Computers im Cluster zugewiesen werden. AKS erstellt eine Ressourcengruppe, die die Skalierungssätze des virtuellen Computers enthält. Greifen Sie auf diese Ressourcengruppe über die Seite "Eigenschaften" im Menü des Clusters im Azure-Portal zu. Klicken Sie auf " Infrastrukturressourcengruppe ", um die Ressourcen in dieser Ressourcengruppe anzuzeigen. Sie müssen die vom System verwaltete Identität für jeden Skalierungssatz für virtuelle Computer in der Ressourcengruppe aktivieren.

Screenshot der Infrastrukturressourcengruppe für einen AKS-Cluster.

Zuweisen von Rollen

Nachdem die Identität erstellt wurde, die Sie verwenden möchten, muss sie Zugriff auf die Datensammlungsregel (DCR) erhalten, die dem Azure Monitor-Arbeitsbereich zugeordnet ist, der die Remoteschreibdaten empfängt. Dieser DCR wird automatisch erstellt, wenn Sie den Arbeitsbereich erstellen. Sie geben diese Identität in der Remoteschreibkonfiguration für den Cluster oder die VM an.

  1. Wählen Sie im Übersichtsbereich des Azure Monitor-Arbeitsbereichs den Link "Datensammlungsregel" aus. Dadurch wird die Datensammlungsregel (DATA Collection Rule, DCR) geöffnet, die dem Arbeitsbereich zugeordnet ist.

    Screenshot des DCR-Links für einen Azure Monitor-Arbeitsbereich.

  2. Wählen Sie auf der Seite für die Datensammlungsregel Zugriffskontrolle (IAM) aus. Wählen Sie "Hinzufügen" und dann " Rollenzuweisung hinzufügen" aus.

    Screenshot der Seite

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

    Screenshot, der das Hinzufügen einer Rollenzuweisung zu einem DCR zeigt.

  4. Wählen Sie die Identität aus, der die Rolle zugewiesen werden soll.

    1. Wählen Sie für vom System zugewiesene verwaltete Identität die Option "Verwaltete Identität " und dann " Mitglieder auswählen" aus. Wählen Sie im Dropdownmenü "Verwaltete Identität " den virtuellen Computer/VMSS oder jeden der VMSS im AKS-Cluster aus.

    Screenshot, der die Auswahl der vom System zugewiesenen verwalteten Identitätsmitglieder zeigt.

    1. Wählen Sie für vom Benutzer zugewiesene verwaltete Identität den Abschnitt " Vom Benutzer zugewiesene verwaltete Identität " aus. Wählen Sie die identität aus, die Sie erstellt haben.

    Screenshot der Auswahl verwalteter Identitätsmitglieder.

    1. Wählen Sie für entra-ID "Benutzer", "Gruppe" oder "Dienstprinzipal" und dann "Mitglieder auswählen" aus. Wählen Sie die erstellte Anwendung und dann Auswählen aus.

    Screenshot, der die Auswahl von Entra ID-Mitgliedern zeigt.

  5. Wählen Sie "Auswählen" aus, um Ihre Auswahl zu bestätigen, und wählen Sie dann "Überprüfen+ Zuweisen " aus, um die Rollenzuweisung abzuschließen.


Konfigurieren von Remoteschreibvorgängen in konfigurationsdatei

Der letzte Schritt besteht darin, der Konfigurationsdatei für Ihren selbstverwalteten Prometheus-Server Remoteschreibvorgänge hinzuzufügen. Zusätzlich zu den Details zu der identität, die Sie erstellt haben, benötigen Sie auch den Metrikaufnahmeendpunkt für den Azure Monitor-Arbeitsbereich. Rufen Sie diesen Wert auf der Seite "Übersicht" für Ihren Azure Monitor-Arbeitsbereich im Azure-Portal ab.

Screenshot des Endpunkts für die Erfassung von Metriken für einen Azure Monitor-Arbeitsbereich.

Der remote-write Abschnitt der Prometheus-Konfigurationsdatei sieht in Abhängigkeit vom verwendeten Authentifizierungstyp ähnlich wie im folgenden Beispiel aus.

Verwaltete Identität

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
    azuread:
      cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
      managed_identity:  
        client_id: "<client-id of the managed identity>"

Entra ID

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
    azuread:
      cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
      oauth:  
        client_id: "<client-id from the Entra app>"
        client_secret: "<client secret from the Entra app>"
        tenant_id: "<Azure subscription tenant Id>"

Anwenden von Konfigurationsdateiupdates

Virtueller Computer

Für eine virtuelle Maschine wird die Konfigurationsdatei promtheus.yml sein, es sei denn, Sie geben beim Starten des Prometheus-Servers eine andere mit prometheus --config.file <path-to-config-file> an.

Kubernetes-Cluster

Bei einem Kubernetes-Cluster wird die Konfigurationsdatei in der Regel in einer ConfigMap gespeichert. Nachfolgend finden Sie ein Beispiel für ConfigMap, das eine Remoteschreibkonfiguration mit verwalteter Identität für selbstverwaltete Prometheus enthält, die in einem Kubernetes-Cluster ausgeführt wird.

  GNU nano 6.4
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-server-conf # must match what your pod mounts
  namespace: monitoring  # adjust to your namespace
data:
  prometheus.yml: |-
   global:
     scrape_interval: 15s
     evaluation_interval: 15s
     external_labels:
       cluster: "aks11"

   scrape_configs:
     - job_name: "prometheus"
       static_configs:
         - targets: ["localhost:9090"]

   remote_write:
     - url: "https://aks-amw-0mi2.eastus-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2023-04-24"
       azuread:
         cloud: 'AzurePublic'
         managed_identity:
           client_id: "00001111-aaaa-2222-bbbb-3333cccc4444"

Verwenden Sie den folgenden Befehl, um die Konfigurationsdateiupdates anzuwenden.

kubectl apply -f <configmap-file-name>.yaml

Starten Sie Prometheus neu, um die neue Konfiguration zu übernehmen. Wenn Sie eine Bereitstellung verwenden, können Sie die Pods neu starten, indem Sie den folgenden Befehl ausführen.

kubectl -n monitoring rollout restart deploy <prometheus-deployment-name>

Versionshinweise

Detaillierte Versionshinweise zum Sidecar-Image für Remoteschreibzugriff finden Sie in den Remoteschreibzugriff-Versionshinweisen.

Troubleshoot

HTTP 403-Fehler im Prometheus-Protokoll

Es dauert etwa 30 Minuten, bis die Zuweisung der Rolle wirksam wird. Während dieser Zeit wird möglicherweise ein HTTP 403-Fehler im Prometheus-Protokoll angezeigt. Überprüfen Sie, ob Sie die verwaltete Identität oder die Microsoft Entra-ID-Anwendung ordnungsgemäß mit der Rolle "Monitoring Metrics Publisher " im DCR des Arbeitsbereichs konfiguriert haben. Wenn die Konfiguration korrekt ist, warten Sie 30 Minuten, bis die Rollenzuweisung wirksam wird.

Es werden keine Kubernetes-Daten erfasst.

Wenn Daten in verwaltetem Prometheus nicht gesammelt werden, führen Sie den folgenden Befehl aus, um Fehler im Remoteschreibcontainer zu finden.

kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>

Container startet sich wiederholt neu

Ein container, der regelmäßig neu gestartet wird, ist wahrscheinlich auf eine Fehlkonfiguration des Containers zurückzuführen. Führen Sie den folgenden Befehl aus, um die für den Container festgelegten Konfigurationswerte anzuzeigen. Überprüfen Sie die Konfigurationswerte insbesondere AZURE_CLIENT_ID und IDENTITY_TYPE.

kubectl get pod <Prometheus-Pod-Name> -o json | jq -c  '.spec.containers[] | select( .name | contains("<Azure-Monitor-Side-Car-Container-Name>"))'

Die Ausgabe dieses Befehls hat das folgende Format:

{"env":[{"name":"INGESTION_URL","value":"https://my-azure-monitor-workspace.eastus2-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview"},{"name":"LISTENING_PORT","value":"8081"},{"name":"IDENTITY_TYPE","value":"userAssigned"},{"name":"AZURE_CLIENT_ID","value":"00000000-0000-0000-0000-00000000000"}],"image":"mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20221012.2","imagePullPolicy":"Always","name":"prom-remotewrite","ports":[{"containerPort":8081,"name":"rw-port","protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-vbr9d","readOnly":true}]}

In Umgebungen mit hohem Volumen kann es zu Datenverlusten kommen

Die Datensammlungsregel (Data Collection Rule, DCR) und der Datensammlungsendpunkt (Data Collection Endpoint, DCE) für den Azure Monitor-Arbeitsbereich sind Ingestionsgrenzwerten unterworfen, die in den Azure Monitor-Dienstgrenzwerten aufgeführt sind. Sie unterliegen diesen Grenzwerten am meisten, wenn Sie Remoteschreibvorgänge für mehrere Cluster konfigurieren, die Daten an denselben Endpunkt senden.

Erwägen Sie eine Remoteschreiboptimierung, um die Konfigurationseinstellungen für eine bessere Leistung anzupassen. Erwägen Sie das Erstellen zusätzlicher DCRs und DCEs, um die Datenerfassungslast über mehrere Endpunkte zu verteilen. Dieser Ansatz trägt dazu bei, die Leistung zu optimieren und eine effiziente Datenverarbeitung sicherzustellen. Weitere Informationen finden Sie unter Erstellen benutzerdefinierter Datensammlungsendpunkte (DCE) und benutzerdefinierter Datensammlungsregeln (DATA Collection Rule, DCR) für einen vorhandenen Azure Monitor Workspace (AMW) zum Erfassen von Prometheus-Metriken.

Nächste Schritte