3. Обнаружение 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 опирается на процесс сбора данных агента, чтобы оставаться согласованным с данными, предоставляемыми сборщиком, и экономить ресурсы на получение данных. Из-за этого ключ элемента данных не работает с флагом командной строки test (-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.