さくらインターネットにおけるNagios(NRPE) RAID監視スクリプト

さくらインターネットの専用サーバ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がインストール済み

以上の前提を踏まえたうえで、大まかな設定を以下の手順で行います。

  1. RAID監視プラグインを監視対象ホストに設置
  2. nagios実行ユーザに対してRAID制御コマンドの実行権限を付与
  3. 監視対象ホストで監視ホストからRAID監視を可能にする設定
  4. 監視ホストから監視対象ホストに対して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に関するステータスが表示されるようになれば監視設定は完了です。

nagios

以上です。

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

渡辺 正毅

1984年生。サンフランシスコ育ち。大学から憧れの日本に留学し、そのまま移住。2006年慶應大学SFC卒。2007年BPS株式会社設立。いい国ですよね。もっとよくしたい。好きになってくれる人を増やしたい。

渡辺 正毅の書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ