使用 AWS Cloudwatch Agent 和 Python 记录自定义指标

2024-01-25

我们使用 Python 将自定义指标发送到 AWS(请参阅下面的现有代码)并单独使用AWS CloudWatch 代理 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html发送我们的 EC2 机器的指标。但是,我们希望停止通过 boto 客户端发送自定义指标,而是使用 AWS CloudWatch 代理发送它们。

我找到了有关如何发送自定义指标的详细信息StatsD https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html and collectd https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html,但尚不清楚如何发送您自己的自定义指标。我猜我们必须以与其中之一类似的数据格式导出指标,但目前还不清楚如何做到这一点。总而言之,我们需要:

  • 将 Python 中的指标以正确的格式导出到日志文件
  • 更新 AWS CloudWatch 代理以从这些日志文件中读取并上传指标

有人有一个例子来说明这一点吗?

现有代码

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",
        },
    ],
)

CloudWatch 代理支持StatsD https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html or CollectD https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-collectd.html用于收集自定义指标。不支持使用 AWS CloudWatch SDK 并将其指向 CW 代理。

要使用 StatsD 或 CollectD,您只需按照该特定工具的文档进行操作即可。然后,CloudWatch 为 CloudWatch 代理的接口提供一个适配器,如我上面链接的。这对于已经使用 StatsD 或 CollectD 进行自定义和应用程序指标的人来说通常很有用,但是在您的情况下这显然很痛苦,因为您必须使用 StatsD 或 CollectD 才能达到所需的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AWS Cloudwatch Agent 和 Python 记录自定义指标 的相关文章

随机推荐