Odkrywanie procesorów i rdzeni procesora

W podobny sposób, jak są odkrywane systemy plików, można również odkrywać procesory i rdzenie procesora.

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 porządkowy procesora i jego status. 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 pamiętać, że nie można jednoznacznie odróżnić rzeczywistych procesorów fizycznych, rdzeni i wątków logicznych. {#CPU.STATUS} w systemach Linux, UNIX i BSD zwraca status 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 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 pozycji nie działa z testowym przełącznikiem wiersza poleceń -t binarnego pliku 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, w zależności od liczby grup procesorów i liczby procesorów.

Istnieje również rzadki błąd związany z grupami procesorów w systemie Windows.