亚马逊AWS官方博客

全新 – Amazon CloudWatch 高精度自定义指标和警报

Amazon CloudWatch 自 2009 年年初以来一直是 AWS 的重要组成部分。CloudWatch 与 Auto ScalingElastic Load Balancing 三个产品包组合在一起发布,它已发展成为功能极强、面向 AWS 云中运行的 AWS 资源和应用程序的监控服务。CloudWatch 自定义指标 (早在 2011 年发布) 可用在 CloudWatch 中存储业务和应用程序指标、以图形方式查看这些指标,并基于 CloudWatch 警报启动操作。不用说,这些年来,我们的 CloudWatch 增强了很多的功能!最近的一些增强功能包括延长指标保留期 (以及一项用户界面更新)、控制面板控制面板 API/CloudFormation 支持以及控制面板上的警报

一开始,指标是按照五分钟的时间间隔存储的;后来,在 2010 年,应客户请求缩短到一分钟 (也称为详细监控)。这是一个广受欢迎的改变,但现在我们可以做得更好。我们的客户在流式传输视频、开展限时抢购、每天上百次部署代码,并随着情况的变化非常快速地扩展和缩减应用程序。对于所有这些情况,一分钟为时间间隔还是太长了。这样有可能错过重要的瞬间高峰;分散 (然而事实上相关) 的事件难以跨越时间进行关联,并且在发生故障时的 MTTR (平均修复时间) 过高。

全新的高精度指标
今天,我们将增加对高精度自定义指标的支持,我们还计划以后逐渐增加对 AWS 服务的支持。现在您的应用程序可以以 1 秒的精度将指标发布到 CloudWatch。在发布指标数秒后您就可以在屏幕上滚动查看这些指标,您还可以设置高精度 CloudWatch 警报,可以精细到每 10 秒评估一次。

想象一下可用内存较少时发出警报。这通常是一种瞬时的情况,如果取样不够频繁,将很难捕获到。使用高精度指标,您可以在数秒内查看、检测 (通过警报) 到这种情况并相应地执行操作。

在此例中,右侧的警报不会触发,您也不会知道出现了问题。

发布高精度指标
您可以用两种不同的方式发布高精度指标:

  • APIPutMetricData 函数现在接受可选 StorageResolution 参数。将此参数设置为 1 可发布高精度指标;省略它 (或设置为 60) 可按照标准的 1 分钟精度发布指标。
  • collectd 插件 – collectd 的 CloudWatch 插件已更新,现在支持高精度指标的收集和发布。您需要在该插件的配置文件中设置 enable_high_definition_metrics 参数。

CloudWatch 指标随时间累积;随着指标存在时间变长,精度将大大降低。下面是时间设置:

  • 1 秒指标可用 3 小时。
  • 60 秒指标可用 15 天。
  • 5 分钟指标可用 63 天。
  • 1 小时指标可用 455 天 (15 个月)。

当您调用 GetMetricStatistics 时,可以指定 1、5、10、30 或 60 秒的任意倍数作为高精度指标。您可以指定 60 秒的任意倍数作为标准指标。

快速演示
我选用我最近的 EC2 实例,它安装了最新版本的 collectd 和 Python 插件:

$ sudo yum install collectd collectd-python

然后我下载该插件的设置脚本,让它变成可执行文件,然后运行:

$ wget https://raw.githubusercontent.com/awslabs/collectd-cloudwatch/master/src/setup.py
$ chmod a+x setup.py
$ sudo ./setup.py

我已创建一个合适的 IAM 角色,并将它添加到我的实例中;在设置过程中自动检测到了它。有人要求我启用高精度指标:

collectd 在数秒内开始运行并发布指标。我打开 CloudWatch 控制台查看:

然后我放大,详细查看指标:

我还以 10 秒的时间间隔创建一个警报来检查 memory.percent.used 指标。这样我可以更方便地检测短时间内使用很多内存的情况:

现在提供
现在,高精度自定义指标和警报在所有公共 AWS 区域都可用,并且很快还会支持 AWS GovCloud (US)

目前您每个月可以免费存储 10 个指标;有关更多信息,请参阅 CloudWatch 定价页面。高精度指标的定价与标准精度指标相同,如果需要使用更多指标,用量套餐可以为您节省费用 (对于每个指标)。高精度警报价格为每月每个警报 0.30 美元。