Senden von Prometheus-Metriken an den Log Analytics-Arbeitsbereich mit Container Insights
In diesem Artikel wird beschrieben, wie Sie Prometheus-Metriken aus Ihrem von Container Insights überwachen Kubernetes-Cluster an einen Log Analytics-Arbeitsbereich senden. Bevor Sie diese Konfiguration ausführen, sollten Sie zunächst sicherstellen, dass Sie Prometheus-Metriken aus Ihrem Cluster mithilfe des verwalteten Azure Monitor-Diensts für Prometheus extrahieren, was die empfohlene Methode für die Überwachung Ihrer Cluster ist. Verwenden Sie die in diesem Artikel beschriebene Konfiguration nur, wenn Sie dieselben Daten auch an einen Log Analytics-Arbeitsbereich senden möchten, wo Sie sie mithilfe von Protokollabfragen und Protokollsuchwarnungen analysieren können.
Für diese Konfiguration muss das Überwachungs-Add-On für den Azure Monitor-Agent konfiguriert werden, welches das gleiche ist, das von Container Insights zum Senden von Daten an einen Log Analytics-Arbeitsbereich verwendet wird. Dazu müssen Sie den Prometheus-Metrikendpunkt über Ihre Exportprogramme oder Pods verfügbar machen und dann eines der Überwachungs-Add-Ons für den Azure Monitor-Agent konfigurieren, der von Container Insights verwendet wird, wie im folgenden Diagramm dargestellt.
Prometheus-Scrapingeinstellungen (für als Protokolle gespeicherte Metriken)
Das aktive Scraping von Metriken aus Prometheus erfolgt aus einer der folgenden beiden Perspektiven, und Metriken werden an den konfigurierten Log Analytics-Arbeitsbereich gesendet:
- Clusterweit: Definiert im Abschnitt „ConfigMap“ [Prometheus data_collection_settings.cluster].
- Knotenweit: Definiert im Abschnitt „ConfigMap“ [Prometheus_data_collection_settings.node].
Endpunkt | `Scope` | Beispiel |
---|---|---|
Podanmerkung | Clusterweit | prometheus.io/scrape: "true" prometheus.io/path: "/mymetrics" prometheus.io/port: "8000" prometheus.io/scheme: "http" |
Kubernetes-Dienst | Clusterweit | http://my-service-dns.my-namespace:9100/metrics http://metrics-server.kube-system.svc.cluster.local/metrics |
URL/Endpunkt | Pro Knoten und/oder clusterweit | http://myurl:9101/metrics |
Wenn eine URL angegeben wird, erfasst Container Insights nur den Endpunkt. Wenn „Kubernetes-Dienst“ angegeben wird, wird der Dienstname mit dem Cluster-DNS-Server aufgelöst, um die IP-Adresse abzurufen. Anschließend wird der aufgelöste Dienst ausgelesen.
`Scope` | Schlüssel | Datentyp | Wert | BESCHREIBUNG |
---|---|---|---|---|
Clusterweit | Geben Sie eine der folgenden drei Methoden zum Abrufen von Endpunkten für Metriken an. | |||
urls |
String | Durch Trennzeichen getrenntes Array | HTTP-Endpunkt (entweder IP-Adresse oder gültiger URL-Pfad angegeben). Beispiel: urls=[$NODE_IP/metrics] . („$NODE_IP“ ist ein spezifischer Container Insights-Parameter und kann anstelle der Knoten-IP-Adresse verwendet werden. Er darf nur Großbuchstaben enthalten.) |
|
kubernetes_services |
String | Durch Trennzeichen getrenntes Array | Ein Array von Kubernetes Services zum Abrufen von Metriken aus „kube-state-metrics“. Hier müssen vollqualifizierte Domänennamen verwendet werden. Beispiel: kubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics] |
|
monitor_kubernetes_pods |
Boolean | true oder false | Wenn die Option in den clusterweiten Einstellungen auf true festgelegt ist, ruft der Container Insights-Agent aus dem gesamten Cluster für die folgenden Prometheus-Anmerkungen Kubernetes-Pods ab:prometheus.io/scrape: prometheus.io/scheme: prometheus.io/path: prometheus.io/port: |
|
prometheus.io/scrape |
Boolean | true oder false | Aktiviert das Scraping des Pods und monitor_kubernetes_pods muss auf true festgelegt werden. |
|
prometheus.io/scheme |
String | http | Entspricht standardmäßig Scraping über HTTP. | |
prometheus.io/path |
String | Durch Trennzeichen getrenntes Array | Der HTTP-Ressourcenpfad, von dem Metriken abgerufen werden sollen. Wenn der Metrikpfad nicht /metrics lautet, definieren Sie ihn mit dieser Anmerkung. |
|
prometheus.io/port |
String | 9102 | Geben Sie einen Port an, von dem abgerufen werden soll. Wenn der Port nicht festgelegt ist, wird standardmäßig 9102 verwendet. | |
monitor_kubernetes_pods_namespaces |
String | Durch Trennzeichen getrenntes Array | Eine Positivliste der Namespaces zum Abrufen von Metriken von Kubernetes-Pods. Zum Beispiel, monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"] |
|
Knotenweit | urls |
String | Durch Trennzeichen getrenntes Array | HTTP-Endpunkt (entweder IP-Adresse oder gültiger URL-Pfad angegeben). Beispiel: urls=[$NODE_IP/metrics] . („$NODE_IP“ ist ein spezifischer Container Insights-Parameter und kann anstelle der Knoten-IP-Adresse verwendet werden. Er darf nur Großbuchstaben enthalten.) |
Knotenweit oder clusterweit | interval |
String | 60s | Der Standardwert für das Sammlungsintervall ist eine Minute (60 Sekunden). Sie können die Sammlung entweder für [prometheus_data_collection_settings.node] und/oder für [prometheus_data_collection_settings.cluster] in Zeiteinheiten wie s, m und h ändern. |
Knotenweit oder clusterweit | fieldpass fielddrop |
String | Durch Trennzeichen getrenntes Array | Sie können bestimmte Metriken angeben, die vom Endpunkt erfasst werden sollen oder nicht, indem Sie die Zulassungs- (fieldpass ) und Sperrauflistung (fielddrop ) festlegen. Sie müssen zunächst die Positivliste festlegen. |
Konfigurieren von ConfigMaps zum Angeben der Prometheus-Scrapekonfiguration (für als Protokolle gespeicherte Metriken)
Führen Sie die folgenden Schritte aus, um Ihre ConfigMap-Konfigurationsdatei für Ihren Cluster zu konfigurieren. ConfigMaps ist eine globale Liste, und es kann nur eine ConfigMap auf den Agent angewendet werden. Es kann keine andere ConfigMaps vorhanden sein, die die Sammlungen außer Kraft setzt.
Laden Sie die YAML-Vorlagendatei für ConfigMap herunter und speichern Sie sie unter container-azm-ms-agentconfig.yaml. Wenn Sie bereits eine ConfigMap in Ihrem Cluster bereitgestellt haben und sie mit einer neueren Konfiguration aktualisieren möchten, können Sie die zuvor verwendete ConfigMap-Datei bearbeiten.
Passen Sie die ConfigMap YAML-Datei für das Auslesen von Prometheus-Metriken wie gewünscht an.
Zum Sammeln von Kubernetes-Diensten für den gesamten Cluster konfigurieren Sie die ConfigMap-Datei anhand des folgenden Beispiels:
prometheus-data-collection-settings: |- # Custom Prometheus metrics data collection settings [prometheus_data_collection_settings.cluster] interval = "1m" ## Valid time units are s, m, h. fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
Führen Sie den folgenden kubectl-Befehl aus:
kubectl apply -f <configmap_yaml_file.yaml>
.Beispiel:
kubectl apply -f container-azm-ms-agentconfig.yaml
.
Die Änderung der Konfiguration kann einige Minuten dauern, bevor sie wirksam wird. Alle ama-logs-Pods im Cluster werden neu gestartet. Wenn die Neustarts abgeschlossen sind, wird eine Meldung angezeigt, die der folgenden ähnelt und das Ergebnis configmap "container-azm-ms-agentconfig" created
enthält.
Überprüfen der Konfiguration
Verwenden Sie den folgenden Befehl zum Überprüfen der Protokolle aus einem Agent-Pod, um sich zu vergewissern, dass die Konfiguration erfolgreich auf einen Cluster angewandt wurde: kubectl logs ama-logs-fdf58 -n=kube-system
.
Bei Konfigurationsfehlern aus den Azure Monitor-Agent-Pods werden in der Ausgabe Fehler ähnlich dem folgenden Beispiel angezeigt:
***************Start Config Processing********************
config::unsupported/missing config schema version - 'v21' , using defaults
Fehler im Zusammenhang mit der Anwendung von Konfigurationsänderungen können ebenfalls überprüft werden. Die folgenden Optionen stehen zur zusätzlichen Problembehandlung bei Konfigurationsänderungen und dem Abrufen von Prometheus-Metriken zur Verfügung:
In einem Agent-Pod-Protokoll mithilfe desselben
kubectl logs
-Befehls.Aus Livedaten. In Livedatenprotokollen werden ähnliche Fehler wie im folgenden Beispiel angezeigt:
2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
In der Tabelle KubeMonAgentEvents in Ihrem Log Analytics Arbeitsbereich. Die Daten werden stündlich mit dem Schweregrad Warnung für Abruffehler und dem Schweregrad Fehler für Konfigurationsfehler gesendet. Wenn keine Fehler vorliegen, enthält der Tabelleneintrag Daten mit dem Schweregrad Info, der Fehlerfreiheit angibt. Die Tags-Eigenschaft enthält weitere Informationen zum Pod und der Container-ID, für die der Fehler aufgetreten ist, sowie zum ersten Vorkommen, zum letzten Vorkommen und zur Anzahl in der letzten Stunde.
Überprüfen Sie bei Azure Red Hat OpenShift v3.x und v4.x die Azure Monitor-Agent-Protokolle, indem Sie die Tabelle ContainerLog durchsuchen, um zu überprüfen, ob die Protokollsammlung von „openshift-azure-logging“ aktiviert ist.
Fehler verhindern die Analyse der Datei durch den Azure Monitor-Agent, weshalb ein Neustart erfolgt und die Standardkonfiguration verwendet wird. Nachdem Sie für andere Cluster als Azure Red Hat OpenShift v3.x die Fehler in der ConfigMap korrigiert haben, speichern Sie die YAML-Datei, und führen Sie die aktualisierte ConfigMap mit dem Befehl kubectl apply -f <configmap_yaml_file.yaml
aus.
Im Fall von Azure Red Hat OpenShift v3.x bearbeiten und speichern Sie die aktualisierte ConfigMap, indem Sie den Befehl oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging
ausführen.
Abfragen von Prometheus-Metrikdaten
Weitere Informationen zum Anzeigen von Prometheus-Metriken, die von Azure Monitor abgerufen wurden, und vom Agent gemeldeten Konfigurations-/Scraping-Fehlern finden Sie unter Abfragen von Prometheus-Metrikdaten.
Anzeigen von Prometheus-Metriken in Grafana
Container Insights unterstützt das Anzeigen von Metriken, die in Ihrem Log Analytics Arbeitsbereich in Grafana-Dashboards gespeichert sind. Wir haben eine Vorlage bereitgestellt, die Sie aus dem Dashboard-Repository von Grafana herunterladen können. Verwenden Sie die Vorlage für die ersten Schritte und verweisen Sie darauf, um zu lernen, wie Sie andere Daten aus Ihren überwachten Clustern abfragen können, um in benutzerdefinierten Grafana-Dashboards zu visualisieren.