![AWS CloudWatch 自定义指标发布示例](https://linux22.com/image/1398639/AWS%20CloudWatch%20%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E6%A0%87%E5%8F%91%E5%B8%83%E7%A4%BA%E4%BE%8B.png)
我正在努力将自定义指标发布到 AWS CloudWatch。问题是我的指标“testmetric”没有显示在 CloudWatch UI 上。我可能错过了 UI 上应该显示指标的部分,或者我可能没有在某个地方启用某些功能……一无所知
我尝试使用 Boto(python 包 boto==2.8.0)
from boto.ec2.cloudwatch import CloudWatchConnection
cwc = CloudWatchConnection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
cwc.put_metric_data(**{
"namespace" : "testns",
"name" : "testmetric",
"unit" : "Count",
"value" : 3
})
还尝试了 loggly 的这个简单模块:https://github.com/loggly/loggly-watch/blob/master/cloudwatch.py
谢谢
答案1
您错误地将参数传递给了 put_metric_data。您将它们作为单个字典传递,而它们应该是像这样的单独参数:
cwc.put_metric_data(namespace="testns",name="testmetric",unit="Count",value=3.0)
此外,如上所示,值应该是浮点数,而不是整数。
答案2
如果没有提供区域CloudWatchConnection
,它会自动选择us-east-1
,并且指标应该在那里可用。
另外,获取区域时要小心,从 boto v2.27.0 开始,boto.ec2.get_region("us-west-1") 返回的CloudWatchConnection:ec2.us-west-1.amazonaws.com
是您需要的CloudWatchConnection:monitoring.us-west-1.amazonaws.com
。请使用类似下面的代码:
for r in boto.ec2.cloudwatch.regions():
if (r.name == 'us-west-1'):
region = r
如果您按名称进行过滤,AWS UI 应该会显示该指标,或者可以通过从下拉列表中选择自定义命名空间来访问它: