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 Discovery-Regel 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 Reihennummer 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" gibt es nur unter Windows */
},
{
"{#CPU.NUMBER}": 3,
"{#CPU.STATUS}": "online"
}
]
Beachten Sie, dass keine klare 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 auch einen dritten Wert darstellen – "unknown" –, was darauf hinweist, dass ein Prozessor erkannt wurde, für ihn jedoch noch keine Informationen erfasst wurden.
Die CPU-Erkennung stützt sich auf den Collector-Prozess des Agent, um mit den vom Collector bereitgestellten Daten konsistent zu bleiben und Ressourcen bei der Datenermittlung zu sparen. Dies führt dazu, dass dieser Datenpunktschlüssel nicht mit dem Kommandozeilen-Flag (-t) der Agent-Binärdatei funktioniert; stattdessen wird der Status NOT_SUPPORTED zusammen mit einer Meldung zurückgegeben, die angibt, dass der Collector-Prozess nicht gestartet wurde.
Datenpunkt-Prototypen, 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.