启用 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
如果action
为replace
,则是必需的。一组维度和值对,当action
为replace
时,将应用于与指定selectors
匹配的指标和跟踪。每个替换必须提供以下字段:target_dimension
(如果replacements
不为空,则为必填项):指定需要替换的维度。value
(如果replacements
不为空,则为必填项):用于替换target_dimension
原始值的值。
limiter
(可选)使用此部分可限制 Application Signals 发送到 CloudWatch 的指标和维度数量,以优化您的成本。disabled
(可选)如果为true
,则禁用指标限制功能。默认值为false
drop_threshold
(可选)一个 CloudWatch 代理在一个轮换时间间隔内可以导出的每项服务的最大不同指标数量。默认值为 500。rotation_interval
(可选)限制器重置指标记录以进行区分计数的间隔。此项表示为带有数字序列和单位后缀的字符串。支持分数。支持的单位后缀为s
、m
、h
、ms
、us
和ns
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
:
规则
keep01
可确保将维度Service
保留为pet-clinic-frontend
、维度RemoteService
保留为customers-service
的所有指标和跟踪。对于在应用
keep01
后处理的指标和跟踪,drop01
规则可确保删除维度Operation
为GET /api/customer/owners/*
的指标和跟踪。对于在应用
drop01
后处理的指标和跟踪,replace01
规则可更新维度Operation
为PUT /owners
、维度RemoteOperation
为PUT /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": {} } } } }