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


Answers:


7

更新资料

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

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

[...]

要了解有关如何使用脚本(包括安装,设置和配置)的更多信息,请访问《Amazon CloudWatch开发人员指南》中的“ Linux的Amazon CloudWatch监视脚本 ”。

但是请注意,许多流行的第三方监视解决方案也已经提供了用于内存和磁盘空间使用情况监视的相应示例或完整的解决方案,因此通常不需要重新发明轮子。AWS提供的脚本也相当不错且范围广泛,即,它们比大多数自定义的一次性脚本更全面地涵盖了用例。


初步答案

不,这是不可能的(尚未)。有关内存使用情况,请参阅有关问题Cloudwatch的AWS工作人员答案,其中也涵盖了这样做的原因:

[...]现在,您无需在AMI中部署任何东西即可监视您的实例。诸如内存利用率和磁盘空间之类的指标要求我们调查实例中运行的操作系统,这就是为什么我们没有这些有价值的指标的原因。

我们正在寻找方法,以提供对您的操作系统和应用程序的更深入的了解,并在我们确定计划时将提供更多详细信息。

我怀疑该功能是否会很快出现,因为所需的跨平台代理功能已经可以从其他提供专用监视解决方案的其他供应商处获得,而且这项任务几乎是简单的-拥有它绝对是一个巨大的胜利。当然,对此的支持直接内置在AWS中。


“虽然这不会改变我最初的回答中所说的内容...”-您的原始回答说AWS无法报告磁盘使用情况,但是现在AWS脚本确实报告了磁盘使用情况。因此,OP问题的答案确实发生了变化。
蒸汽动力

3

这是同一脚本的一个更好的版本,该脚本可检索附加到实例的卷并报告每个卷的使用情况。

注意将/ dev / xvd替换为/ 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

2

我整理了一个bash脚本以使用自定义cloudwatch指标执行此操作

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

用您自己的值替换XXXX

#!/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作业中,您将获得一个可以触发警报的指标。我决定使用百分比和特定于实例的安装点,而不是监视卷本身,因为它适合我的需求。与重新启动实例相比,我倾向于调整大小和切换卷。你的旅费可能会改变。


1

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

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

它从/proc文件系统中读取数据,并报告磁盘空间利用率以及其他无法从外部观察到的其他系统指标:

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

它针对实例ID和映像ID报告这些指标。


嗨,您的github项目不见了
Roco CTZ

0

提出问题后的某个时候,AWS为脚本提供了报告磁盘使用情况的选项。

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

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

Docs 在此处提供了完整的选项列表和示例

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.