如何通过CloudWatch获得可用磁盘空间量?

是否有可能通过CloudWatch获得可用磁盘空间量(df)? 如果是这样,那么什么度量代表可用磁盘空间?

更新

AWS同时提供了自己的示例脚本,用于监视至less运行Linux的Amazon EC2实例上的内存和磁盘空间使用情况 ,请参阅新的Amazon CloudWatch监控脚本 :

您可以在实例上运行这些脚本,并将其configuration为向Amazon CloudWatch报告内存和磁盘空间使用情况度量标准。 将度量标准提交到CloudWatch之后,您可以在CloudWatch控制台中或通过CloudWatch API查看graphics,计算统计信息并在其上设置警报。

[…]

要详细了解如何使用这些脚本(包括安装,设置和configuration),请参阅Amazon CloudWatch开发人员指南中的“ 适用于Linux的Amazon CloudWatch监控脚本 ”。

请注意,虽然许多stream行的第三方监控解决scheme已经提供了各自的样本或者用于内存和磁盘空间使用监控的完整解决scheme,所以通常不需要重新开发。 AWS提供的脚本也是相当体面和广泛的,也就是说,它比大多数自定义的脚本更加全面。


初始答案

不,这是不可能的(还)。 有关内存使用情况 ,请参阅AWS员工在相关问题cloudwatch上的回答,其中还包括以下原因:

[…]现在,您不需要在AMI中部署任何东西来监控您的实例。 内存利用率和磁盘空间等度量标准要求我们查看实例中运行的操作系统,这就是为什么我们没有这些有价值的指标。

我们正在研究如何提供更多的关于您的操作系统和应用程序的见解,并且在我们制定计划时将会有更多的细节。

我怀疑这个function会很快出现,因为所需的跨平台代理function已经可以从其他一些提供专用监控解决scheme的供应商那里获得,而这个任务都是非常简单的 – 这绝对是一个巨大的胜利当然支持直接内置到AWS中。

以下是检索附加到实例的卷并报告每个卷的使用情况的相同脚本的更好版本。

注意/ dev / xd的replace为/ dev / sd

还要注意,您需要安装ec2-api工具和cloudwatch工具以及证书才能使这些工作成功

#!/bin/bash export JAVA_HOME= export AWS_CREDENTIAL_FILE= export EC2_CERT= export EC2_PRIVATE_KEY= export EC2_HOME= export AWS_CLOUDWATCH_HOME= INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id) VOLUME_LIST=$($EC2_HOME/bin/ec2-describe-volumes | grep ${INSTANCE_ID} | awk '{ print $2 ";" $4}') for VOLUME_LINE in $(echo $VOLUME_LIST); do VOLUME_NAME=${VOLUME_LINE%;*} DEVICE_NAME=/dev/xvd${VOLUME_LINE#*;/dev/sd} USAGE=$(df $DEVICE_NAME | perl -ne 'print "$1" if /(\d+)\%/') $AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $USAGE -d "Volume=$VOLUME_NAME" -m UsedStoragePercentage -u Percent -n "NAMESPACE" --show-request done 

我把一个bash脚本放在一起,使用自定义的cloudwatch指标来做到这一点

http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html

用您自己的值replaceXXXX

 #!/bin/sh export JAVA_HOME=/usr/lib/jvm/java-6-sun export AWS_CREDENTIAL_FILE=XXXX export AWS_CLOUDWATCH_HOME=XXXX INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id) $AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $(df / | perl -ne 'print "$1" if /(\d+)\%/') -d "InstanceId=$INSTANCE_ID,Volume=root" -u Percent -m UsedStoragePercentage -n "XXXX" --show-request 

把它放在一个cron的工作中,你可以有一个指标,你可以把警报。 我决定去百分比和实例特定的挂载点,而不是监视卷本身,因为它适合我的需求。 我倾向于重新调整卷的大小,而不是重新启动实例。 你的旅费可能会改变。

对Amazon的示例脚本或使用基于Perl的命令行工具的各种第三方脚本感到不满,我们用Python编写了自己的脚本: aws-cloudwatch-linux-metrics 。

单个文件,没有依赖关系,可以在任何Python解释器上运行。

它从/proc文件系统读取数据,并报告除了从外部不可观察到的其他系统度量标准之外的磁盘空间利用率

  • CPU负载平均
  • networking连接(TCP和UDP)
  • 磁盘空间利用率
  • 内存利用率

它报告这些度量关于实例ID和图像ID。

在提问之后的某个时候,AWS提供了具有报告磁盘使用情况的选项的脚本。

您可以在crontab中运行此脚本,以将可用磁盘空间报告给CloudWatch。 不要忘记包含磁盘path。

 */5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron 

文档给出了一个完整的选项列表,加上这里的例子 。