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

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

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

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

system.cpu.discovery

Этот элемент поддерживается, начиная с версии Zabbix агента 2.4.

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

Этот ключ обнаружения возвращает два макроса — {#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» только в 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},<тип>,<режим>]
  • system.hw.cpu[{#CPU.NUMBER},<инфо>]

Подробное описание ключа элемента данных см. в разделе ключи элементов данных агента 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.