我想檢查NAGIOS我的服務器是否可以連接到Openstack Swift容器。我寫了一個簡單的腳本,我用斯威夫特Python客戶端來獲取容器Nagios自定義插件調用python Openstack Swift客戶端
腳本看起來像
#!/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
腳本有正確的權限和Nagios是能夠正常運行的stat
。腳本本身從bash調用並返回類似於:
successfully connected to swift. Number of objects in container 4973123
但是,它不會當我通過nrpe運行它。我檢查運行/usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_swift
我只是得到Number of container objects is not correct
調試後,我敢肯定,命令
output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'`
甚至沒有叫。
我試圖把swift --version
那裏只是爲了看看它會給我一些輸出,它確實。所以,它讓我覺得參數有問題,但我真的不知道是什麼,因爲在shell中調用的命令本身工作得很好。
任何幫助表示讚賞:)