イントロダクション
このドキュメントではテンプレートベースオブジェクト定義の隠された特徴(の何か)をゲットしてあなたの正気を保つ方法について説明を試みています。いくつかのオブジェクトでは複数のホスト名やホストグループ名を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_nameとservice_descriptionの両方のディレクティブにワイルドカードを使用することだってできます。そうすることで設定ファイルに定義した 全サービスのサービスエスカレーションを作成できます。
依存サービス
複数のホスト: もし複数のホストに同じサービス名/サービス説明の依存サービスを設定したいなら、次のようにhost_nameとdependent_host_nameディレクティブに複数のホストを記述できます:
define servicedependency{ host_name HOST1,HOST2 service_description SERVICE1 dependent_host_name HOST3,HOST4 dependent_service_description SERVICE2 他の依存ディレクティブ ... }
上の例では、ホスト HOST3とHOST4上のサービス、SERVICE2がHOST1とHOST2のSERVICE1に依存しているという設定になっています。 依存サービスの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)。
複数のホストグループ内の全ホスト: もし1つまたは複数のホストグループ内の全ホストに同じサービス名/サービス説明の依存サービスを定義したいなら、次のようにhostgroup_nameとdependent_hostgroup_nameディレクティブに複数のホストグループを記述できます:
define servicedependency{ hostgroup_name HOSTGROUP1,HOSTGROUP2 service_description SERVICE1 dependent_hostgroup_name HOSTGROUP3,HOSTGROUP4 dependent_service_description SERVICE2 他の依存ディレクティブ ... }
上の例ではHOSTGROUP3とHOSTGROUP4内の全ホスト上のSERVICE2サービスがHOSTGROUP1とHOSTGROUP2ホストグループ内の全ホスト上の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個の依存ホスト定義を作成したのと同じ事になります。上の例ではHOST3、 HOST4 、 HOST5がHOST1とHOST2の両方に依存するという定義です。依存ホストの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)
複数のホストグループ内の全ホスト: 1つまたは複数のホストグループ内の全ホストの依存ホストを定義したいなら、次のようにhostgroup_nameと/またはdependent_hostgroup_nameディレクティブを使用します:
define hostdependency{ hostgroup_name HOSTGROUP1,HOSTGROUP2 dependent_hostgroup_name HOSTGROUP3,HOSTGROUP4 他の依存ディレクティブ ... }
上の例ではHOSTGROUP3とHOSTGROUP4ホストグループ内の全ホストがHOSTGROUP1とHOSTGROUP2の全ホストに依存していると言うことになります。依存ホストの全インスタンスはホスト名を除き同一の物が使用されます(例:同じ障害通知基準など)
ホストグループ
全ホスト: 設定ファイルに定義している全ホストが属するホストすぐループを作成したい場合は、次のようにmembersディレクティブにワイルドカードを使用することで可能です:
define hostgroup{ hostgroup_name HOSTGROUP1 members * 他のホストグループディレクティブ ... }
上の定義ではHOSTGROUP1というホストグループに設定ファイルに定義されている全ホストを属すということになります。
ホストグループエスカレーション
複数のホストグループ: 複数のホストグループに同一のホストグループエスカレーションを定義したいときは、次のようにhostgroup_nameディレクティブに複数のホストグループを定義します:
define hostgroupescalation{ hostgroup_name HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN 他のエスカレーションディレクティブ ... }
上の定義では、HOSTGROUP1からHOSTGROUPNまでのホストグループ用にそれぞれホストグループエスカレーションを定義したことになります。ホストグループエスカレーションの全インスタンスは同一です(例:コンタクトグループ、通知間隔など)。