Nagios version 4 関連の日本語記事が少なかったので、以前のバージョンとの差異をまとめてみました。version 4 では v3 以前と比べパフォーマンス改善がされているなど魅力的なところがあります。
以下のドキュメントを参照しました。
History of Nagios4
Nagios Core 4.x Version Historyによると 4.0.0 が 2013年9月にリリース、2014年11月現在 4.0.8 が最新版。3.x 系が 3.5.1 まで進んでいるので、4.x 系の歴史は浅いようです。
パフォーマンス改善
-
Core workers の導入
- Core workersはチェックのみ行う軽量プロセス
- nagios core 全体をforkしていた以前のやり方よりも小さくforkできる
- nagios core process と in-memory でやり取りする。これまで重い原因だったディスクI/Oのレイテンシが無くせる
- Configuration Verification の改善。以前は O(n2) のコストがかかっていたがこれを改善
- Event Queue のinsertコストを改善
- Macro Resolution(マクロのコンパイルといった訳でしょうか..)。バイナリサーチにより以前より早くなった
Object関連
- host定義の
address
アトリビュートは optionalへ -
hourly_value
アトリビュート, contactsへのminimum_value
アトリビュートのサポート。integerのバリューで監視項目を重み付けできる。重みにより contact毎に通知するかしないかを制御できる - service定義に
parents
アトリビュートをサポート。サービス間の依存関係を定義可能になる -
obess_over_host
とobsess_over_service
アトリビュートの外、より短いobsess
アトリビュートをサポート
設定ファイル
-
object_cache_file
とstatus_file
に/dev/null
を指定可能に。/dev/null
を指定することで disk I/Oを無くせる。これは他の方法でもobjectやstatusに関する情報を取得できるようになったから(?) -
log_current_states
ログローテーションの後に監視の current status をログに書き込むかどうか。大規模環境ではこれをoffにすることでdisk spaceを節約できる -
check_workers
起動時の worker 数。指定しない場合はCPUコア数により決められる -
query_socket
query handler socket のパス。デフォルトは/usr/local/nagios/var/rw/nagios.qh
- nagios.cfg 内のファイルパスやディレクトリパスは相対パスが利用可能に。相対パスの場合、nagios.cfg の位置が基準に。
マクロ
-
enable_environment_macros
マクロの値を環境変数として外部スクリプトに渡すかどうかの設定。offにすることでCPU負荷を下げるとのこと。 -
$CHECKSOURCE$
checkするworkerの名前が入る -
use_large_installation_tweaks
が有効の時、$HOSTGROUPMEMBERS$
と$SERVICEGROUPMEMBERS$
は環境変数としてセットされなくなった
Query Handler
Unix Domain Socketを通じて Nagios Core プロセスとのコミュニケーションが可能になる。現在は5つの種類がある。
- core Nagios Coreプロセス管理、また情報取得ができる
- wproc workerプロセスの登録、管理、情報取得
- nerd Nerdという pub/sub の仕組みを提供
- help help message
まとめ
core worker の導入により、checkのパフォーマンスが改善されました。効果は要検証ではありますが、Nagios Conference 2013 - Eric Stanley - Whats New Core 4 の中の実例 before/after によるとかなり改善しているようです。
Query Handler、nerd などはよく分かってないので今度試してみます。