Ubuntu12.10でPythonを使用してNagiosプラグインを作成する方法
序章
Pythonは、Linuxでデフォルトで使用できる人気のあるコマンドプロセッサです。
以前、Ubuntu 12.10×64にNagios監視サーバーをインストールする方法について説明しました。
今回は、このアイデアを拡張し、Pythonを使用してNagiosプラグインを作成します。
これらのプラグインはクライアントVPSで実行され、NRPEを介して実行されます。
ステップ1-クライアントVPSにNRPEをインストールします
apt-get install -y python nagios-nrpe-server useradd nrpe && update-rc.d nagios-nrpe-server defaults
ステップ2-Pythonスクリプトを作成する
プラグインを他のNagiosプラグイン( / usr / lib / nagios / plugins / など)と同じディレクトリに保持することをお勧めします。
この例では、シェルから「df」を呼び出して現在のディスク使用量をチェックするスクリプトを作成し、85% usedを超えた場合にアラートをスローします。
#!/usr/bin/python import os, sys used_space=os.popen("df -h / | grep -v Filesystem | awk '{print $5}'").readline().strip() if used_space < "85%": print "OK - %s of disk space used." % used_space sys.exit(0) elif used_space == "85%": print "WARNING - %s of disk space used." % used_space sys.exit(1) elif used_space > "85%": print "CRITICAL - %s of disk space used." % used_space sys.exit(2) else: print "UKNOWN - %s of disk space used." % used_space sys.exit(3)
このスクリプトを/usr/lib/nagios/plugins/usedspace.pyに保存し、実行可能にします。
chmod +x /usr/lib/nagios/plugins/usedspace.py
Nagios NRPEプラグイン全体は、結局、終了コードを使用してアラートをトリガーすることになります。
スクリプトにロジックのレベルを導入し、アラートをトリガーする場合(OK、WARNING、CRITICAL、またはUNKNOWN)、終了コードを指定します。
次のNagios終了コードを参照してください。
Nagiosの終了コード
終了コード | 状態 |
0 | わかった |
1 | 警告 |
2 | 致命的 |
3 | わからない |
ステップ3-クライアントホストのNRPE構成にスクリプトを追加する
元の/etc/nagios/nrpe.cfgを削除し、それに次の行を追加します。
log_facility=daemon pid_file=/var/run/nagios/nrpe.pid server_port=5666 nrpe_user=nrpe nrpe_group=nrpe allowed_hosts=198.211.117.251 dont_blame_nrpe=1 debug=0 command_timeout=60 connection_timeout=300 include_dir=/etc/nagios/nrpe.d/ command[usedspace_python]=/usr/lib/nagios/plugins/usedspace.py
198.211.117.251は、以前の記事の監視サーバーです。 これらを独自の値に変更してください。
必ずNagiosNRPEサービスを再起動してください。
service nagios-nrpe-server restart
ステップ4-NagiosMonitoringServerのNagiosチェックに新しいコマンドを追加する
/etc/nagios/objects/commands.cfgで新しいコマンドを定義します
define command{ command_name usedspace_python command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_python }
ご覧のとおり、NRPEを使用してポート5666へのTCP接続を確立し、そのリモートホストの/etc/nagios/nrpe.cfgで定義したコマンド「usedspace_python」を実行します。
このチェックをクライアントVPSのNagios構成ファイルに追加します。
この例では、UbuntuDropletというサーバーを監視し、/etc/nagios/servers/UbuntuDroplet.cfgを編集します。
define service { use generic-service host_name UbuntuDroplet service_description Custom Disk Checker In Python check_command usedspace_python }
Nagiosを再起動します:
service nagios restart
新しいチェックが機能していることを確認します。
そして、あなたはすべて完了です!