OpenTelemetry (Beta) opentelemetry-apm

Adobe正在将内置于AEM as a Cloud Service中的应用程序性能监控(APM)集成替换为OpenTelemetry,这是每个主要监控平台都支持的开放行业标准的可观察性方法。

现在,AEM as a Cloud Service包括完全由Adobe管理的内置APM集成。 该集成被替换后,您需要自带APM端点 — 一个接受OpenTelemetry数据的供应商平台,或一个自托管(本地)的OpenTelemetry兼容后端。

AVAILABILITY
本页为预告页。 下面描述的OpenTelemetry集成现在通过​ Beta ​程序提供;计划在2026年晚些时候提供更广泛的可用性。 要加入Beta计划,请发送电子邮件至aemcs-apm-beta@adobe.com,描述您的用例。 如果您的组织当前依赖于Adobe的内置APM集成,请使用此Beta时段来评估OpenTelemetry、选择您自己的APM端点,并在进行更改之前规划您的过渡。 注册后,请参阅下面的步骤1为您的环境启用它。

此更改的优势 benefits

  • 更多的开箱即用的遥测 — 将跟踪、量度和日志结合在一起,为您提供了比当今内置集成更全面的AEM应用程序行为描述。
  • 开放的行业标准 — OpenTelemetry在可观测性行业中广泛采用,为您的遥测提供一致、广泛支持的格式。
  • 将遥测发送到适合您组织的提供程序 — 包括当前提供程序(如果它支持OpenTelemetry)。
  • 高级网络支持 — 如果您的端点为专用端点,或要求从已知稳定IP地址离开出站流量,则此集成支持专用出口。
  • 用于量度、跟踪和日志的统一方法 — 这三个机制的单个集成点,而不是单独的机制。 日志转发将继续按原样工作,与此同时运行 — 您无需更改当前转发日志的方式。

概述 overview

AEM as a Cloud Service可以使用OpenTelemetry(一种开放的行业标准可观察性方法)从应用程序发出遥测,并将其转发给您选择的APM提供商。 这样,您就可以在其团队已使用的工具中,将AEM应用程序与其余系统一起监控。

使用此集成的常见原因包括:调查缓慢或失败的请求,随时间推移跟踪JVM运行状况和资源使用情况,为AEM层构建功能板和警报,以及在事件期间将AEM行为与您的其他服务相关联 — 所有这些都是在不离开团队已使用的监测工具的情况下进行的。

以下遥测位于范围内:

​* 跟踪 — 由AEM应用程序处理的分布式请求跟踪。
​* 量度 — 应用程序量度,如JVM运行时量度(内存、垃圾收集、线程)和入站HTTP请求率、延迟和错误率。
​* 日志 — AEM应用程序的日志,使用OpenTelemetry的日志信号发送。 日志是可选的,可以独立于跟踪和量度进行切换。

日志转发继续通过其现有的单独机制受到支持,不受此集成的影响。

WARNING
如果同时通过此OpenTelemetry集成​ 和 ​日志转发启用日志,并且两者都发送到同一目标,则您将在该处收到重复的日志消息。 每个目标仅启用一个路径,或将每个路径发送到不同的目标。
IMPORTANT
只有由AEM应用程序生成的遥测才会发送到APM提供商。 绝不包含有关底层Cloud Service运行时和基础架构的详细信息。 查看发送了哪些数据。

支持的OpenTelemetry版本 supported-versions

组件
支持
OpenTelemetry Java代理
2.x
导出协议
OTLP/HTTPS(HTTPS上的OpenTelemetry协议)

OpenTelemetry代理作为Cloud Service运行时的一部分运行。 Adobe会提供它并保持为最新版本,因此您无需自行安装、管理或升级它。 当Adobe更新代理时,特定的修补程序版本可能会发生更改。

支持的OpenTelemetry变体 supported-variants

可以使用以下任何OpenTelemetry代理变体(分发)来检测AEM应用程序,所有这些变体均基于上述版本。 选择适合您的工具的变体;有关详细信息,请参阅每个项目的文档:

变量
文档
OpenTelemetry(上游) — 默认值
OpenTelemetry Java检测
Grafana
适用于Java的Grafana OpenTelemetry分发
Splunk
OpenTelemetry Java的Splunk分发

默认上游变体可与任何APM供应商配合使用。 Grafana和Splunk变体为这些平台添加了特定于供应商的工具和默认值。

APM供应商 apm-vendors

可以将遥测发送给任何通过​ OTLP/HTTPS ​接受OpenTelemetry数据的应用程序性能监视供应商。 这与您选择的OpenTelemetry变体无关。 支持OTLP/HTTPS的供应商包括:

​* New Relic
​* Grafana Cloud
​* Splunk可观察性云
​* Dynatrace
​* Datadog
​* 短划线0
​* 蜂窝
​* 弹性可观测性
​* Sumo逻辑
​* ServiceNow Cloud可观察性

此列表并非详尽无遗 — 可以使用公开OTLP/HTTPS端点的任何后端。

支持的环境 supported-environments

您可以在Cloud Manager 生产、暂存​和​ 开发 ​环境中启用此集成。 每个环境都单独启用 — 请参阅步骤1。 不支持快速开发环境(RDE)。

网络连接 network-connectivity

必须可以通过HTTPS从AEM as a Cloud Service环境访问APM提供商的端点。

如果您的APM端点为私有,或者您需要从稳定的已知IP地址离开出站流量,则此集成支持具有专用出口的​高级联网。 请参阅高级网络以了解如何启用它。

发送哪些数据 what-data-is-sent

只有​ 您的AEM应用程序 ​生成的跟踪、量度和(如果已启用)日志才会发送到APM提供商。 以下示例说明了您可以预期的数据类型。

跟踪 — 跨越应用程序处理的请求,包括:

​* 入站HTTP请求跨越,由方法和路由命名(例如,GET /content/...)。
​* 在处理请求时生成的Servlet和出站数据库(JDBC)跨越。

过滤掉大量内部调度程序和运行状况探测活动(例如Quartz作业),以便跟踪始终专注于应用程序请求。 此版本中不会发出细粒度的AEM框架内部范围,例如Sling资源解析、OSGi服务或JCR访问。

度量 — JVM运行时和HTTP服务器度量,使用标准OpenTelemetry度量名称,包括:

​* JVM运行时: jvm.memory.used、jvm.gc.duration、jvm.thread.count和jvm.cpu.recent_utilization。
​* HTTP服务器: http.server.request.duration (请求率、延迟百分位数和错误率派生自此直方图)。

日志 — 启用时,使用OpenTelemetry的日志信号发送的AEM应用程序的日志条目。 日志条目具有与跟踪和量度(service.name, deployment.environment)相同的资源属性,因此它们可以关联到它们。

以这种方式发送的日志独立于日志转发 — 请参阅概述以了解为何将两者启用到同一目标会导致重复。

如何识别遥测 — 每个跟踪和度量都包含标识其源的资源属性,包括:

​* service.name — 标识您的项目、环境、服务和层(例如,cm-p<program>-e<environment>-aem-publish-prod)。
​* deployment.environment — 环境类型(例如,prod或stage)。

任何数据离开您的环境之前,都会删除有关Cloud Service运行时和托管应用程序的平台的信息,例如内部主机名、地址、容器标识符以及操作系统或进程详细信息。

设置集成 set-up

步骤1:启用集成 request-access

将config/otel.yaml文件添加到您的Cloud Manager配置管道存储库。 至少指定:

​* 此配置应用于的环境类型(例如,stage和prod)。
​* APM提供商的类型和OTLP/HTTPS端点URL(包括区域,如果适用)。
​* 您的提供商使用的身份验证方法(请参阅步骤2)。

请参阅下面的示例配置以了解确切的文件格式,包括New Relic、Dynatrace、Datadog、Dash0以及通用端点或自托管端点的示例。

步骤2:配置身份验证凭据 configure-credential

通过在Cloud Manager中声明名为OTEL_CUSTOMER_AUTH的机密环境变量,提供您的APM提供商所需的凭据。 将​ 已应用的服务 ​设置为​全部,以便凭据可用于创作、发布和预览层。

要添加或更新环境变量,您必须是部署管理器角色的成员。 有关完整过程,请参阅Cloud Manager中的环境变量。

根据提供商的身份验证方法设置值:

身份验证方法
OTEL_CUSTOMER_AUTH的值
示例
HTTP基本
单词Basic,空格,然后是username:password的Base64编码。
Basic YWxhZGRpbjpvcGVuc2VzYW1l
持有者令牌
单词Bearer,空格,然后您的令牌。
Bearer eyJhbGciOiJ...
API密钥
仅原始键值,前缀为​no。
New Relic摄取许可证密钥(例如,40个字符的密钥)
NOTE
对于​ Basic ​和​ Bearer ​身份验证,该值以标准Authorization标头发送,因此它必须包含方案字(Basic或Bearer)。 对于使用自定义标头(例如,New Relic的api-key标头)的提供程序,仅提供原始凭据值,并将配置文件中的authHeaderName设置为正确的标头名称(请参阅示例配置)。
CAUTION
OTEL_CUSTOMER_AUTH是凭据。 始终将其声明为​ 密钥 ​环境变量,因此其值从不存储在Git中或公开在日志中。

特定于提供程序的设置 provider-specific

下表总结了某些常见提供程序的端点和身份验证。 始终在提供商自己的文档中确认当前值。 对于使用自定义标头(例如,New Relic和Datadog)的提供程序,请将OTEL_CUSTOMER_AUTH设置为仅原始键值,并将配置文件中的authHeaderName设置为正确的标头名称(请参阅示例配置)。

提供程序
示例端点
身份验证
New Relic
https://otlp.nr-data.net (美国),https://otlp.eu01.nr-data.net (欧盟)
摄取​ 许可证 ​密钥,在自定义api-key标头中发送(原始值,无前缀)。 使用摄取许可证密钥,而不是用户(NRAK-)密钥。
Datadog
https://otlp.<your-datadog-site> (例如,https://otlp.datadoghq.com)
API密钥,在自定义dd-api-key标头中发送。 直接OTLP trace​摄取正在预览中。
Dynatrace
https://{your-environment-id}.live.dynatrace.com/api/v2/otlp
API访问令牌,在Authorization标头中作为Api-Token <token>发送。 将OTEL_CUSTOMER_AUTH设置为Api-Token <token>。
短划线0
https://ingress.<region>.aws.dash0.com:4318 (例如,https://ingress.eu-west-1.aws.dash0.com:4318)
身份验证令牌,在Authorization标头中作为Bearer <token>发送。 将OTEL_CUSTOMER_AUTH设置为Bearer <token>。

示例配置 example-configuration

根据特定于提供商的设置中的提供商,将类似以下示例之一的文件添加到您的配置管道存储库中的config/otel.yaml。

New Relic:

kind: "Otel"
version: "v1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "newrelic"
  endpoint: "https://otlp.nr-data.net"   # https://otlp.eu01.nr-data.net for the EU region
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"
  metrics: true   # optional
  logs: true      # optional — see Overview for the Log Forwarding duplicate-message warning

Dynatrace:

kind: "Otel"
version: "v1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "dynatrace"
  endpoint: "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp"
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"   # the secret's value must be "Api-Token <token>"
  metrics: true
  logs: true

Datadog:

kind: "Otel"
version: "v1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "generic"
  endpoint: "https://otlp.<your-datadog-site>"   # for example, https://otlp.datadoghq.com
  authHeaderName: "dd-api-key"
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"   # the secret's value is the raw API key, no prefix
  metrics: true
  logs: true

短划线0:

kind: "Otel"
version: "v1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "generic"
  endpoint: "https://ingress.<region>.aws.dash0.com:4318"
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"   # the secret's value must be "Bearer <token>"
  metrics: true
  logs: true

通用终结点或自托管终结点(例如,本地OpenTelemetry收集器):

kind: "Otel"
version: "v1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "generic"
  endpoint: "https://<your-otlp-endpoint>"
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"   # for example, "Basic <base64(user:pass)>"
  metrics: true
  logs: true

高级网络(专用出口) — 用于专用终结点,或要求流量从已知稳定IP地址离开的终结点(请参阅网络连接):

kind: "Otel"
version: "v1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "generic"
  endpoint: "https://<your-private-otlp-endpoint>"
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"
  metrics: true
  logs: true
  advancedNetworking: true   # routes this endpoint's egress through Advanced Networking instead of direct internet egress
IMPORTANT
advancedNetworking无效,除非Cloud Manager已为您的环境配置了高级网络 — 请在依赖它之前确认此设置。 请参阅高级联网。
NOTE
metrics和logs都是可选的,相互独立 — 如果只需要跟踪,请忽略任一选项,或将其设置为false。

步骤3:部署 deploy

该集成会在您环境的下一个​ 部署 ​上生效,即下次为Cloud Manager中的环境运行部署管道(例如,全栈部署)时。 如果自添加config/otel.yaml文件并设置凭据后尚未部署环境,请运行部署以激活它。

部署后,AEM应用程序中的跟踪、量度和(如果已启用)日志开始显示在您的APM提供商中。 使用步骤4确认。

步骤4:验证集成 verify

由于遥测数据会发送到您自己的APM提供程序,因此您确认集成是否来自提供程序的工具;Adobe不会将此数据显示回您。

部署完成后,请等待几分钟让数据到达,然后检查您的APM提供程序以了解以下信息:

​* 跟踪 — 您的AEM服务的新范围。 例如,搜索创作或发布层的service.name,或入站HTTP请求范围。
​* 指标 — 您的服务的传入jvm.*和http.server.*指标。
​* 日志 (如果已启用) — AEM服务的传入日志条目。

如果显示此数据,则表示集成运行正常。

疑难解答 troubleshooting

如果APM提供程序中未显示遥测,请检查以下各项:

症状
检查内容
部署后无数据
确认部署已成功完成,并且自集成启用以来部署已运行。 等待几分钟让第一个数据到达,然后重新检查端点URL和OTEL_CUSTOMER_AUTH值。
身份验证错误或被拒绝的数据
验证OTEL_CUSTOMER_AUTH值是否与提供商要求的格式匹配(请参阅步骤2和提供商特定的设置)。 常见错误包括或省略方案词(Basic、Bearer或Api-Token)并使用错误的密钥 — 例如,New Relic用户(NRAK-)密钥而不是引入许可证密钥。
端点不可访问
确认端点URL和区域正确,并且端点可通过HTTPS访问。 如果您的端点为私有的,或者您的提供商需要来自已知IP地址的流量,请启用具有专用出口的高级网络。
不确定是否需要高级联网
仅当无法从公共Internet访问APM端点时,或者提供商要求您允许列表稳定的源IP地址时,才需要它。 公共SaaS端点(如上面的提供商示例)不需要它。
没有日志条目,但会显示跟踪和量度
确认您的配置中已启用日志(请参阅发送哪些数据)。 如果您的应用程序最近没有记录任何内容,则可能尚未发送任何内容。
目标位置存在重复的日志消息
您可能同时具有此集成的日志和日志转发以发送到同一目标。 请参阅概述 — 每个目标仅启用一个路径。

如果在这些检查后仍未显示遥测,请联系aemcs-apm-beta@adobe.com并提供您的程序和环境的详细信息。

常见问题解答 faq

为什么发生此更改?

AEM as a Cloud Service客户要求提供其他量度和操作数据,以及上下文中的跟踪、范围和日志。 OpenTelemetry是一个支持所有这些功能的行业标准,并以广泛支持的格式(OTLP)输出它们。

如果我启用OpenTelemetry,New Relic会发生什么情况?

运行配置管道时,将不再从AEM as a Cloud Service传输到New Relic的数据。

如果我从New Relic迁移到OpenTelemetry,是否可以移回?

是。 通过配置管道禁用OpenTelemetry,然后运行全栈栈管道以完成。 在2026年11月底之前,该操作是可能的。

2026年11月之后会发生什么?

Adobe将从其内置的APM解决方案迁移至OpenTelemetry作为其永久可观察性解决方案。

​* 日志转发
​* 配置高级网络
​* Cloud Manager中的环境变量

recommendation-more-help
experience-manager-cloud-service-help-main-toc