Я пытаюсь использовать 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