Teilen ü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. ReplicaSet 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

Ein hohes Metrikvolumen pro Pod erfordert einen ausreichend großen Knoten, um die erforderliche CPU- und Speicherauslastung zu bewältigen. Wenn der ama-metrics-Replikatpod nicht für einen Knoten oder einen Knotenpool geplant wird, der über genügend Ressourcen verfügt, tritt möglicherweise wiederholt ein OOMKilled-Fehler mit anschließendem CrashLoopBackoff auf. So beheben Sie dieses Problem: Wenn Sie über einen Knoten oder einen Knotenpool in Ihrem Cluster verfügen, der mehr Ressourcen umfasst (im Knotenpool des Systems) und das Replikat für diesen Knoten planen möchten, können Sie dem Knoten die Bezeichnung azuremonitor/metrics.replica.preferred=true hinzufügen. Anschließend wird der Replikatpod für diesen Knoten geplant. Außerdem können Sie bei Bedarf zusätzliche Systempools mit größeren Knoten erstellen und deren Knoten oder Knotenpool die gleiche Bezeichnung hinzufügen. Es ist auch besser, Bezeichnungen zu einem Knotenpool anstatt zu Knoten hinzuzufügen, damit neuere Knoten im selben Pool auch für die Planung verwendet werden können, wenn diese Bezeichnung für alle Knoten im Pool gilt.

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

Nächste Schritte