Nagios 插件:nagios-http-json 键的通配符
Nagios Plugin: Wildcard for nagios-http-json keys
希望使用 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 的每个位置?
我最终修改了插件 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
结果
希望使用 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 的每个位置?
我最终修改了插件 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
结果