オブジェクト定義の為の時間節約法

出典: Nagios 3翻訳プロジェクト Wiki

あるいは…「正気を保つ方法」

目次

序論

このドキュメンテーションは、どういったテンプレートベースのオブジェクト定義 があなたの正気を保つ手助けとなるのか、それらの隠された特徴をいくつか説明したいと思います。 あなたはなにが手助けとなる思いますか? あなたはいくつかのオブジェクト定義において複数のホスト名、または、ホストグループ名を指定した時、あなたは複数のホストかサービスにオブジェクト定義をコピーをすることが出来ます。 私はこれらによる様々なサポートが各タイプのオブジェクトをカバーすると思っています。手初めに、どのオブジェクトタイプが、表題のオブジェクト定義のための時間節約術をサポートするのかを以下に示します:

上に記載されていないオブジェクト・タイプ(すなわち、timeperiods、commandsなど)は私が説明しようとしている特徴をサポートしません。

正規表現マッチング

私が以下に出す例がオブジェクト名の"標準"マッチングです。そして、 use_regexp_matching無効化してください。

言うなれば、use_regexp_matchingコンフィグオプションを使用することによってオブジェクト名のために適切な正規表現をの使用が可能になります。 デフォルトでの正規表現マッチングは*, ?, +, または\.を含むオブジェクト名に限られます。 正規表現をすべてのオブジェクト名で使用したいなら、use_true_regexp_matchingコンフィグオプションを使用可能にしてください。 例えば(ホスト名、ホストグループ名、サービス名、およびサービスグループ名)などでも正規表現を使用できます。

注意: 正規表現マッチングを使用可にするときには注意してください--あなたはコンフィグファイルを変更しなければならないかもしれません、正規表現としてあなたが解釈したくない指示まで含めてしまう可能性があります! あなたはいったん設定について確かめ、問題がないか確認するべきです。


サービス定義

複数のホスト

複数のホストに同じサービスを割り当てたいなら、あなたは「ホストネーム」という指示で複数のホストを指定できます。以下での定義はHOST1から HOSTNをSOMESERVICEと呼ばれるサービスに設定します。 すべてSOMESERVICEサービスが設定されたインスタンスとなります。 (つまり、同じチェックコマンド、最大チェック設定、通知の待ち期間などが設定されます。)

	define service{
 
		host_name		HOST1,HOST2,HOST3,...,HOSTN
 
		service_description	SOMESERVICE
 
		他のサービスディレクティブ ...
 
		}

複数のホストグループのすべてのホスト

1ホストグループのすべてのホストに同じサービスを割り当てたいなら、あなたは、一つのサービス定義を作成すればよいのです。どのようにするかというと、 hostgroup_nameで、サービスを設定する為の1ホストグループの名前を指定できます。以下での定義はホストグループ HOSTGROUP1からHOSTGROUPNのメンバーであるすべてのホストにSOMESERVICEと呼ばれるサービスが設定されます。例ではすべてのホストグループにSOMESERVICEサービスが設定されています(つまり、同じチェックコマンド、最大チェック設定、通知の待ち期間などが設定されます。)

	define service{
 
		hostgroup_name		HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN
 
		service_description	SOMESERVICE
 
		他のサービスディレクティブ ...
 
		}


すべてのホスト

あなたの設定ファイルで定義されるすべてのホストへ同じサービスを割り当てたいなら、あなたはhost_nameでワイルドカードを使用すればよいのです。 以下での定義によりあなたの設定ファイルで定義されるすべてのホストへSOMESERVICEと呼ばれるサービスを割り当てることが出来ます。すべてSOMESERVICEサービスが設定されたインスタンスとなります。 (つまり、同じチェックコマンド、最大チェック設定、通知の待ち期間などが設定されます。)

	define service{
 
		host_name		*
 
		service_description	SOMESERVICE
 
		他のサービスディレクティブ ...
 
		}


ホストの除外

あなたが多数のホストおよびホストグループに同じサービスを設定し、何人かのホストを定義に入れないようにしたいなら、「!」という文字を行頭へ入力します。

	define service{
 
		host_name             HOST1,HOST2,!HOST3,!HOST4,...,HOSTN
 
		hostgroup_name                HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,...,HOSTGROUPN
 
		service_description   SOMESERVICE
 
		他のサービスディレクティブ ...
 
 		}
 


サービスエスカレーション定義

複数のホスト

複数のホストに割り当てられる同じ名前/記述のサービスのためのサービスエスカレーション を作成したいなら、あなたはhost_name設定で複数のホストを指定できます。以下での定義はHOSTNを通してSOMESERVICEと呼ばれる、サービスのためのサービスエスカレーションをホストHOST1に作成するでしょう。サービスエスカレーションのすべての例が同じでしょう(すなわち、同じコンタクトグループ、通知間隔などを持つ)。

	define serviceescalation{
 
		host_name		HOST1,HOST2,HOST3,...,HOSTN
 
 		service_description	SOMESERVICE
 
		他のエスカレーションディレクティブ ...
 
		}

複数のホストグループのすべてのホスト

もし、ひとつ以上のホストグループにおける全てのホストに割り当てられる同じ名前/説明のサービスのためのサービスエスカレーションを作成したいのなら、あなたはhostgroup_nameの設定を使用できます。以下での定義は、HOSTGROUPNを通してのhostgroups HOSTGROUP1のメンバーであるすべてのホストのSOMESERVICEと呼ばれているサービスのために、サービスエスカレーションをつくります。サービスエスカレーションのすべての例は、同一です(すなわち、同じコンタクトグループ、通知間隔などを持つ)。

	define serviceescalation{
 
		hostgroup_name		HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN
 
		service_description	SOMESERVICE
 
		他のエスカレーションディレクティブ ...
 
		}


全てのホスト

あなたが、あなたの構成ファイルで定義されるすべてのホストに割り当てられる同じ名前/説明のサービスのために同一のサービスエスカレーションを作成したいのなら、あなたは、host_nameの設定で、ワイルドカードを使うことができます。以下での定義は、あなたの構成ファイルで定められる全てのホストのSOMESERVICEと呼ばれているすべてのサービスのために、サービスエスカレーションを作成します。サービスエスカレーションのすべての例は、同一です(すなわち、同じコンタクトグループ、通知間隔などを持つ)。

	define serviceescalation{
 
		host_name		*
 
		service_description	SOMESERVICE
 
		他のエスカレーションディレクティブ ...
 
		}


ホストの除外

あなたが多数のホストまたはホストグループの上でサービスのために同一のサービスエスカレーションをつくるが、一部のホストを定義から除外したいならば、これは、ホストまたはホストグループに!シンボルが先行することによって果たされます。

	define serviceescalation{
 
		host_name             HOST1,HOST2,!HOST3,!HOST4,...,HOSTN
 
		hostgroup_name                HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,...,HOSTGROUPN
 
		service_description   SOMESERVICE
 
		他のエスカレーションディレクティブ ...
 
		}

同じホスト上の全てのサービス

特定のホストに割り当てられたすべてのサービスのためのサービスエスカレーションを作成したいなら、あなたはservice_description設定ににワイルドカードを使用できます。以下での定義は、ホストHOST1にすべてのサービスのためのサービスエスカレーションを作成します。サービスエスカレーションのすべての例が同じでしょう(すなわち、同じ連絡グループ、通知間隔などを持ってください)。

特に冒険したい気がするなら、あなたはhost_nameとservice_descriptionの設定の両方で、ワイルドカードを指定できます。そうする事で、あなたが構成ファイルで定義したすべてのサービスのためのサービスエスカレーションを作成出来ます。

	define serviceescalation{
 
		host_name		HOST1
 
		service_description	*
 
		他のエスカレーションディレクティブ ...
 
		}

複数のサービス上の同じホスト

特定のホストに割り当てられたすべての複数サービスのためのサービスエスカレーション を作成したいなら、あなたは、service_description設定における1つ以上のサービス記述を指定する事が出来ます。以下での定義は、ホストHOST1の上でSERVICENを通してサービス SERVICE1のためにサービスエスカレーションを作成します。サービスエスカレーションのすべての例は、同一です(すなわち、同じコンタクトグループ、通知間隔などを持つ)。

	define serviceescalation{
 
		host_name		HOST1
 
		service_description	SERVICE1,SERVICE2,...,SERVICEN
 
		他のエスカレーションディレクティブ ...
 
		}

複数のサービスグループでの全てのサービス

あなたが一つ以上のサービスグループに属する全てのサービスのためのサービスエスカレーションを作成したいなら、 servicegroup_name設定を使用出来ます。以下での定義は、SERVICEGROUPNを通してサービスグループSERVICEGROUP1のメンバーであるすべてのサービスのためにサービスエスカレーションを作成します。サービスエスカレーションのすべての例は、同一です(すなわち、同じコンタクトグループ、通知間隔などを持つ)。

	define serviceescalation{
 
		servicegroup_name		SERVICEGROUP1,SERVICEGROUP2,...,SERVICEGROUPN
 
		他のエスカレーションディレクティブ ...
 
		}


サービス依存定義

複数のホスト

もしも複数のホストに割り当てられる同じ名前/説明のサービスにサービス依存を作りたいならば、host_name and や dependent_host_name ディレクティブで複数のホストを指定することができます。 下記の例では、ホストHOST3とHOST4上のサービスSERVICE2はホストHOST1とHOST2のSERVICE1に依存します。全てのサービス依存は、ホスト名を除いて同じです。

	define servicedependency{
 
		host_name			HOST1,HOST2
 
		service_description		SERVICE1
 
		dependent_host_name		HOST3,HOST4
 
		dependent_service_description	SERVICE2
 
		他の依存ディレクティブ ...
 
		}


複数のホストグループの全てのホスト

もし1つ以上のホストグループで全てのホストに割り当てられる同じ名前/説明のサービスにサービス依存を作りたいならば、hostgroup_name やdependent_hostgroup_name ディレクティブを使います。 下記の例では、ホストグループHOSTGROUP3とHOSTGROUP4の全てのホスト上のサービスSERVICE2 は、ホストグループHOSTGROUP1とHOSTGROUP2の全てのホスト上のサービスSERVICE1に依存します。 それぞれのホストグループに5つのホストがあるならば、この定義は100の一つのサービス依存定義をつくるのと等しいでしょう!サービス依存のすべての例は、ホスト名を除いて同じです(すなわち、同じ通知失敗基、他を持ちます)。

	define servicedependency{
 
		hostgroup_name			HOSTGROUP1,HOSTGROUP2
 
		service_description		SERVICE1
 
		dependent_hostgroup_name	HOSTGROUP3,HOSTGROUP4
 
		dependent_service_description	SERVICE2
 
		他の依存ディレクティブ ...
 
		}

1つのホスト上のすべてのサービス

特定のホストに割り当てられるすべてのサービスのためにサービス依存をつくりたいならば、service_descriptionやdependent_service_description ディレクティブでワイルドカードを使うことができます。下記の例では、ホストHOST2の上のすべてのサービスは、ホストHOST1の上ですべてのサービスに依存しています。サービス依存のすべての例は同じです(すなわち、同じ通知失敗基準、他を持ちます)。

	define servicedependency{
 
		host_name			HOST1
 
		service_description		*
 
		dependent_host_name		HOST2
 
		dependent_service_description	*
 
		他の依存ディレクティブ ...
 
		}

1つのホスト上の複数のサービス

特定のホストに割り当てられる複数のサービスのためにサービス依存を作りたいならば、以下の通りにservice_descriptionやdependent_service_description ディレクティブで複数のサービス説明を指定することができます:

	define servicedependency{
 
		host_name			HOST1
 
		service_description		SERVICE1,SERVICE2,...,SERVICEN
 
		dependent_host_name		HOST2
 
		dependent_service_description	SERVICE1,SERVICE2,...,SERVICEN
 
		他の依存ディレクティブ ...
 
		}

複数のサービスグループのすべてのサービス

一つ以上のサービスグループに入るすべてのサービスのためにサービス依存を作りたいならば、以下の通りにservicegroup_nameやdependent_servicegroup_nameディレクティブを使用することができます:

	define servicedependency{
 
		servicegroup_name		SERVICEGROUP1,SERVICEGROUP2,...,SERVICEGROUPN
 
		dependent_servicegroup_name	SERVICEGROUP3,SERVICEGROUP4,...SERVICEGROUPN
 
		他の依存ディレクティブ ...
 
		}

同じホスト上での依存

同じホストでサービスに依存している複数のサービスのためにサービス依存をつくりたいならば、dependent_host_nameと dependent_hostgroup_name ディレクティブを空のままにしてください。下記の例では、HOST1とHOST2は少なくともこれら4つのサービスがあります:SERVICE1, SERVICE2, SERVICE3, そして SERVICE4。この例では、HOST1上のSERVICE3とSERVICE4はHOST1上のSERVICE1とSERVICE2の両方に依存します。同じように、HOST2上のSERVICE3とSERVICE4はHOST2上のSERVICE1とSERVICE2の両方に依存します。

	define servicedependency{
 
		host_name			HOST1,HOST2
 
		service_description		SERVICE1,SERVICE2
 
		dependent_service_description	SERVICE3,SERVICE4
 
		他の依存ディレクティブ ...
 
		}

ホストエスカレーション定義

複数のホスト

複数のホストのためにホストエスカレーションをつくりたいならば、host_name指令で複数のホストを指定することができます。下記の定義は、HOSTNを通してホストHOST1のためのホストエスカレーションをつくります。ホストエスカレーションのすべての例は、同じです(すなわち、同じ接触グループ、通知間隔、他を持つ)。

	define hostescalation{
 
		host_name		HOST1,HOST2,HOST3,...,HOSTN
 
		他のエスカレーションディレクティブ ...
 
		}

複数のホストグループのすべてのホスト

一つ以上のホストグループで中ですべてのホストのためにホストエスカレーションをつくりたいならば、hostgroup_name ディレクティブを使用します。下記の定義は、HOSTGROUPNを通してのホストグループ HOSTGROUP1のメンバーであるすべてのホストで、ホストエスカレーションを作ります。ホストエスカレーションのすべての例は、同じです(すなわち、同じ接触グループ、通知間隔、他を持つ)。

	define hostescalation{
 
		hostgroup_name		HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN
 
		他のエスカレーションディレクティブ ...
 
		}

全てのホスト

コンフィグレーションファイルで定められるすべてのホストのために同一のホストエスカレーションをつくりたいならば、host_nameディレクティブでワイルドカードを使うことができます。下記の定義は、コンフィグレーションファイルで定められるすべてのホストのために、ホストエスカレーションをつくります。ホストエスカレーションのすべての例は、同じです(すなわち、同じ接触グループ、通知間隔、他を持つ)。


	define hostescalation{
 
		host_name		*
 
		他のエスカレーションディレクティブ ...
 
		}

除外ホスト

多数のホストまたはホストグループ上で同じホストエスカレーションを作り、一部のホストを定義から除外したいのならば、これは !符号でホストまたはホストグループに先行することによって成し遂げることができます。

	define hostescalation{
 
		host_name             HOST1,HOST2,!HOST3,!HOST4,...,HOSTN
 
		hostgroup_name                HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,...,HOSTGROUPN
 
		他のエスカレーションディレクティブ ...
 
		}

ホスト依存定義

複数のホスト

複数のホストのためにホスト依存を作りたいならば、host_nameやdependent_host_nameディレクティブで複数のホストを指定することができます。下記の定義は、6つの別々のホスト依存をつくることに等しいです。この例では、ホストHOST3、HOST4とHOST5は、HOST1とHOST2に依存しています。ホスト依存のすべての例は、ホスト名(すなわち、同じ通知失敗基準、他を持ちます)を除いて同じです。

	define hostdependency{
 
		host_name		HOST1,HOST2
 
		dependent_host_name	HOST3,HOST4,HOST5
 
		他の依存ディレクティブ ...
 
		}

複数のホストグループのすべてのホスト

一つ以上のホストグループの中ですべてのホストのためにホストエスカレーションを作りたいならば、hostgroup_nameやdependent_hostgroup_nameディレクティブを使用にすることができます。下記の例で、ホストグループHOSTGROUP3とHOSTGROUP4のすべてのホストは、hostgroups HOSTGROUP1とHOSTGROUP2ですべてのホストに依存しています。ホスト依存のすべての例は、ホスト名(すなわち、同じ通知失敗基準、他を持ちます)を除いて同じです。

	define hostdependency{
 
		hostgroup_name			HOSTGROUP1,HOSTGROUP2
 
		dependent_hostgroup_name	HOSTGROUP3,HOSTGROUP4
 
		他の依存ディレクティブ ...
 
		}

ホストグループ

全てのホスト

コンフィグレーションファイルでメンバーと定義されるすべてのホストを持っているホストグループを作りたいならば、memberディレクティブでワイルドカードを使うことができます。下記の定義は、コンフィグレーションファイルでメンバーと定義されるすべてのホストを持っているHOSTGROUP1と呼ばれているホストグループを作ります。

	define hostgroup{
 
		hostgroup_name		HOSTGROUP1
 
		members			*
 
		他のホストグループディレクティブ ...
 
		}
個人用ツール