希望使用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,如果为true则标记警告。
我可以重复-w ring_members(0).numberToCheck,@20: ring_members(1).numberToCheck,@20: ...
来检查所有值。
但是,当ring_members的长度未知时,是否可以检查ring_members的每个位置?
答案 0 :(得分: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