Назад | Перейти на главную страницу

Низкоуровневое обнаружение Zabbix - использование ЦП на процесс - два элемента с одинаковыми ключами

Я пытаюсь использовать Zabbix для мониторинга использования ЦП различными процессами на Windows Server. Процессы для мониторинга не определяются заранее. Я хочу использовать LLD для мониторинга трех основных процессов, требовательных к процессору.

В настоящее время я создал правило обнаружения, которое возвращает 3 самых требовательных к процессору процесса в данный момент, например:

{
   {
      "name":"DistributedCacheService",
      "value":"9238.09375"
   },
   {
      "name":"System",
      "value":"6649.234375"
   },
   {
      "name":"svchost",
      "value":"5224.40625"
   }
}

Затем я создал макросы, используя пути json и прототип элемента, и здесь у меня начались проблемы. Я использую ранее созданный макрос LLD для имени элемента, и я использую команду system.run для получения значения в ключевом поле. Предполагается, что имя элемента обрабатывает имя и ключ элемента, значение предполагает использование ЦП этим процессом. [введите описание изображения здесь] [1] [1]: https://i.stack.imgur.com/HuNbd.png

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

"Невозможно создать элемент: элемент с тем же ключом "system.run [powershell.exe -nolog -command" (Get-Process | Sort-Object CPU -desc | Select-Object -index 0 | Format-Table -Aut ...] " уже существует."

Во-первых, нет другого предмета с таким же ключом.

Во-вторых, когда мое правило обнаружения обнаружит другие процессы, нужно будет создать другие элементы с тем же ключом. Другие имена, но тот же ключ

Можно ли вообще с помощью LLD создавать процессы мониторинга загрузки ЦП? Я не хочу зацикливаться на предопределенных процессах, я хотел бы, чтобы они динамически добавлялись с помощью LLD.

Для каждого создаваемого вами элемента вам необходимо создать новый ключевой элемент, например get.top.proccess. [{# Name}]. Таким образом, каждый элемент имеет свой ключевой элемент, потому что переменная изменяется.

Zabbix требует, чтобы ключи были уникальными для одного хоста, поэтому вы столкнетесь с проблемами, когда существует более одного процесса с одинаковым именем, если вы храните процессы по имени (https://www.zabbix.com/documentation/current/manual/config/items/item)

Get-Process | sort "CPU" -Descending | select -First 3

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    117   247.48     170.53   3,682.67    2232   1 Minesweeper
     47   564.25     528.42   3,491.36   15768   1 calc
     33   126.67      93.09   1,179.27   12960   1 Minesweeper

Имена процессов не обязательно должны быть уникальными, поэтому Get-Process возвращает объекты с повторяющимися значениями ProcessName.

Можете добавить -Unique к select командлет для удаления дубликатов. Это может скрыть данные, которые вы хотите регистрировать.

Get-Process | sort "CPU" -Descending | select -First 3 -Unique

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    117   248.00     171.31   3,683.27    2232   1 Minesweeper
     47   563.74     527.91   3,491.36   15768   1 calc

Команда Zabbix, похоже, предоставила обходной путь для этой проблемы: https://support.zabbix.com/browse/ZBXNEXT-164

UserParameter=top,top -n 1 -b|head -20