さくらインターネットの専用サーバRAIDプランでは、RAIDに障害発生した場合、利用者側からさくらインターネットに報告する必要があります。
RAID制御用のコマンドが用意されており手動で状態を確認することは可能ですが、問題があった場合は自動的に通知してくれる仕組みがあると便利です。
http://faq.sakura.ad.jp/faq/1032/app/servlet/qadoc?000494
弊社では既にNagiosによるサーバ監視体制を構築していますので、今回はNagios(NRPE)プラグインを自作・設定してさくらインターネットのRAID監視を自動化してみようと思います。
しかし、"RAID制御コマンドがrootでのみ実行可能"と"NRPE-serverがrootで起動不可"という相反する制約があるため、セキュリティ上の制約を考慮したうえでsudoコマンドを利用してRAID制御コマンドを実行することでこの問題を回避します。
では、早速ですが、今回設置の前提となる環境は以下の通りです。
- 監視対象ホストがさくらインターネットの専用サーバRAIDプラン
- 監視対象ホスト、監視ホストはともにLinux(Ubuntu 8.04)
- 監視ホストにnagios2, nagios2-commonがインストール済み
- 監視対象ホストにnagios-nrpe-server, nagios-nrpe-pluginがインストール済み
以上の前提を踏まえたうえで、大まかな設定を以下の手順で行います。
- RAID監視プラグインを監視対象ホストに設置
- nagios実行ユーザに対してRAID制御コマンドの実行権限を付与
- 監視対象ホストで監視ホストからRAID監視を可能にする設定
- 監視ホストから監視対象ホストに対してRAID監視を行うように設定
1. RAID監視プラグインを監視対象ホストに設置
まず、以下のシェルスクリプト(#!/bin/sh以降の行)を監視対象ホストのプラグインディレクトリ(/usr/lib/nagios/plugins)に設置し、実行権限を与えます。
今回はcheck_sakura_raidというファイル名で設置しました。設置後はrootで実行して問題なく実行できることを確認してください。
# cd /usr/lib/nagios/plugins # vim check_sakura_raid
#!/bin/sh DESC=`/usr/bin/sudo /usr/local/bin/tw_cli info c0 | /bin/grep "RAID-1"` STATUS=`/bin/echo $DESC | /usr/bin/awk '{print $3}'` case $STATUS in OK) echo "RAID OK :" $DESC; exit 0 ;; DEGRADED) echo "RAID WARNING :" $DESC; exit 1 ;; esac
# chmod 755 check_sakura_raid # ./check_sakura_raid
2. nagios実行ユーザに対してRAID制御コマンドの実行権限を付与
nagiosの実行ユーザ(初期設定ではnagios)がRAID制御コマンドを実行できるように細工をしてやる必要がありますので、visudoコマンドなどを使って/etc/sudoersファイルに以下のように設定を追加します。
# visudo nagios ALL=NOPASSWD: /usr/local/bin/tw_cli
上記の設定ではnagiosユーザがパスワード無しでRAID制御コマンドを実行できるように設定していますので、設定後にnagiosユーザで実行可能かどうか確認します。
# sudo -u nagios /usr/local/bin/tw_cli
3. 監視対象ホストで監視ホストからRAID監視を可能にする設定
次に、監視対象ホストのnrpe-serverの設定ファイル(/etc/nagios/nrpe.cfg)に下記の行を追加し、監視対象から設置したプラグインを実行できるように設定します。設定後はnrpe-serverを再起動します。
# vim /etc/nagios/nrpe.cfg command[check_raid]=/usr/lib/nagios/plugins/check_sakura_raid # /etc/init.d/nagios-nrpe-server restart
4. 監視ホストから監視対象ホストに対してRAID監視を行うように設定
最後に監視ホストの監視サービス設定にRAIDを追加します。
# vim /etc/nagios2/conf.d/services_nagios2.cfg define service { hostgroup_name nrpe-raid-servers use generic-service service_description [NRPE] RAID check_command check_nrpe_1arg!check_raid }
また、上記で追加したRAID監視設定を監視対象ホストに対して適用します。
# vim /etc/nagios2/conf.d/hostgroups_nagios2.cfg define hostgroup { hostgroup_name nrpe-raid-servers alias [NRPE] RAID servers members server1, server2 }
ここまで設定を変更したらnagiosを再起動します。
# /etc/init.d/nagios2 restart
最終的に監視ホストのnagiosの管理画面から監視対象ホストのRAIDに関するステータスが表示されるようになれば監視設定は完了です。
以上です。