1

ここでは、プラグインを使用して、サービスが実行されているかどうか、警告または重要なアクションが必要かどうか、同時にパフォーマンス パラメータをチェックしようとしています。

以下のプラグインを使用して、サーバーが稼働しているかどうかを確認し、パフォーマンス データ JSON を読み取りました https://github.com/drewkerrigan/nagios-http-json

http://localhost:8080/sample.jsonでホストされている以下のような 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です

コマンド.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$"
}
}

サービス.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 で複数の値を渡す方法を知っている人はいますか??

4

1 に答える 1

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 文字列内の項目を取得するには、さらに分割する必要がありました。

于 2016-06-09T09:49:44.840 に答える