【问题标题】:Custom metrics using the CloudWatch agent with the StatsD protocol使用 CloudWatch 代理和 StatsD 协议的自定义指标
【发布时间】:2021-09-22 00:35:04
【问题描述】:

我有一个在 EC2 实例中运行的 Web 应用程序。它有不同的 API 端点。我想计算每个 API 被调用的次数。 Web 应用程序是 Java 语言。

谁能向我推荐一些文章,我可以在其中找到合适的 Java 实现以将 statsDCloudWatch 集成?

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 amazon-cloudwatch statsd


    【解决方案1】:

    参考他们的文档页面https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html,他们提到在同一页面中发布指标,对于您的客户端,您可以参考https://github.com/etsy/statsd/wiki#client-implementations

    通常我采用一种简单的方法,不使用 statsd,将事件记录在文件中并将文件同步到 Cloudwatch,在 cloudwatch 中您可以配置过滤器,并且基于过滤器,您可以增加自定义指标。

    【讨论】:

      【解决方案2】:
      1. Install CloudWatch EC2 实例上的代理

      2. 找到并打开CW代理config file

      3. Add statsd section 进入配置文件(JSON 格式)

        {
          ....,
          "statsd": {
            "metrics_aggregation_interval": 60,
            "metrics_collection_interval": 10,
            "service_address": ":8125"
          }
        }
        
      4. AWS CloudWatch 代理足够聪明,可以理解自定义标签,帮助您正确拆分从不同 API 方法收集的统计信息(“正确”在这里是指按维度名称而不是指标名称拆分 API 方法统计信息)。所以你需要一个支持标签的 Java 客户端库。例如DataDog client

      5. 按照包文档中的说明配置客户端实例,仅此而已。现在您可以在每个 REST API 操作开始时执行以下操作:

        statsd.incrementCounter(“InvocationCount”, 1, “host:YOUR-EC2-INSTANCE-NAME”, “operation:YOUR-REST-OPERATION-NAME”);
        
      6. CloudWatch 将自动处理所有其他事情。您将能够在“CWAgent”命名空间下的 AWS CloudWatch 控制台中看到您的指标数据流动。请注意,statds 客户端调用与 CW 控制台中的数据可见性之间的平均延迟约为 10-15 分钟。

      7. 在每个 REST API 操作中手动编写 statsd 调用可能不是一个好主意。 Decorators 将帮助您只用几行代码自动检测它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多