3 Wykrywanie procesorów CPU i rdzeni CPU

Podobnie jak wykrywane są systemy plików, możliwe jest również wykrywanie procesorów CPU i rdzeni CPU.

Klucz pozycji

Klucz pozycji używany w regule odkrywania to

system.cpu.discovery

Obsługiwane makra

Ten klucz wykrywania zwraca dwa makra - {#CPU.NUMBER} oraz {#CPU.STATUS}, identyfikujące odpowiednio numer porządkowy CPU i jego stan. Wylicza procesory od 0 do N - 1, gdzie N jest całkowitą liczbą procesorów.

[
    {
        "{#CPU.NUMBER}": 0,
        "{#CPU.STATUS}": "online"
    },
    {
        "{#CPU.NUMBER}": 1,
        "{#CPU.STATUS}": "offline"
    },
    {
        "{#CPU.NUMBER}": 2,
        "{#CPU.STATUS}": "unknown" /* "unknown" występuje tylko w systemie Windows */
    },
    {
        "{#CPU.NUMBER}": 3,
        "{#CPU.STATUS}": "online"
    }
]

Należy pamiętać, że nie da się jednoznacznie rozróżnić rzeczywistych, fizycznych procesorów, rdzeni i wątków hyper-threading. {#CPU.STATUS} w systemach Linux, UNIX i BSD zwraca stan procesora, który może mieć wartość "online" lub "offline". W systemach Windows to samo makro może przyjmować trzecią wartość - "unknown" - co oznacza, że procesor został wykryty, ale nie zebrano jeszcze o nim żadnych informacji.

Wykrywanie CPU opiera się na procesie collectora agenta, aby zachować spójność z danymi dostarczanymi przez collector i oszczędzać zasoby podczas pozyskiwania danych. Powoduje to, że ten klucz pozycji nie działa z flagą wiersza poleceń test (-t) pliku binarnego agenta, która zwróci stan NOT_SUPPORTED wraz z komunikatem informującym, że proces collectora nie został uruchomiony.

Prototypy pozycji, które można utworzyć na podstawie wykrywania CPU, obejmują na przykład:

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

Szczegółowy opis kluczy pozycji można znaleźć w sekcji klucze pozycji agenta Zabbix.

Uwagi dotyczące wykrytych pozycji liczników wydajności w systemach NUMA

Niektóre liczniki wydajności Windows mogą nie być dostępne dla części procesorów logicznych w systemach NUMA.

Na przykład pozycje wykryte za pomocą prototypu pozycji z poniższym kluczem mogą działać tylko dla pierwszego węzła NUMA. Pozycje dla pozostałych węzłów NUMA mogą być w stanie nieobsługiwanym.

perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]

Ponadto reguła wykrywania z kluczem "system.cpu.discovery" nie dostarcza żadnych wartości makr wykrywania niskiego poziomu, które można by podstawić do takich liczników wydajności jak:

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

Natomiast pozycje system.cpu.util opierają się na innych licznikach wydajności do monitorowania procentowego wykorzystania CPU, w zależności od liczby grup procesorów i liczby procesorów. Występuje również rzadki błąd związany z grupami procesorów w Windows.