あなたのホストはカスタム属性「http_vhosts」をディクショナリとして定義していますが、それは決して使用されていません (そのディクショナリを繰り返し処理し、サービス オブジェクトを生成するルール定義には適用されません)。
代わりに、サービス適用ルール (for ループなし) はサービス "httpS" を適用するだけです。誤ってホスト カスタム属性 "http_ssl" が設定されています - true と表示されるはずです 文字列としての数値の代わりにブール値として (これは常に真です)。
おそらく / だけでなく、複数の URI をチェックしたいでしょう。
私の提案 (2 つの解決策):
1) サービス適用ルールを修正し、ホスト オブジェクト定義から http_* カスタム属性を削除します。代わりに、サービス適用ルールに追加します:
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
http のコマンド パラメータとして使用されるすべてのカスタム属性を見つけることができます。 ドキュメントの CheckCommand:http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check-command-http
2) 代わりにサービス適用ルールを使用し、ホストで定義された http_vhosts 辞書をループします。
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
ここでの命名に注意してください。「https /」が生成されたサービス名になります。 http_ssl と http_uri は、http CheckCommand で必要なカスタム属性とまったく同じ名前です。
apply for ルール内で魔法が起こります。辞書キーはサービス名になります。ディクショナリの値はネストされたディクショナリで、キーとして http_uri と http_ssl が含まれています。例では「config」と呼ばれています。その構成辞書は「vars」属性とまったく同じ構造を持っているため、サービス適用内に追加して定義することができます。
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
icinga2 daemon -C を使用して構成を確認します 次に、生成されたサービス オブジェクトを調べて、生成されたカスタム属性を確認します (icinga2 オブジェクト リスト)。
1 つの良い点 - http_vhosts カスタム属性が定義されているすべてのホストは、これらのサービス オブジェクトを生成します。extea の「assign where」式は必要ありません (むしろ、例外に対して ignore where を追加することをお勧めします)。適切な戦略を使用すると、ルールを一度だけ適用し、将来的に一致するカスタム属性辞書を持つ新しいホストのみを追加します:-)
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for
ただし、ソリューション 2) には、icinga 2 構成言語とそのキーワード、値の型、手品に関する高度な知識が必要です。それでも、このような方法とベスト プラクティスは、ファイルの採用と変更に伴う長期的なメンテナンスを減らすのに役立つと考えています。
さらに進んで、ホスト名に基づいてさまざまなしきい値に if-else 条件を使用することもできます。または、関数を使用して、たとえば期間に基づいて動的しきい値を定義します。
私はグーグルで検索し、
でhttpコマンドを見つけました/usr/share/icinga2/include/command-plugins.conf
この例では、監視しようとしました https://mail.google.comBelow は /etc/icinga2/conf.d/hosts.conf
object Host "www.google.com" {
address = "74.125.136.84"
check_command = "http"
vars.http_vhost = "mail.google.com"
vars.http_ssl = "1"
}
icingaweb2 ダッシュボードでの表示は次のとおりです。
例2
object Host "secure.example.com" {
address = "14.28.83.22"
check_command = "http"
vars.http_vhosts["secure.example.com"] = {
http_uri = "/merchant/login.aspx"
}
vars.notification["mail"] = {
groups = [ "icingaadmins" ]
}
vars.http_ssl="1"
}