今回は Nagios から Windows Server を監視する方法について書いてみます。
Nagios のような死活監視ツールは、パッシブな方法で監視するのが一般的ですが、監視対象システムの内部状況を調べるには、エージェントをインストールする必要があります。
ここでは、CPUの負荷・メモリーやハードディスクの使用状況を調べ、閾値を越えると管理者へ通報する方法について、やり方と検証した結果を紹介します。
環 境
- Nagios が動作するサーバ
Debian GNU/Linux 8 Jessie
nagios3 3.5.1 - 検証対象のサーバ
Windows Server 2008 R2
NSClient++ 0.5.0.62
※上記どちらもESXi 6.0上で仮想化された状態で稼働中。
【追記】2017/11/02
CHECK_NRPE: Error - Could not complete SSL handshake.
このようなエラーがでる場合は、telnet 等で NRPE が動いている監視先のサーバへ接続してみてください。その時、IPv6 で接続しようとしていると、それが原因です。
※NRPE が動いているサーバの Allowed hosts の指定が IPv4 なので…
/etc/gai.conf を編集して、下記の様にIPv4を優先にします。
precedence ::1/128 50 precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 100
1.Windows Server へエージェントをインストール
Nagios と連携するエージェントはいろいろあるのですが、ドキュメントの豊富さから今回は NSClient++ を使うことにしました。まずはここから Windows 用のエージェントをダウンロードします。
※2017/11/02 現在の最新バージョンは 0.5.1.44 です。
※Windows Server 2008 以降であれば x64 を選んでください。
※Windows で使うコマンドは、ここに詳細があります。昔使ってた checkcpu とか、まだ使えるみたいです。
ダウンロードしたエージェントを、監視対象の Windows Server にインストールします。
LAN内で監視するので、通信の暗号化や認証は OFF にしますが、接続を許可する IPアドレスは指定します。
無事インストールが終わりましたら、C:\Program Files\NSClient++にある、nsclient.ini に、下記4行を追加します。
[/settings/external scripts/alias] alias_cpu = check_cpu "warn=load > 80" "crit=load > 90" alias_disk = check_drivesize "crit=free < 10%" drive=* alias_mem = check_memory "warn=used > 80%" "crit=used > 90%"
nsclient.ini の編集が終わりましたら、NSClient++ (x64) のサービスを再起動します。
これで Windows Server 側の準備は終了です。
2.Nagios側の設定
/etc/nagios3/conf.d/services_nagios2.cfg に以下を追加します。
/etc/nagios3/conf.d/hostgroups_nagios2.cfg に下記を追加します。
上記編集作業が終わりましたら、Nagios3 を再起動します。
3.動作検証
1 と 2 の作業が終われば Nagios から Windows Server を監視できます。
監視対象の閾値については 1 で追加した内容を見れば直感的に理解出来ると思います。動作に関しては、Nagios の通常監視と同様に、エラー状態(or ワーニング状態)が連続で5分続くと通知メールが飛びます。
負荷をかける為に、今回は Microsoft 純正の検査ツールを使ってみます。
https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to-simulate-cpu-memory-disk-load/
※CPU負荷を擬似的に発生させたり、メモリー使用量を増やしたり…といった試験ができます。
- 3-1.CPUSTRES.EXE
試験対象機は仮想2コアなので、Thread Priority は Normal、Activity は bussy にします。3つのスレッドを ON にすると、約80%の負荷になりました。これで5分経過すると管理者へ Warning の通知メールが送られます。同じ設定で4つスレッドを ON にすると、ほぼ100%で負荷が張り付きます。5分経過後、今度は Critical の通知メールが送られます。
※Nagios のログはこんな感じです。
- 3-2.Testlimit64.exe
このプログラムはコマンドラインから起動します。
まずは、Testlimit64 -d -c 6144 と、6Gのメモリー負荷をかけます。ゆっくりとメモリー使用量が増えていき、約7GBで増加が止まります。これで5分経過後、管理者へ Warning の通知メールが送られます。Testlimit64 -d -c 7168 では、物理メモリー8GBをほぼ使い切ります。5分経過後、今度は Critical の通知メールが送られます。
試験が終わったら ^C でメモリー負荷試験を終了します。