2017-08-10 92 views
0

我创建一个简单的bash脚本,将定期检查的mdadm和汇报的CloudWatch与数值:CloudWatch的错误bash脚本

#!/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

我知道状态可能是罪魁祸首,但有CREA一个更好的方法处理我所做的条件并实际将结果提交给CloudWatch?

+0

你想运行储存在变量'SEND_RESPONSE'中的命令吗? – Inian

+0

不,命令运行。但它反驳了我在问题中发布的错误消息。我试图找出脚本中可能出现的错误 – ryekayo

+1

当您定义它时,只会评估一次“SEND_RESPONSE”。 – jordanm

回答

1

您正在设置变量“HECK_RAID”而不是“CHECK_RAID”。

+0

时,该命令不会重复运行感谢您的支持。 – ryekayo