我正在尝试获取 Windows 进程指标,但遇到了一些困难。首先,我创建了一个新模板,添加了一个发现规则,并将密钥命名为胜利过程指标
然后我使用以下键创建了2个项目原型。
Type Zabbix Agent(Active): win.process.metrics[{#PID}]
Type Dependent Item: win.process.metrics[{#PROCESSNAME}]
我为同一个创建了 2 个 LLD 宏
{#PROCESSNAME} = $.ProcessName
{#PID}=$.Id
然后我在 zabbixAgent conf 文件中创建了用户参数
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
错误
我想知道如何使用一个发现规则提取多个键值对。首先这可能吗?
感谢您对解决此问题的指导。
答案1
我会尝试停止使用用户参数,我通过启用远程命令并使用 system.run 作为密钥的主要部分取得了类似的结果,这样您就不必使用用户参数,而且基本上可以实现任何目标,您只需要在尝试在密钥中使用命令时小心,但也有一些可用的解决方法。请随时提出更多问题,我已经处理这类问题有一段时间了。
答案2
您正在调用用户参数 metric.process.discovery,其中每个项目都使用 [PID] 作为参数,但您没有将此用户参数配置为使用参数。您只能运行不带参数的 metric.process.discovery。
您希望在每件物品中收到什么?