序章

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

新しいチェックが機能していることを確認します。

そして、あなたはすべて完了です!