[comment]: # ({c2b618f4-c2b618f4})
# 3. Обнаружение CPU и ядер CPU

Подобно тому как обнаруживаются [файловые системы](/manual/discovery/low_level_discovery#настройка-низкоуровневого-обнаружения), можно также обнаруживать CPU и ядра CPU.

[comment]: # ({/c2b618f4-c2b618f4})

[comment]: # ({3494efeb-3494efeb})
#### Ключ элемента данных

Ключ элемента данных для использования в [правиле обнаружения](/manual/discovery/low_level_discovery#правило-обнаружения):

    system.cpu.discovery

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

[comment]: # ({/3494efeb-3494efeb})

[comment]: # ({87cbe304-33246748})
#### Поддерживаемые макросы

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

```json
[
    {
        "{#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](/manual/config/items/itemtypes/zabbix_agent#поддерживаемые-ключи-элементов-данных).

[comment]: # ({/87cbe304-33246748})

[comment]: # ({d0e53ae2-ee436781})
#### Замечания об обнаруженных элементах данных счётчиков производительности в системах NUMA

Некоторые [счётчики производительности Windows](/manual/config/items/perfcounters) могут быть недоступны для некоторых логических процессоров в системах 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](/manual/appendix/items/system_cpu_util) полагаются на разные счётчики производительности для мониторинга процента использования CPU в зависимости от количества групп процессоров и количества процессоров.
Кроме того, существует редкая ошибка, связанная с [группами процессоров в Windows](/manual/installation/known_issues#win-proc-groups).

[comment]: # ({/d0e53ae2-ee436781})
