对如何从cloudwatch api 批量获取指标感到困惑

问题描述 投票:0回答:2

我需要对我的各种亚马逊ec2实例进行一些监控,所以我的计划最初是创建一个带有数字小部件的仪表板,并选择我感兴趣的各种内容,例如“CPUUtilization”,然后我可以获取该仪表板并可以访问所有当前的指标值。但是,当我打电话获取该仪表板时,我收到的正文是:

{"widgets"=>[{"type"=>"metric", "x"=>0, "y"=>0, "width"=>24, "height"=>6, "properties"=>{"view"=>"singleValue", "metrics"=>[["AWS/EC2", "CPUUtilization", "InstanceId", "i-0ea0081d91f6e4aff"], [".", "DiskWriteBytes", ".", "."], [".", "CPUCreditUsage", ".", "."], [".", "StatusCheckFailed", ".", "."], [".", "NetworkPacketsIn", ".", "."], [".", "NetworkOut", ".", "."], [".", "StatusCheckFailed_System", ".", "."], [".", "CPUCreditBalance", ".", "."], [".", "StatusCheckFailed_Instance", ".", "."], [".", "NetworkIn", ".", "."], [".", "NetworkPacketsOut", ".", "."], [".", "DiskReadBytes", ".", "."], [".", "DiskWriteOps", ".", "."], [".", "DiskReadOps", ".", "."]], "region"=>"us-east-1"}}]}

它不包含任何指标数据,仅包含指标名称。所以这没有帮助。

list_metrics 方法看起来很有前途,除了两件事......

1)它想要一个单一的指标?尽管文档描述了“列出指定指标”的方法。

输入是一个对象,而不是数组,要使用此方法,我必须这样做:

client.list_metrics({
  namespace: "AWS/EC2",
  metric_name: "CPUUtilization",
  dimensions: [
    {
      name: "InstanceId", 
      value: "i-0fc0181c98e6e4a66"
    },
  ],
})

这给了我这个对象:

#<struct Aws::CloudWatch::Types::ListMetricsOutput metrics=[#<struct Aws::CloudWatch::Types::Metric namespace="AWS/EC2", metric_name="CPUUtilization", dimensions=[#<struct Aws::CloudWatch::Types::Dimension name="InstanceId", value="i-0fc0181c98e6e4a66">]>], next_token=nil>

这导致 2) 它只返回指标名称,没有实际值...

我做错了什么?

我如何简单地请求各种实例 ID 的一大堆指标,并获得包含我请求的指标的实际指标值的响应?

ruby amazon-web-services aws-sdk amazon-cloudwatch
2个回答
1
投票

简而言之,您无法在对 GetMetricStatistics API 的单个请求中获取多个指标的数据。您首先列出指标的方法是正确的。

您可以使用 ListMetrics API 并仅设置命名空间和指标名称(删除要设置确切实例的维度)。这应该为您提供过去 2 周内运行的所有实例的指标。然后您需要循环它们并为每个调用 GetMetricStatistics。

您尝试使用的仪表板 API 旨在操作仪表板(创建、删除、编辑仪表板以及仪表板上的内容)。这些 API 不会为您提供任何数据。然而,当仪表板 API 发布时,他们还发布了一篇关于如何使用它们的博客文章。在那篇文章中,他们使用了一个示例来说明如何使用 API 创建包含所有正在运行的 EC2 实例的指标的仪表板。也许这对你有用:

https://aws.amazon.com/blogs/aws/new-api-cloudformation-support-for-amazon-cloudwatch-dashboards/


0
投票

对于现在登陆这里的任何人来说,有

GetMetricData
API 请求,您可以在其中请求来自多个指标的数据。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html

此批量请求的计费方式也与单个 API 请求不同: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_billing.html#w14aac11c11b3c11

© www.soinside.com 2019 - 2024. All rights reserved.