2017-07-18 78 views
0

尋找使用nagios插件nagios-http-json https://github.com/drewkerrigan/nagios-http-json來檢查json響應。Nagios插件:nagios-http-json密鑰的通配符

有一個例子(I稍微修改):

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 key numberToChecks值大於或等於20,並且如果爲true則標記警告。

我可以重複-w ring_members(0).numberToCheck,@20: ring_members(1).numberToCheck,@20: ...來檢查所有的值。

然而,當ring_members的長度未知時,是否可以檢查ring_members的每個位置?

回答

1

我最後修改插件check_http_json.py,並添加自定義檢查爲 「%所有」,而不是指數的位置是:

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的結果