【问题标题】:Nagios Plugin: Wildcard for nagios-http-json keysNagios 插件:nagios-http-json 键的通配符
【发布时间】:2017-07-18 05:31:08
【问题描述】:

希望使用 nagios 插件 nagios-http-json https://github.com/drewkerrigan/nagios-http-json 来检查 json 响应。

有一个例子(我稍作修改):

Data for keys ring_members(0).numberToCheck, ring_members(1).numberToCheck, ring_members(2).numberToCheck:
{
    "ring_members": [
        {"numberToCheck": "10"},
        {"numberToCheck": "20"},
        {"numberToCheck": "30"}
    ]
}

如果我想检查响应数组中的第一个元素,我可以这样写:

plugins/check_http_json.py .... -w ring_members(0).numberToCheck,@20:

检查 ring_members 位置 0 键 numberToChecks 值是否大于或等于 20,如果为真则标记警告。

我可以重复-w ring_members(0).numberToCheck,@20: ring_members(1).numberToCheck,@20: ... 来检查所有值。

但是,当 ring_members 的长度未知时,是否可以检查 ring_members 的每个位置?

【问题讨论】:

    标签: json nagios


    【解决方案1】:

    我最终修改了插件check_http_json.py,并为“%all”而不是索引位置添加了自定义检查:

        def gte(self, key, value):
        if '(%all)' in key:
            array_key = key.split('(%all)')[0]
            array_full = self.get(array_key)
            for item in array_full:
                if float(item['numberToCheck']) >= float(value):
                    return True
            return False
        return self.exists(key) and float(self.get(key)) >= float(value)
    

    然后传递以下内容,plugins/check_http_json.py ... -w ring_members(%all),@20:

    @20: 是 gte -> 大于或等于。

    通过检查 ring_members(0 - ring_members.length-1).numberToCheck >= 20 得到此结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      相关资源
      最近更新 更多