2016-09-05 5 views
1

は私がZABBIXモニタカスタムスクリプト値

、私のスクリプトから値を監視するためにZABBIXを設定しようとしましたが、Zabbixはエラーを返す:

Received value [200true] is not suitable for value type [Numeric (unsigned)] and data type [Decimal] 

スクリプト:

status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2); 
if [ $status = "200" ]; then 
    exit 0 
else 
    echo 1 
fi 

Zabbixの構成:

key - system.run[/zabbix_scripts/myscript.sh] 
key type of information - numeric (unsigned) 
key data type - decimal 
trigger - {sso:system.run[/zabbix_scripts/myscript.sh].last()}=1 

私はこれまでにやったことがありますが、何とかこのスクリプトはzabbixで動作しません。

助けてください、 ありがとう!

+0

問題のあるシステムではどうなりますか? 'curl -I https://example.com/health_check.jsp 2>/dev/null | head -n 1' - また、 'echo'と' exit'を混在させています。おそらく 'echo'を意味していましたが、この場合、HTTPレスポンスコードだけを出力する方が簡単です。 – Richlv

答えて

0

エラーメッセージが奇妙です(「Received value [200true]」と入力すると、スクリプト出力が奇妙に見えるようになりますが、実際にはそうではないはずですが)、exit 0の使用に問題があります。

Zabbixは外部スクリプト/バイナリの終了コードを評価しません。標準出力のみを読み込みます。スクリプトは、このようにZABBIX、例えばのためのそれを可視化、stdoutに値を印刷するためにecho 0に変更し :

status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2) 
if [[ $status = "200" ]]; then 
    echo 0 
else 
    echo 1 
fi 
1

それはあなたがそのような壊れた出力を得る理由を見つけるために興味深いものになるだろうが、私は思いますこれにあなたの全体のスクリプトを変更することをお勧め:

curl -s -I -o /dev/null -w "%{http_code}" https://example.com/health_check.jsp 

注それは、出力HTTPレスポンスコードだけで、そのため、あなたのトリガは200されていない値をチェックするように修正しなければならないであろうということ - のZabbix 2.2以前のため#200を、 2.4以降では<>200です。

0

このスクリプトがサーバーに送信した出力値には、データ型の競合があります。

echo 0またはecho 1exit 0のinstumentを以下のように変更する必要があります。

ステータスが200の場合は出力が0になり、1の場合はアラートがトリガされます。

status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2); 
if [ $status = "200" ]; then 
    echo 0 
else 
    echo 1 
fi 
関連する問題