Freigeben über


Auslesen von Prometheus-Metriken im großen Umfang in Azure Monitor

Dieser Artikel bietet einen Leitfaden zur Leistung, die bei der Sammlung von Metriken im großen Umfang für den verwalteten Azure Monitor-Dienst für Prometheus erzielt werden kann.

CPU und Arbeitsspeicher

Die CPU- und Speicherauslastung korreliert mit der Anzahl der Bytes jeder Stichprobe und der Anzahl ausgelesener Stichproben. Diese Benchmarks basieren auf den ausgelesenen Standardzielen, dem Volumen der ausgelesenen benutzerdefinierten Metriken und der Anzahl von Knoten, Pods und Containern. Diese Zahlen sind als Anhaltspunkte zu verstehen, da die Auslastung je nach Anzahl der Zeitreihen und Bytes pro Metrik erheblich variieren kann.

Die Volumenobergrenze pro Pod liegt derzeit bei etwa 3–3,5 Millionen Stichproben pro Minute, je nach Anzahl der Bytes pro Stichprobe. Diese Einschränkung wird behoben, wenn Sharding demnächst hinzugefügt wird.

Der Agent besteht aus einer Bereitstellung mit einem Replikat und DaemonSet für das Auslesen von Metriken. Das DaemonSet liest alle Ziele auf Knotenebene aus, wie cAdvisor, Kubelet und Node-Exporter. Sie können die Konfiguration auch ändern, sodass alle benutzerdefinierten Ziele auf Knotenebene mit statischen Konfigurationen ausgelesen werden. Die Replikatgruppe liest alle anderen Daten aus, z. B. kube-state-metrics oder benutzerdefinierte Ausleseaufträge, die die Dienstermittlung nutzen.

Vergleich zwischen kleinen und großen Clustern für Replikate

Ausleseziele Gesendete Stichproben/Minute Anzahl von Knoten Podanzahl Prometheus-Collector: CPU-Auslastung (Kerne) Prometheus-Collector: Speicherauslastung (Bytes)
Standardziele 11.344 3 40 12,9 mc 148 Mi
Standardziele 260.000 340 13.000 1,10 c 1,70 GB
Standardziele
+ benutzerdefinierte Ziele
3,56 Mio. 340 13.000 5,13 c 9,52 GB

Vergleich zwischen kleinen und großen Clustern für DeamonSets

Ausleseziele Gesendete Stichproben/Minute insgesamt Gesendete Stichproben/Minute/Pod Anzahl von Knoten Podanzahl Prometheus-Collector: CPU-Auslastung insgesamt (Kerne) Prometheus-Collector: Speicherauslastung insgesamt (Bytes) Prometheus-Collector: CPU-Auslastung/Pod (Kerne) Prometheus-Collector: Speicherauslastung/Pod (Bytes)
Standardziele 9.858 3.327 3 40 41,9 mc 581 Mi 14,7 mc 189 Mi
Standardziele 2,3 Mio. 14\.400 340 13.000 805 mc 305,34 GB 2,36 mc 898 Mi

Bei weiteren benutzerdefinierten Metriken verhält sich der einzelne Pod abhängig vom Volumen der benutzerdefinierten Metriken genauso wie der Replikatpod.

Planen eines ama-metrics-Replikatpods für einen Knotenpool mit weiteren Ressourcen

Eine große Anzahl von Metriken pro Pod benötigt einen Knoten mit ausreichend CPU und Arbeitsspeicher. Wenn der Replikatpod ama-metrics nicht für einen Knoten- oder Knotenpool mit ausreichend Ressourcen geplant ist, wird möglicherweise OOMKilled angewendet, und er wechselt in CrashLoopBackoff. Um dies zu beheben, können Sie einem Knoten- oder Knotenpool in Ihrem Cluster mit mehr Ressourcen die Bezeichnung azuremonitor/metrics.replica.preferred=true hinzufügen (im Systemknotenpool). Dadurch wird sichergestellt, dass der Replikatpod auf diesem Knoten geplant wird. Sie können auch zusätzliche Systempools mit größeren Knoten erstellen und dieselbe Bezeichnung hinzufügen. Es ist besser, Knotenpools anstelle einzelner Knoten zu bezeichnen, damit neue Knoten im Pool auch für die Planung verwendet werden können.

kubectl label nodes <node-name> azuremonitor/metrics.replica.preferred="true"

Nächste Schritte