Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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.
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.
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.
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.
Wählen Sie auf der Seite für die Datensammlungsregel Zugriffskontrolle (IAM) aus. Wählen Sie "Hinzufügen" und dann " Rollenzuweisung hinzufügen" aus.
Wählen Sie die Rolle Herausgeber von Überwachungsmetriken und dann Weiter aus.
Wählen Sie die Identität aus, der die Rolle zugewiesen werden soll.
- 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.
- 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.
- 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.
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.
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.