2017-08-10 6 views
0

私は日常のmdadmをチェックして、数値をバックCloudWatchのに報告するシンプルなbashスクリプトを作成しています:CloudWatchのエラー

#!/bin/bash 

## CHECKING RAID STATUS AND SUBMITTING RESULTS TO CLOUDWATCH ## 
## 0 = Good, 1 = Bad, 2 = Still bad, needs investigating ## 


HECK_RAID=`mdadm -D /dev/md1 | grep "State : [a-zA-Z]"` 
SEND_RESPONSE=`aws cloudwatch put-metric-data --metric-name RAID-STATUS --namespace MONGODB --value "$STATUS" --dimensions InstanceID="$INSTANCEID" --region us-east-1` 
INSTANCEID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id) 

if [[ $CHECK_RAID =~ [Cc]lean ]]; then 
     STATUS=0 
     $SEND_RESPONSE 
elif [[ $CHECK_RAID =~ [Ff]ailed ]]; then 
     STATUS=1 
     $SEND_RESPONSE 
else 
     STATUS=2 
     $SEND_RESPONSE 
fi 

問題は、私がテストするためのスクリプトを実行したとき、私はこれを取得、あります:リストのparam要素のための

無効な値(「」):タイプのリストのMetricData

私はSTATUSが犯人かもしれない知っているが、クレアのより良い方法があります私が作った条件を聞いて、実際に結果をCloudWatchに提出していますか?

+0

変数 'SEND_RESPONSE'に格納されたコマンドを実行しますか? – Inian

+0

いいえ、コマンドが実行されます。しかし、それは質問に投稿したエラーメッセージを吐き返す。私はスクリプトで何が間違っているのか理解しようとしています。 – ryekayo

+1

'SEND_RESPONSE'は、あなたが定義したときに一度しか評価されません。 – jordanm

答えて

1

"CHECK_RAID"の代わりに "HECK_RAID"変数を設定しています。

+0

これをキャッチしてくれてありがとう。 – ryekayo