以小时为单位显示CloudWatch指标

Nik*_*ams 2 amazon-web-services amazon-cloudwatch

我有一个单位为秒的自定义云监视指标。(代表缓存的时间)

与往常一样,我希望将其转换为小时数,即125,000,以提高可读性。

那可能吗?

MyS*_*ver 5

这随着Metrics Math的添加而改变。您可以手动(从控制台)和从CloudFormation仪表板模板对数据进行各种转换。


在控制台中:请参见上面的链接,其中显示:

向图形添加数学表达式

  1. 通过https://console.aws.amazon.com/cloudwatch/打开CloudWatch控制台。

  2. 创建或编辑图形或线小部件。

  3. 选择图形指标。

  4. 选择添加数学表达式。表达式将出现新行。

  5. 对于“详细信息”列,键入数学表达式。下节中的表列出了可以在表达式中使用的功能。

    要将度量或另一个表达式的结果用作该表达式的公式的一部分,请使用Id列中显示的值。例如,m1+m2e1-MIN(e1)


CloudFormation模板

您可以添加新指标(即“指标数学”表达式)来转换现有指标。您可以添加,减去,相乘等指标和标量。在您的情况下,您可能只想使用除法,如下例所示:

假设您metrics的模板中有以下存储桶请求延迟对象:

"metrics":[
  ["AWS/S3","TotalRequestLatency","BucketName","MyBucketName"]
]
Run Code Online (Sandbox Code Playgroud)

延迟默认值以毫秒为单位。让我们在几秒钟内绘制它,只是为了好玩。1s = 1,000ms因此我们将添加以下内容:

"metrics":[
  ["AWS/S3","TotalRequestLatency","BucketName","MyBucketName",{"id": "timeInMillis"}],
  [{"expression":"timeInMillis / 1000", "label":"LatencyInSeconds","id":"timeInSeconds"}]
]
Run Code Online (Sandbox Code Playgroud)

请注意,expression有权访问ID其他指标。有用的命名在情况变得更复杂时会很有用,但关键是将表达式中的变量与ID分配给相应指标的变量匹配。

这给我们留下了一个带有两个度量的图形:一个毫秒,另一个秒。如果要丢失毫秒,可以这样做,但是我们需要保留度量值以计算数学表达式,因此我们使用以下解决方法:

"metrics":[
  ["AWS/S3","TotalRequestLatency","BucketName","MyBucketName",{"id": "timeInMillis","visible":false}],
  [{"expression":"timeInMillis / 1000", "label":"LatencyInSeconds","id":"timeInSeconds"}]
]
Run Code Online (Sandbox Code Playgroud)

使指标不可见使它脱离图表,同时仍允许我们根据它来计算表达式。


小智 0

Cloudwatch 不进行任何单位转换(即秒转换为小时等)。因此,您无法使用 AWS 控制台显示转换为小时的“秒”数据点值。

您可以将指标值发布为“小时”(将“单位”字段留空或将其设置为“无”)。

否则,如果您仍然想提供单位为“秒”的数据点,您可以检索数据点(使用 GetMetricStatistics API)并使用其他仪表板/图形解决方案绘制值的图表。