web-dev-qa-db-ja.com

Nagios構成構文:1行に複数のディレクティブ?

Nagios 3(Icinga 1、実際)構成の大きな揮発性部分は次のようになります。

...
define Host{
    Host_name   bla0037
    use         template-bla
}

define Host{
    Host_name   bla0042
    use         template-bla
}
...

次のように、ホスト定義を1行にまとめることができれば、スクリプトによる管理ははるかに簡単になります。

...
define Host{ Host_name bla0037;  use template-bla }
define Host{ Host_name bla0042;  use template-bla }
...

しかし、私はまだその方法を知りませんでした。 (たとえば、セミコロンは行の残りの部分をコメントにします)。アイデア?

(小さなHost-bla0XYZ.cfgファイルをたくさん生成することも自動化に役立ちますが、conf dirsを乱雑にしたくありません)。

1
Nils Toedtmann

いいえ、これはできません。構成ファイルパーサーは、一度に1行を読み取り、1行に1つのディレクティブを想定しています。これを行うには、xodtemplate.cのパーサーを大幅に変更する必要があります。

パーサーの唯一の特別な例外は、;または#(コメント)と\(長い行を複数の行に分割する)です。

私があなたが望むことをするために考えることができる唯一の方法は、管理システムの出力で\nの代用としていくつかの異なる区切り文字を使用し、その後後処理することです(たとえば、sed -e) Nagios/Icinga上のこれらのファイルは構成ファイルで終わります。

たとえば、initスクリプトを変更して、すべてのリロード/ HUPの前に後処理ジョブを実行できます。これは醜いハックになりますが、うまくいく可能性があります。

2
Keith

Icingaを使用しているとのことですが。最新のIcinga2を使用している場合、構成形式はセミコロンを介した単一行の定義をサポートします。 ansibleでプロビジョニングするときに新しいサービスを追加するために、自分のセットアップでこれを行います。例えば.

apply Service "freshness_etl_vendor_import_6am" to Host { import "etl-freshness-service" ; vars.dependens_on_job = "etl_vendor_import_6am" ; assign where "etl_Host" in Host.groups }

ドキュメントの詳細については、 ここ を参照してください。 icinga2を使用していて、それが機能しない場合は、他のフォーマットの問題が発生している可能性があります。

3
Jon