配置 Application Signals
Application Signals 目前为预览版。如果您对此功能有任何反馈,可以通过 app-signals-feedback@amazon.com
本节包含有关配置 CloudWatch Application Signals 的信息。
跟踪采样率
默认情况下,启用 Application Signals 时,使用 reservoir=1/s
和 fixed_rate=5%
的默认采样率设置启用 X-Ray 集中采样。Amazon Distro for OpenTelemetry(ADOT)SDK 代理的环境变量设置如下。
环境变量 | 值 | 备注 |
---|---|---|
|
|
|
|
|
CloudWatch 代理的端点 |
有关更改采样配置的信息,请参阅以下内容:
要更改 X-Ray 采样,请参阅 Customizing sampling rules
要更改 ADOT 采样,请参阅 Configuring the OpenTelemetry Collector for X-Ray remote sampling
如果要禁用 X-Ray 集中采样并改用本地采样,请按如下方式为 ADOT SDK Java 代理设置以下值。以下示例将采样率设置为 5%。
环境变量 | 值 |
---|---|
|
|
|
|
有关更多高级采样设置的信息,请参阅 OTEL_TRACES_SAMPLER
管理高基数操作
Application Signals 包括 CloudWatch 代理中的设置,您可以使用这些设置来管理操作的基数和管理指标导出,以优化成本。默认情况下,当服务的不同操作数随着时间的推移超过默认阈值 500 时,指标限制功能将变为活动状态。您可以通过调整配置设置来调整行为。
确定指标限制是否已激活
您可以使用以下方法了解是否发生默认指标限制。如果是,应考虑执行下一节中的步骤,优化基数控制。
在 CloudWatch 控制台中,依次选择 Application Signals、服务。如果您看到名为 AllOtherOperations 的操作或名为 AllOtherRemoteOperations 的远程操作,则表示发生指标限制。
如果 Application Signals 收集的任何指标其
Operation
维度的值均为AllOtherOperations
,则说明发生指标限制。如果 Application Signals 收集的任何指标其
RemoteOperation
维度的值均为AllOtherRemoteOperations
,则说明发生指标限制。
优化基数控制
要优化基数控制,可以执行以下操作:
创建用于聚合操作的自定义规则。
配置您的指标限制策略。
创建用于聚合操作的自定义规则
高基数操作有时可能是由从上下文中提取的不当唯一值引起的。例如,发出路径中包含用户 ID 或会话 ID 的 HTTP/S 请求可能会导致数百个不同的操作。要解决此类问题,建议您使用自定义规则配置 CloudWatch 代理,以重写这些操作。
如果通过单个 RemoteOperation
调用(例如 PUT /api/customer/owners/123
、PUT /api/customer/owners/456
和类似的请求)生成大量不同的指标激增,则建议您将这些操作合并到一个 RemoteOperation
中。一种方法是将所有以 PUT /api/customer/owners/
开头的 PUT /api/customer/owners/{ownerId}
调用标准化为统一的格式,尤其是 RemoteOperation
。以下示例对此进行了说明。有关其他自定义规则的信息,请参阅 启用 CloudWatch Application Signals。
{ "logs":{ "metrics_collected":{ "app_signals":{ "rules":[ { "selectors":[ { "dimension":"RemoteOperation", "match":"PUT /api/customer/owners/*" } ], "replacements":[ { "target_dimension":"RemoteOperation", "value":"PUT /api/customer/owners/{ownerId}" } ], "action":"replace" } ] } } } }
在其他情况下,高基数指标可能已汇总到 AllOtherRemoteOperations
,并且可能不清楚包含哪些具体指标。CloudWatch 代理能够记录已删除的操作。要确定已删除的操作,请使用以下示例中的配置激活日志记录,直到问题再次出现。然后检查 CloudWatch 代理日志(可通过容器 stdout
或 EC2 日志文件访问)并搜索关键字 drop metric data
。
{ "agent": { "config": { "agent": { "debug": true }, "traces": { "traces_collected": { "app_signals": { } } }, "logs": { "metrics_collected": { "app_signals": { "limiter": { "log_dropped_metrics": true } } } } } } }
创建指标限制策略
如果默认指标限制配置无法解决服务的基数,则可以自定义指标限制器配置。为此,请在 CloudWatch 代理配置文件中的 logs/metrics_collected/app_signals
部分下添加 limiter
部分。
以下示例将指标限制阈值从 500 个不同指标降低到 100 个。
{ "logs": { "metrics_collected": { "app_signals": { "limiter": { "drop_threshold": 100 } } } } }