首页 > 解决方案 > 使用 AWS Cloudwatch 代理和 Python 记录自定义指标

问题描述

我们使用 Python 将自定义指标发送到 AWS(请参阅下面的现有代码),并单独使用AWS CloudWatch 代理为我们的 EC2 机器发送指标。但是,我们希望停止通过 boto 客户端发送自定义指标,而是使用 AWS CloudWatch 代理发送它们。

我找到了有关如何从StatsDcollectd发送自定义指标的详细信息,但不清楚如何发送您自己的自定义指标。我猜我们必须以类似的数据格式将我们的指标导出到其中之一,但目前尚不清楚如何做到这一点。总之,我们需要:

有没有人有一个涵盖这个的例子?

现有代码

import boto3
cloudwatch = boto3.client(
    service_name="cloudwatch",
    region_name=env["AWS_DEPLOYED_REGION"],
    api_version="2010-08-01",
)
cloudwatch.put_metric_data(
    Namespace="myNameSpace",
    MetricData=[
        {
            "MetricName": "someName",
            "Dimensions": [
                {"Name": "Stage", "Value": "..."},
                {"Name": "Purpose", "Value": "..."},
            ],
            "Values": values,
            "StorageResolution": 60,
            "Unit": "someUnit",
        },
    ],
)

标签: pythonamazon-web-servicesamazon-cloudwatchamazon-cloudwatch-metrics

解决方案


CloudWatch 代理支持StatsDCollectD来收集自定义指标。不支持使用 AWS CloudWatch 开发工具包并将其指向 CW 代理。

要使用 StatsD 或 CollectD,您只需遵循该特定工具的文档即可。然后 CloudWatch 为我在上面链接的 CloudWatch 代理的两个接口提供一个适配器。这对于已经将 StatsD 或 CollectD 用于自定义和应用程序指标的人通常很有用,但是在您的情况下它显然很痛苦,因为您必须加入其中一个或为了达到您想要的效果。


推荐阅读