3 Erkennung von CPUs und CPU-Kernen
Ähnlich wie Dateisysteme erkannt werden, ist es auch möglich, CPUs und CPU-Kerne zu erkennen.
Datenpunktschlüssel
Der im Erkennungsregel zu verwendende Datenpunktschlüssel ist
system.cpu.discovery
Unterstützte Makros
Dieser Discovery-Schlüssel gibt zwei Makros zurück – {#CPU.NUMBER} und {#CPU.STATUS}, die jeweils die Reihenfolgennummer und den Status der CPU angeben. Er zählt Prozessoren von 0 bis N - 1 auf, wobei N die Gesamtzahl der Prozessoren ist.
[
{
"{#CPU.NUMBER}": 0,
"{#CPU.STATUS}": "online"
},
{
"{#CPU.NUMBER}": 1,
"{#CPU.STATUS}": "offline"
},
{
"{#CPU.NUMBER}": 2,
"{#CPU.STATUS}": "unknown" /* "unknown" is only on Windows */
},
{
"{#CPU.NUMBER}": 3,
"{#CPU.STATUS}": "online"
}
]
Beachten Sie, dass keine eindeutige Unterscheidung zwischen tatsächlichen, physischen Prozessoren, Kernen und Hyperthreads getroffen werden kann. {#CPU.STATUS} gibt auf Linux-, UNIX- und BSD-Systemen den Status des Prozessors zurück, der entweder "online" oder "offline" sein kann. Auf Windows-Systemen kann dasselbe Makro einen dritten Wert darstellen – "unknown" –, was bedeutet, dass ein Prozessor erkannt wurde, für ihn jedoch noch keine Informationen erfasst wurden.
Die CPU-Erkennung ist auf den Collector-Prozess des Agent angewiesen, um mit den vom Collector bereitgestellten Daten konsistent zu bleiben und Ressourcen bei der Datenermittlung zu sparen. Dies hat zur Folge, dass dieser Datenpunktschlüssel nicht mit dem Kommandozeilen-Flag (-t) der Agent-Binärdatei funktioniert; in diesem Fall wird der Status NOT_SUPPORTED zusammen mit einer Meldung zurückgegeben, die angibt, dass der Collector-Prozess nicht gestartet wurde.
Datenpunktprototypen, die auf Basis der CPU-Erkennung erstellt werden können, sind zum Beispiel:
system.cpu.util[{#CPU.NUMBER},<type>,<mode>]system.hw.cpu[{#CPU.NUMBER},<info>]
Eine detaillierte Beschreibung der Datenpunktschlüssel finden Sie unter Zabbix-Agent-Datenpunktschlüssel.
Hinweise zu erkannten Performance-Counter-Datenpunkten auf NUMA-Systemen
Einige Windows-Performance-Counter sind für einige der logischen Prozessoren auf NUMA-Systemen möglicherweise nicht verfügbar.
Zum Beispiel funktionieren Datenpunkte, die mit einem Datenpunktprototyp mit dem untenstehenden Schlüssel erkannt werden, möglicherweise nur für den ersten NUMA-Knoten. Datenpunkte für die anderen NUMA-Knoten können sich im nicht unterstützten Zustand befinden.
perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]
Außerdem liefert eine Discovery-Regel mit dem Schlüssel "system.cpu.discovery" keine Low-Level-Discovery-Makrowerte, die in Performance-Counter wie die folgenden eingesetzt werden könnten:
perf_counter["\Processor Information(<NUMA node index>,<CPU index in NUMA node>)\% Processor Time",60]
Während system.cpu.util-Datenpunkte je nach Anzahl der Prozessorgruppen und Anzahl der Prozessoren unterschiedliche Performance-Counter zur Überwachung der CPU-Auslastung in Prozent verwenden. Außerdem gibt es einen seltenen Bug im Zusammenhang mit Prozessorgruppen unter Windows.