2016-07-21 9 views
0

私のサーバーがOpenstack Swiftコンテナに接続できるかどうかは、NAGIOSに確認したいと思います。私はNagiosのカスタムプラグイン呼び出しPython Openstack Swiftクライアント

スクリプトが必要な権限を持っているとNagiosはそれを適切に実行することが可能であることを

#!/bin/bash 

set -e 

STATE_OK=0 
STATE_WARNING=1 
STATE_CRITICAL=2 
STATE_UNKNOWN=3 
STATE_DEPENDENT=4 


if ! which /usr/bin/swift >/dev/null 2>&1 
then 
    echo "Swift command not found" 
    exit $STATE_UNKNOWN 
fi 
my_swift="/usr/bin/swift -V 2.0 -A http://my-swift-domain.com:5000/v2.0/ --insecure --os-username my-user-name --os-password my-password --os-tenant-name tenant-name stat container" 


output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'` 

if [ "$output" -eq "$output" ] 2>/dev/null 
then 
    echo "successfully connected to swift. Number of objects in container $output"; 
    exit $STATE_OK 
else 
    echo "Number of container objects is not correct"; 
    exit $STATE_CRITICAL 
fi 

スクリプトのように見えるコンテナのstatを取得するために、私はスウィフトPythonクライアントを使用して簡単なスクリプトを書きました。スクリプト自体がbashから呼び出され、次のような結果を返します。

successfully connected to swift. Number of objects in container   4973123 

しかし、nrpeで実行したときは表示されません。私はちょうど私がコマンド

output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'` 

がさえ呼ばれていないことをかなり確信してデバッグした後Number of container objects is not correct

を取得/usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_swift を実行することによって、それを確認しました。

swift --versionを出力してもらえるかどうか試してみました。だから、私はパラメータに何か問題があると思うことができましたが、コマンド自体がシェルで呼び出されているので、実際には何も分かりません。

すべてのヘルプ感謝:)このためデ最初の行を変更する

答えて

0

があるため、間違ったコンテキストのコマンドの実行を阻止することは(CentOSの上)にSELinuxだったことが判明ファイルのホームディレクトリからNagiosのプラグインディレクトリにファイルをコピーしました。 restorecon check_swift_container -v助けあり

0

てみてください:

#!/usr/bin/env bash 
関連する問題