启用 CloudWatch Application Signals - Amazon CloudWatch

启用 CloudWatch Application Signals

使用 CloudWatch Application Signals 自动检测 AWS 上的应用程序,以便根据业务目标跟踪应用程序性能。Application Signals 为您提供统一的、以应用程序为中心的视图,包括您的 Java 应用程序、其依赖项和边缘。有关更多信息,请参阅 Application Signals

CloudWatch Application Signals 利用 CloudWatch 代理从自动检测的应用程序接收指标和跟踪,您还可以选择应用规则来减少高基数数据,然后将处理后的遥测数据发布到 CloudWatch。您可以使用代理配置文件为 CloudWatch 代理提供专门针对 Application Signals 的自定义配置。首先,如果代理配置文件 logs 部分中的 metrics_collected 部分下存在 application_signals 部分,则表明 CloudWatch 代理将从自动检测的应用程序接收指标。同样,如果代理配置文件 traces 部分中的 traces_collected 部分下存在 application_signals 部分,则表明已启用 CloudWatch 代理来接收来自自动检测的应用程序的跟踪。此外,您可以选择传入自定义配置规则,以减少发布本节所述的高基数遥测数据。

  • 对于 Amazon EKS 集群,当您安装 Amazon CloudWatch Observability EKS 附加组件时,CloudWatch 代理将默认启用,以接收来自自动检测的应用程序的指标和跟踪。如果您想选择传入自定义配置规则,则可以在创建自定义代理配置时将,自定义代理配置传递给 Amazon EKS 附加组件,或者使用其他配置对其进行更新,如 (可选)其他配置 中所述。

  • 对于其他支持的平台(包括 Amazon EC2),您必须使用代理配置启动 CloudWatch 代理,该代理配置可通过指定 application_signals 部分和任何自定义配置规则(可选)来启用 Application Signals,如本节后文所述。

以下是 CloudWatch 代理配置文件中与 CloudWatch Application Signals 相关的字段的概述。

  • logs

    • metrics_collected:此字段可包含特定部分,用于指定代理将收集日志以启用使用案例,例如 CloudWatch Application Signals 和针对 Amazon EKS 增强了可观测性的 Container Insights。

      注意

      以前,此部分还用于指定代理将收集采用嵌入式指标格式的日志。不再需要这些设置。

      • application_signals(可选):指定您要启用 CloudWatch Application Signals 以接收来自自动检测的应用程序的指标,以促进 CloudWatch Application Signals。

        • rules(可选):一组规则,用于有条件地选择指标和跟踪,并应用操作来应对高基数场景。每个规则都可以包含以下字段:

          • rule_name(可选):规则的名称。

          • selectors(可选):一组指标和跟踪维度匹配程序。每个选择器必须提供以下字段:

            • dimension(如果 selectors 不为空,则为必填项):这指定了用作筛选条件的指标和跟踪的维度。

            • match(如果 selectors 不为空,则为必填项):用于匹配指定维度的值的通配符模式。

          • action(可选):要应用于与指定选择器匹配的指标和跟踪的操作。action 的值必须是以下关键字之一:

            • keep 指定仅将 selectors 匹配的指标和跟踪发送到 CloudWatch。

            • drop 指定删除与 selectors 匹配的指标和跟踪。

            • replace 指定替换与 selectors 匹配的指标和跟踪的维度。这些维度将根据 replacements 部分进行替换。

          • replacements如果 actionreplace,则是必需的。一组维度和值对,当 actionreplace 时,将应用于与指定 selectors 匹配的指标和跟踪。每个替换必须提供以下字段:

            • target_dimension(如果 replacements 不为空,则为必填项):指定需要替换的维度。

            • value(如果 replacements 不为空,则为必填项):用于替换 target_dimension 原始值的值。

        • limiter(可选)使用此部分可限制 Application Signals 发送到 CloudWatch 的指标和维度数量,以优化您的成本。

          • disabled(可选)如果为 true,则禁用指标限制功能。默认值为 false

          • drop_threshold(可选)一个 CloudWatch 代理在一个轮换时间间隔内可以导出的每项服务的最大不同指标数量。默认值为 500。

          • rotation_interval(可选)限制器重置指标记录以进行区分计数的间隔。此项表示为带有数字序列和单位后缀的字符串。支持分数。支持的单位后缀为 smhmsusns

            1h 的默认值为 1 小时。

          • log_dropped_metrics(可选)指定删除 Application Signals 指标时代理是否应将日志写入 CloudWatch 代理日志。默认为 false

            注意

            要激活此日志记录,还必须将 agent 部分中的 debug 参数设置为 true

  • traces

    • traces_collected

      • application_signals 可选:指定此项可让 CloudWatch 代理接收来自您的自动检测应用程序的跟踪,从而促进 CloudWatch Application Signals。

注意

尽管自定义 application_signals 规则是在 logs 部分中包含的 metrics_collected 部分下指定的,但也隐含地应用于 traces_collected 部分。同一组规则将应用于指标和跟踪。

当有多个具有不同操作的规则时,按以下顺序应用:keep,然后 drop,然后 replace

下面是一个应用自定义规则的完整 CloudWatch 代理配置文件示例。

{ "logs": { "metrics_collected": { "application_signals": { "rules": [ { "rule_name": "keep01", "selectors": [ { "dimension": "Service", "match": "pet-clinic-frontend" }, { "dimension": "RemoteService", "match": "customers-service" } ], "action": "keep" }, { "rule_name": "drop01", "selectors": [ { "dimension": "Operation", "match": "GET /api/customer/owners/*" } ], "action": "drop" }, { "rule_name": "replace01", "selectors": [ { "dimension": "Operation", "match": "PUT /api/customer/owners/*/pets/*" }, { "dimension": "RemoteOperation", "match": "PUT /owners" } ], "replacements": [ { "target_dimension": "Operation", "value": "PUT /api/customer/owners/{ownerId}/pets{petId}" } ], "action": "replace" } ] } } }, "traces": { "traces_collected": { "application_signals": {} } } }

对于前面的示例配置文件,按如下方式处理 rules

  1. 规则 keep01 可确保将维度 Service 保留为 pet-clinic-frontend、维度 RemoteService 保留为 customers-service 的所有指标和跟踪。

  2. 对于在应用 keep01 后处理的指标和跟踪,drop01 规则可确保删除维度 OperationGET /api/customer/owners/* 的指标和跟踪。

  3. 对于在应用 drop01 后处理的指标和跟踪,replace01 规则可更新维度 OperationPUT /owners、维度 RemoteOperationPUT /api/customer/owners/*/pets/* 的指标和跟踪,其 Operation 维度现在被替换为 PUT /api/customer/owners/{ownerId}/pets{petId}

以下是 CloudWatch 配置文件的完整示例,该文件通过将指标限制更改为 100、启用已删除指标的日志记录,以及将轮换间隔设置为两小时来管理 Application Signals 中的基数。

{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "disabled": false, "drop_threshold": 100, "rotation_interval": "2h", "log_dropped_metrics": true } } }, "traces": { "traces_collected": { "application_signals": {} } } } }