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
Aby skonfigurować regułę wykrywania, użyj klucza pozycji agenta Zabbix system.cpu.discovery.
Obsługiwane makra
Ten klucz wykrywania zwraca dwa makra - {#CPU.NUMBER} i {#CPU.STATUS} - identyfikujące odpowiednio numer kolejny CPU oraz jego stan.
Wylicza procesory od 0 do N - 1, gdzie N jest łączną liczbą procesorów.
[
{
"{#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"
}
]
Należy zauważyć, że nie można jednoznacznie rozróżnić rzeczywistych, fizycznych
procesorów, rdzeni i hyperthreadów. {#CPU.STATUS} w systemach Linux, UNIX i
BSD zwraca stan procesora, który może być albo
"online", albo "offline". W systemach Windows to samo makro może przyjmować
trzecią wartość - "unknown" - która oznacza, że procesor został
wykryty, ale nie zebrano jeszcze dla niego żadnych informacji.
Wykrywanie CPU opiera się na procesie zbierającym agenta, aby zachować spójność z danymi dostarczanymi przez collector i oszczędzać zasoby podczas pobierania danych. Ma to taki skutek, że ten klucz pozycja nie działa z przełącznikiem wiersza poleceń test (-t) pliku binarnego agenta, który zwróci status NOT_SUPPORTED oraz towarzyszący mu komunikat wskazujący, że proces collector 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 klucza pozycji znajduje się w sekcji klucze pozycji agenta Zabbix.
Uwagi dotyczące wykrytych pozycji liczników wydajności na systemach NUMA
Niektóre liczniki wydajności systemu Windows mogą być niedostę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ą mieć stan nieobsługiwany.
perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]
Ponadto reguła wykrywania z kluczem "system.cpu.discovery" nie udostępnia żadnych wartości makr wykrywania niskiego poziomu do podstawienia w takich licznikach 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 różnych licznikach wydajności
do monitorowania procentowego użycia CPU, zależnie od liczby grup procesorów i liczby procesorów.
Istnieje też rzadki błąd związany z grupami procesorów w systemie Windows.