Я пытаюсь получить метрики процесса Windows и сталкиваюсь с некоторыми трудностями. Для начала я создал новый шаблон, добавил правило обнаружения и назвал ключ win.process.metrics
Затем я создал двухэлементный прототип со следующим ключом.
Type Zabbix Agent(Active): win.process.metrics[{#PID}]
Type Dependent Item: win.process.metrics[{#PROCESSNAME}]
Я создал 2 макроса LLD для одного и того же
{#PROCESSNAME} = $.ProcessName
{#PID}=$.Id
Затем я создал пользовательский параметр в файле конфигурации zabbixAgent.
UserParameter=metric.process.discovery,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix Agent\scripts\ProcessMetrics.ps1"
Содержимое сценария PowerShell
Get-Process | Select ProcessName, Id, Description | ConvertTo-Json -Compress
Вот пример результата
[
{"ProcessName":"chrome","Id":1232,"Description":"G oogle Chrome"},
{"ProcessName":"chrome","Id":1500,"Description":"G oogle Chrome"}
]
Когда я включаю прототип элемента, я вижу, что данные поступают, однако для процесса PID я вижу item does allow parameters
ошибка
Я хотел бы знать, как я могу получить несколько пар ключ-значение, используя одно правило обнаружения. Возможно ли это во-первых?
Благодарим вас за руководство в решении этой проблемы.
Вы вызываете пользовательский параметр metric.process.discovery с [PID] в качестве параметра в каждом элементе, но вы не настраивали этот пользовательский параметр для работы с параметрами. Вы просто можете запустить metric.process.discovery БЕЗ параметров.
Что вы ожидаете получить от каждого товара?
Я бы попытался прекратить использовать пользовательский параметр, я достиг аналогичных результатов, включив удаленные команды и используя system.run в качестве основной части ключа, так что вам не нужно использовать пользовательские параметры, и вы можете добиться практически всего, вы только нужно быть осторожным, когда вы пытаетесь использовать команды в ключе, но есть некоторые рабочие операции. Не стесняйтесь задавать больше вопросов, я уже давно сталкиваюсь с такими проблемами.