序論
ユーザは、しばしば新しい変数をホスト、サービス、および連絡先定義に追加する様、要求します。 これらはSNMPコミュニティ、MACアドレス、AIMユーザ名、スカイプ番号、および住所のための変数を含んでいます。 リストは無限です。 これをする事によって分かる問題は、これがNagiosを一般的でなく、よりインフラ固有にするという事です。 Nagiosがフレキシブルであることを意図していました。それは、色々な事柄が、一般的方法で設計されている事が必要ということを意味しました。 例にある、Nagiosにおけるホスト定義は一般的な"アドレス"変数を持っています。それは、IPアドレスから人が読める運転方向まで - ユーザの設定に適切なものは何でも含んでいます。
それでも、管理者が他の特定の変数セットに依存せず、Nagios設定にインフラストラクチャ・コンポーネントの情報を保存する方法を必要な場合。 Nagiosはこの問題を解決するのに、ユーザがオブジェクト定義でカスタム変数を定義する方法を許可しています カスタム変数はユーザに、ホスト、サービス、および通知定義のプロパティの追加定義を許し、それらの値は通知、イベントハンドラ、およびホストやサービス・チェックで使えます。
カスタム変数の基礎
カスタム変数について注意するべきいくつかの重要なことがあります:
- カスタム変数名は下線(_)で始まり、標準の変数との名前が重ならない様にしなければなりません。
- カスタム変数名は大文字と小文字を区別します。
- カスタム変数は普通の変数の様にオブジェクト・テンプレートから引き継がれます。
- スクリプトはマクロと環境変数でカスタム変数値を参照する事ができます。
例
ここに、異なったタイプのオブジェクト定義でどの様にカスタム変数を定義できるかの例があります:
define host{
host_name linuxserver
_mac_address 00:06:5B:A6:AD:AA ; Custom MAC_ADDRESS variable
_rack_number R32 ; Custom RACK_NUMBER variable
...
}
define service{
host_name linuxserver
description Memory Usage
_SNMP_community public ; Custom SNMP_COMMUNITY variable
_TechContact Jane Doe ; Custom TECHCONTACT variable
....
}
define contact{
contact_name john
_AIM_username john16 ; Custom AIM_USERNAME variable
_YahooID john32 ; Custom YAHOOID variable
...
}
マクロとしてのカスタム変数
カスタム変数はNagiosがチェック、通知などの実行で使うマクロや環境変数を使って実行するスクリプトや実行モジュールで参照する事が出来ます。
異なったオブジェクト・タイプとカスタム・変数の名前が重なるのを避けるため、Nagiosは、環境変数名のHOST, SERVICE またはCONTACT変数のそれぞれの始めに "_HOST", "_SERVICE", "_CONTACT"を付けます。 以下のテーブルは上記の例で定義されたカスタム変数に対応するマクロと環境変数名を示しています。
Object Type | Variable Name | Macro Name | Environment Variable |
---|---|---|---|
Host | MAC_ADDRESS | $_HOSTMAC_ADDRESS$ | NAGIOS__HOSTMAC_ADDRESS |
Host | RACK_NUMBER | $_HOSTRACK_NUMBER$ | NAGIOS__HOSTRACK_NUMBER |
Service | SNMP_COMMUNITY | $_SERVICESNMP_COMMUNITY$ | NAGIOS__SERVICESNMP_COMMUNITY |
Service | TECHCONTACT | $_SERVICETECHCONTACT$ | NAGIOS__SERVICETECHCONTACT |
Contact | AIM_USERNAME | $_CONTACTAIM_USERNAME$ | NAGIOS__CONTACTAIM_USERNAME |
Contact | YAHOOID | $_CONTACTYAHOOID$ | NAGIOS__CONTACTYAHOOID |
カスタム変数と継承
カスタム・オブジェクト変数はちょうど標準のホスト、サービス、または連絡先変数のように引き継がれます。