【问题标题】:Zabbix discovery rules - how to fill in key itemZabbix发现规则-如何填写key item
【发布时间】:2019-03-08 13:41:05
【问题描述】:

我是 Zabbix 的新手,我遇到了问题。 我在 power shell 中运行一个脚本并获取此示例数据:

{
        "data":[
                {
                        "{#BZSENDPORTNAME}":"Com_Onshore_SDE",
                        "{#BZSENDPORTSTATUS}":"3"},
                    {
                        "{#BZSENDPORTNAME}":"Com_Onshore_Backup",
                        "{#BZSENDPORTSTATUS}":"3"},
                    {
                        "{#BZSENDPORTNAME}":"Remit_ForecastMeter",
                        "{#BZSENDPORTSTATUS}":"3"}]}

这里只是一个示例,大约有 40 多对端口名称和端口状态。 我已经在 Zabbix 服务器中创建了一个发现规则,我希望它可以自动创建名称为 {#BZSENDPORTNAME} 且值为 {#BZSENDPORTSTATUS} 的项目。 例如:项目 Com_Onshore_SDE ; value = 3。我创建了一个发现here。 然后我得到这样的结果:

enter image description here

项目的名称是我所期望的,但键包含端口状态的值我希望端口状态是项目的值,而不是键。它还显示错误“项目不允许参数”。 Zabbix 代理配置文件为:UserParameter=custom.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -file "C:\Zabbix\Scripts\Get-BZSendMultiPortsInfo-test.ps1"

请帮我解决这个问题。非常感谢

【问题讨论】:

    标签: json key zabbix lld


    【解决方案1】:

    您应该在用户参数中使用 [*] 并将 $1 和 $2 添加到字符串末尾:

    UserParameter=custom.discovery[*],powershell.exe -NoProfile -ExecutionPolicy Bypass -file "C:\Zabbix\Scripts\Get-BZSendMultiPortsInfo-test.ps1" $1 $2
    

    【讨论】:

    • 你能再解释一下吗?
    • 这是来自官方文档的信息 灵活的用户参数 灵活的用户参数接受带有密钥的参数。这样,灵活的用户参数可以作为创建多个项目的基础。灵活的用户参数语法如下:UserParameter=key[*],command 你可以通过链接zabbix.com/documentation/3.0/manual/config/items/userparameters阅读
    • 我需要编辑我的脚本才能接受参数,对吧?
    • 谢谢,我已经这样做了,但我面临另一个问题:Zabbix 代理通常在执行脚本时超时;有时它会成功执行脚本并将数据发送到服务器,但大多数时候它会失败。请给我建议。 @tutunak
    • 该项目的最大超时为 30 秒,或者您可以在 cron 或自定义代理中使用陷阱和脚本
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    相关资源
    最近更新 更多