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

昨日、さくらインターネットにおけるRAID監視スクリプトに関して記事を書きましたが、これをCentOSで設定しているときに直面した問題とその解決策に関するTIPSです。

結論から述べると、昨日のRAID監視スクリプトの設定で監視対象をCentOSにした場合、そのままでは動きません。その原因はsudoの設定にあります。

まず、事前に確認すべきこととして、監視対象ホストの端末から以下のコマンドは実行可能ですが、

# sudo -u nagios /usr/lib/nagios/plugins/check_sakura_raid
RAID OK : u0 RAID-1 OK - - - 232.885 ON -

監視ホストから下記のコマンドを実行しても監視対象ホストから結果が取得できません。

# /usr/lib/nagios/plugins/check_nrpe -H (hostname) -c check_raid
NRPE: Unable to read output

つまり、端末からコマンドを実行した場合は実行できるのにも関わらず、リモートから実行すると何故か実行されないというわけです。

ここで、sudoに関係するログとして/var/log/secureのログに注目します。

Oct 28 11:58:28 localhost sudo: nagios : sorry, you must have a tty to run sudo ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/local/bin/tw_cli info c0

このログが意味することとしては、端末(tty)でないとsudoが実行できない、ということで
シェル以外から実行した場合(cronなど)sudoが実行できないように設定されています。

これは、CentOSの初期設定で/etc/sudoersファイルに”Defaults requiretty”として設定されていることによるものです。
このため、この問題は該当行をコメントアウトすることで解決します。

# visudo

#Defaults    requiretty

これで監視ホストから下記コマンドを実行すると結果が取得できるようになるはずです。

# /usr/lib/nagios/plugins/check_nrpe -H (hostname) -c check_raid
RAID OK : u0 RAID-1 OK - - - 232.885 ON -

やはり問題に直面した時は素直にログを追いかけるのが鉄則ですね!

以上です。

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

この記事の著者

渡辺 正毅

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

渡辺 正毅の書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ