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.