2016-06-08 42 views
1

在這裏,我試圖用一個插件來檢查服務是否運行與否多個值,如果有任何警告或所需的任何重要的操作,同時還有性能參數。我們如何提供一個參數無論是在services.conf或comands.conf

我們用下面的插件來檢查服務器是否活着還是不讀它的性能數據JSON https://github.com/drewkerrigan/nagios-http-json

我想讀一個JSON文件,如下這對http://localhost:8080/sample.json

的託管插件在命令行上完美運行,它向我展示了所有可用的度量標準。

$:/usr/lib/nagios/plugins$ ./check_http_json.py -H localhost:8080 -p sample.json -m metrics.etp_count metrics.atc_count 

OK: Status OK.|'metrics.etp_count'=101 'metrics.atc_count'=0 

但是當我嘗試在Icinga2配置相同,它不會告訴我這個性能指標,雖然它不給任何錯誤,但在同一時間,它不顯示任何值。

找到JSON,Command.conf和Service.conf,如下所示。

{ 
"metrics": { 
    "etp_count": "0", 
    "atc_count": "101", 
    "mean_time": -1.0, 
    } 
} 

下面是我commands.conf和services.conf

commands.conf

/* Json Read Command */ 
object CheckCommand "json_check"{ 
import "plugin-check-command" 
command = [PluginDir + "/check_http_json.py"] 
arguments = { 
"-H" = "$server_port$" 
"-p" = "$json_path$" 
"-w" = "$warning_value$" 
"-c" = "$critical_value$" 
"-m" = "$Metrics1$,$Metrics2$" 
} 
} 

services.conf

apply Service "json"{ 
     import "generic-service" 

     check_command = "json_check" 
     vars.server_port="localhost:8080" 
     vars.json_path="sample.json" 
     vars.warning_value="metrics.etp_count,1:100" 
     vars.critical_value="metrics.etp_count,101:1000" 
     vars.Metrics1="metrics.etp_count" 
     vars.Metrics2="metrics.atc_count" 

     assign where host.name == NodeName 
} 

沒有任何一個有任何我們怎麼能通過多重在Command.conf和Service.conf中的時間值?

回答

0

我已經解決了這個問題。

我不得不改變插件文件「check_http_json.py」爲下面的代碼

def checkMetrics(self): 
       """Return a Nagios specific performance metrics string given keys and parameter definitions""" 
       metrics = '' 
       warning = '' 
       critical = '' 
       if self.rules.metric_list != None: 

         for metric in self.rules.metric_list: 

替換

def checkMetrics(self): 
       """Return a Nagios specific performance metrics string given keys and parameter definitions""" 
       metrics = '' 
       warning = '' 
       critical = '' 
       if self.rules.metric_list != None: 

         for metric in self.rules.metric_list[0].split(): 

其實這個問題是在名單是不妥善處理,所以它不是能夠遍歷列表中的項目,由於services.config文件,它將其視爲單個字符串。

它必須進一步拆分才能獲取Metrics字符串中的項目。

相關問題