Обнаружение CPU и ядер CPU

Аналогично тому, как обнаруживаются файловые системы, можно также обнаруживать CPU и ядра CPU.

Ключ элемента данных

Чтобы настроить правило обнаружения, используйте ключ элемента данных агента Zabbix system.cpu.discovery.

Поддерживаемые макросы

Этот ключ обнаружения возвращает два макроса - {#CPU.NUMBER} и {#CPU.STATUS}, которые соответственно определяют порядковый номер CPU и его статус. Он перечисляет процессоры от 0 до N - 1, где N - общее количество процессоров.

[
    {
        "{#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"
    }
]

Обратите внимание, что нельзя провести четкое различие между фактическими физическими процессорами, ядрами и гиперпотоками. {#CPU.STATUS} в системах Linux, UNIX и BSD возвращает статус процессора, который может быть либо "online", либо "offline". В системах Windows этот же макрос может принимать третье значение - "unknown" - которое указывает, что процессор был обнаружен, но сведения о нем еще не были собраны.

Обнаружение CPU опирается на процесс сбора данных агента, чтобы оставаться согласованным с данными, предоставляемыми сборщиком, и экономить ресурсы на получение данных. Из-за этого ключ этого элемента данных не работает с тестовым флагом командной строки -t исполняемого файла агента, который вернет статус NOT_SUPPORTED и сопроводительное сообщение о том, что процесс сбора данных не был запущен.

Прототипы элементов данных, которые можно создать на основе обнаружения CPU, включают, например:

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

Подробное описание ключа элемента данных см. в разделе Ключи элементов данных агента Zabbix.

Примечания по элементам данных счетчиков производительности, обнаруженным на системах NUMA

Некоторые счетчики производительности Windows могут быть недоступны для некоторых логических процессоров в системах NUMA.

Например, элементы данных, обнаруженные с помощью прототипа элемента данных с ключом ниже, могут работать только для первого узла NUMA. Элементы данных для других узлов NUMA могут находиться в неподдерживаемом состоянии.

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

Кроме того, правило обнаружения с ключом "system.cpu.discovery" не предоставляет никаких значений макросов низкоуровневого обнаружения для подстановки в такие счетчики производительности, как:

perf_counter["\Processor Information(<индекс узла NUMA>,<индекс CPU в узле NUMA>)\% Processor Time",60]

В то же время элементы данных system.cpu.util используют разные счетчики производительности для мониторинга процента загрузки CPU в зависимости от количества групп процессоров и количества процессоров. Также существует редкая ошибка, связанная с группами процессоров в Windows.