Nagios插件:Nagios http json密钥的通配符

Nagios插件:Nagios http json密钥的通配符,json,nagios,Json,Nagios,希望使用nagios插件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"},

希望使用nagios插件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_成员位置0键号检查值是否大于或等于20,如果为真,则标记警告

我可以重复-w ring_members0.numberToCheck,@20:ring_members1.numberToCheck,@20:。。。检查所有值


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

我最终修改了插件check\u http\u 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环_成员%all,@20:

@20:gte->大于或等于

这将导致检查环成员0-环成员。长度-1。数字检查>=20