テンプレートベースを使用したオブジェクト定義による時間の節約

または...
"あなたの正気を保つ方法"


イントロダクション

このドキュメントではテンプレートベースオブジェクト定義の隠された特徴(の何か)をゲットしてあなたの正気を保つ方法について説明を試みています。いくつかのオブジェクトでは複数のホスト名やホストグループ名を1つの定義に含めることができます。つまり、ホストやサービスを「コピペ」できると言うことです。この機能に対応しているオブジェクトのタイプそれぞれについて説明していきます。まず始めに、この時間節約のTIPSが使えるオブジェクトタイプは次の通りです:

上にリストされていないオブジェクトタイプ(例えば、時間帯、コマンドなど)はこの機能に対応していません。

サービス

複数のホスト: もし複数のホストが同一のサービスがあるなら、次のようにhost_nameディレクティブに複数のホストを記述できます:

	define service{
		host_name		HOST1,HOST2,HOST3,...,HOSTN
		service_description	SOMESERVICE
		他のサービス定義 ...
		}

上の定義ではHOST1からHOSTNまでいずれもSOMESERVICEというサービスがあると言うことになります。SOMESERVICEに属しているすべてのホストが同一の定義を使用します(例:同じチェックコマンド、再試行回数、通知の時間帯など)。

複数のホストグループに全ホストを属させる: もし全ホストもしくは複数のホストグループに属した全ホストに同一のサービスがあるなら、同じように1つのサービス定義にまとめることができます。やりかた?それは次のようにサービス定義のhostgroup_nameにホストグループを書くことで可能です:

	define service{
		hostgroup_name		HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN
		service_description	SOMESERVICE
		他のサービス定義 ...
		}

上の例では、HOSTGROUP1 から HOSTGROUPNに属する全ホストが同一のSOMESERVICEを使用します。SOMESERVICEに属しているすべてのホストが同一の定義を使用します(例:同じチェックコマンド、再試行回数、通知の時間帯など)。

全ホスト: 設定ファイルに定義している全ホストに対して同一のサービスを作成したい場合は、次のようにhost_nameディレクティブにワイルドカードを使用することで可能です:

	define service{
		host_name		*
		service_description	SOMESERVICE
		他のサービス定義 ...
		}

上の定義では設定ファイルに定義された全ホストSOMESERVICEがあることになります。SOMESERVICEに属しているすべてのホストは同一の定義を使用します(例:同じチェックコマンド、再試行回数、通知の時間帯など)。

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

複数のホスト: もし複数のホストが同一のサービスエスカレーションを設定したいなら、次のようにhost_nameディレクティブに複数のホストを記述できます:

	define serviceescalation{
		host_name		HOST1,HOST2,HOST3,...,HOSTN
		service_description	SOMESERVICE
		他のエスカレーション定義 ...
		}

上の定義ではHOST1からHOSTNが属するSOMESERVICEというサービス用のサービスエスカレーション定義を作成したことになります。そのサービスエスカレーションの全インスタンスは同一です(例:同じ通知先グループ、通知間隔など)。

複数のホストグループの全ホスト:もし全ホストもしくは複数のホストグループに属した同一のサービスエスカレーションを作成したいならば、同じように1つのサービスエスカレーション定義にまとめることができます。これは次のようにサービス定義のhostgroup_nameにホストグループを書くことで可能です:

	define serviceescalation{
		hostgroup_name		HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN
		service_description	SOMESERVICE
		他のエスカレーション定義 ...
		}

上の例では、HOSTGROUP1 から HOSTGROUPNに属する全ホストが同一のSOMESERVICEを使用します。そのサービスエスカレーションの全インスタンスは同一です(例:同じ通知先グループ、通知間隔など)。

全ホスト: 設定ファイルに定義している全ホストに対して同一のサービスエスカレーションを作成したい場合は、次のようにhost_nameディレクティブにワイルドカードを使用することで可能です:

	define serviceescalation{
		host_name		*
		service_description	SOMESERVICE
		他のエスカレーション定義 ...
		}

上の定義では設定ファイルに定義された全ホストの全SOMESERVICEがこのサービスエスカレーションに属していることになります。そのサービスエスカレーションの全インスタンスは同一です(例:同じ通知先グループ、通知間隔など)。。

複数のサービス: 特定のホストの全サービスについて同一のサービスエスカレーションを作成したいときは、次のようにservice_descriptionディレクティブにワイルドカードを使用します:

	define serviceescalation{
		host_name		HOST1
		service_description	*
		他のエスカレーション定義 ...
		}

上の定義ではHOST1サービスのサービスエスカレーションを作成したことになります。そのサービスエスカレーションの全インスタンスは同一です(例:同じ通知先グループ、通知間隔など)。

もっとチャレンジャー的なことをするならhost_nameservice_descriptionの両方のディレクティブにワイルドカードを使用することだってできます。そうすることで設定ファイルに定義した 全サービスのサービスエスカレーションを作成できます。

依存サービス

複数のホスト: もし複数のホストに同じサービス名/サービス説明の依存サービスを設定したいなら、次のようにhost_namedependent_host_nameディレクティブに複数のホストを記述できます:

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

上の例では、ホスト HOST3HOST4上のサービス、SERVICE2HOST1HOST2SERVICE1に依存しているという設定になっています。 依存サービスの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)。

複数のホストグループ内の全ホスト: もし1つまたは複数のホストグループ内の全ホストに同じサービス名/サービス説明の依存サービスを定義したいなら、次のようにhostgroup_namedependent_hostgroup_nameディレクティブに複数のホストグループを記述できます:

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

上の例ではHOSTGROUP3HOSTGROUP4内の全ホスト上のSERVICE2サービスがHOSTGROUP1HOSTGROUP2ホストグループ内の全ホスト上のSERVICE1というサービスに依存しているという設定になります。それぞれのホストグループには5つのホストが登録されていると仮定すると、この定義では一行一行依存サービス定義を書いた場合の100行文に相当します!依存サービスの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)。

複数のサービス: 特定のホストのすべてのサービスに対して1つの依存サービスを定義したい場合は、service_descriptionおよび/またはdependent_service_descriptionに次のようにワイルドカードを使用します:

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

上の例ではHOST2全サービスHOST1全サービスに依存するという設定です。依存サービスの全インスタンスは同一の物が使用されます(例:同じ障害通知基準など)。

ホストエスカレーション

複数のホスト: 複数のホストが属するホストエスカレーション定義を作成したいなら、次のようにhost_nameディレクティブに複数のホストを記述することで可能です:

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

上の例ではHOST1からHOSTNのホストエスカレーションを作成しています。ホストエスカレーションの全インスタンスは同一の物を使用します(例:同じ通知先グループ、通知間隔など・・・)。

複数のホストグループ内の全ホスト: 1つまたは複数のホストグループ内の全ホストのホストエスカレーションを定義したいなら、次のようにhostgroup_nameディレクティブに複数のホストグループを定義します:

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

上の例ではHOSTGROUP1からHOSTGROUPN内の全ホスト用のエスカレーションを作成したことになります。ホストエスカレーションの全インスタンスは同一の物を使用します(例:同じ通知先グループ、通知間隔など・・・)。

全ホスト: 設定ファイルに定義されている全ホスト用のホストエスカレーションを作成したい場合は、次のようにhost_nameディレクティブにワイルドカードを使用することで可能です:

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

上の例では設定ファイルに定義されている全ホストのホストエスカレーションを作成したことになります。ホストエスカレーションの全インスタンスは同一の物を使用します(例:同じ通知先グループ、通知間隔など・・・)。

依存ホスト

複数のホスト: もし複数のホストに同じ依存ホストを設定したいなら、次のようにhost_nameと/もしくはdependent_host_nameディレクティブに複数のホストを記述できます:

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

この定義は6個の依存ホスト定義を作成したのと同じ事になります。上の例ではHOST3HOST4HOST5HOST1HOST2の両方に依存するという定義です。依存ホストの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)

複数のホストグループ内の全ホスト: 1つまたは複数のホストグループ内の全ホストの依存ホストを定義したいなら、次のようにhostgroup_nameと/またはdependent_hostgroup_nameディレクティブを使用します:

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

上の例ではHOSTGROUP3HOSTGROUP4ホストグループ内の全ホストがHOSTGROUP1HOSTGROUP2の全ホストに依存していると言うことになります。依存ホストの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)

ホストグループ

全ホスト: 設定ファイルに定義している全ホストが属するホストすぐループを作成したい場合は、次のようにmembersディレクティブにワイルドカードを使用することで可能です:

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

上の定義ではHOSTGROUP1というホストグループに設定ファイルに定義されている全ホストを属すということになります。

ホストグループエスカレーション

複数のホストグループ: 複数のホストグループに同一のホストグループエスカレーションを定義したいときは、次のようにhostgroup_nameディレクティブに複数のホストグループを定義します:

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

上の定義では、HOSTGROUP1からHOSTGROUPNまでのホストグループ用にそれぞれホストグループエスカレーションを定義したことになります。ホストグループエスカレーションの全インスタンスは同一です(例:コンタクトグループ、通知間隔など)。