3 Erkennung von CPUs und CPU-Kernen

Ähnlich wie Dateisysteme erkannt werden, ist es auch möglich, CPUs und CPU-Kerne zu erkennen.

Datenpunkt-Schlüssel

Um die Erkennungsregel zu konfigurieren, verwenden Sie den Zabbix-Agent-Datenpunkt-Schlüssel system.cpu.discovery.

Unterstützte Makros

Dieser Discovery-Schlüssel gibt zwei Makros zurück - {#CPU.NUMBER} und {#CPU.STATUS} -, die die CPU-Nummer bzw. den Status identifizieren. Er zählt Prozessoren von 0 bis N - 1 auf, wobei N die Gesamtanzahl 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 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 dieses Makro zusätzlich einen dritten Wert - "unknown" - zurückgeben, der darauf hinweist, dass ein Prozessor erkannt wurde, für ihn jedoch noch keine Informationen gesammelt wurden.

Die CPU-Discovery stützt sich auf den Collector-Prozess des Agenten, um mit den vom Collector bereitgestellten Daten konsistent zu bleiben und Ressourcen für die Datenerfassung zu sparen. Dadurch funktioniert dieser Datenpunktschlüssel nicht mit dem Befehlszeilen-Flag -t der Agent-Binärdatei; stattdessen wird der Status NOT_SUPPORTED zurückgegeben sowie eine zugehörige Meldung, die darauf hinweist, dass der Collector-Prozess nicht gestartet wurde.

Datenpunktprototypen, die auf Grundlage der CPU-Discovery erstellt werden können, sind beispielsweise:

  • system.cpu.util[{#CPU.NUMBER},<type>,<mode>]
  • system.hw.cpu[{#CPU.NUMBER},<info>]

Eine detaillierte Beschreibung des Datenpunktschlüssels finden Sie unter Zabbix agent item keys.

Hinweise zu erkannten Performance-Counter-Datenpunkten auf NUMA-Systemen

Einige Windows-Performance-Counter sind auf NUMA-Systemen möglicherweise für einige der logischen Prozessoren nicht verfügbar.

Beispielsweise funktionieren Datenpunkte, die mit einem Datenpunkt-Prototypen mit dem folgenden Schlüssel erkannt wurden, 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 stellt eine Erkennungsregel mit dem Schlüssel "system.cpu.discovery" keine Low-Level-Discovery-Makrowerte bereit, um sie in solche Performance-Counter einzusetzen wie:

perf_counter["\Processor Information(<NUMA node index>,<CPU index in NUMA node>)\% Processor Time",60]

Während system.cpu.util-Datenpunkte auf unterschiedliche Performance-Counter angewiesen sind, um die CPU-Auslastung in Prozent zu überwachen, abhängig von der Anzahl der Prozessorguppen und der Prozessoranzahl. Außerdem gibt es einen seltenen Fehler im Zusammenhang mit Prozessorguppen unter Windows.