AEM的OpenTelemetry opentelemetry-apm

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

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

AVAILABILITY
此功能处于​ 有限可用性 ​中。 若要使用它,请通过电子邮件发送aemcs-apm-beta@adobe.com来请求访问 — Adobe会在您回复请求后不久为您的环境启用OpenTelemetry。 如果您的环境当前使用Adobe的内置APM集成,则该集成会在启用OpenTelemetry后停止发送数据,因为二者不能同时运行。
请注意,它​ 不 ​可用于受HIPAA影响的环境、快速开发环境(RDE)和沙盒。

此更改的优势 benefits

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

概述 overview

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

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

以下遥测位于范围内:

  • 跟踪 — 由AEM应用程序处理的分布式请求跟踪。
  • 量度 — 应用程序量度,如JVM运行时量度(内存、垃圾收集、线程)和入站HTTP请求率、延迟和错误率。 用于请求处理、后台作业和内容存储库的AEM量度正在推广到所有环境。 环境更新后,这些标记将自动显示,不会更改您的配置。
  • 日志 — 您的AEM应用程序位于WARN级别及更高级别的日志,使用OpenTelemetry的日志信号发送。 日志是可选的,可以独立于跟踪和量度进行切换。

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

要了解它的工作原理,包括遥测如何从AEM流向APM平台、您控制的内容以及如何选择平台,请参阅教程通过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变体为这些平台添加了特定于供应商的工具和默认值。 Adobe在部署时将选定的代理变体安装在AEM容器中。 在有限可用期间,默认情况下使用上游变体;要使用Grafana或Splunk变体,请在请求访问时请求它。 config/otel.yaml文件配置遥测的位置;它没有字段来选择代理变体。

NOTE
config/otel.yaml文件(例如,grafana或splunk)中的type值可识别您的APM提供程序,以便您的端点和凭据正确验证。 它不会选择代理变体。

APM供应商 apm-vendors

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

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

支持的环境 supported-environments

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

现有APM集成 existing-apm

OpenTelemetry不能与同一环境中的其他APM代理一起运行:

  • Adobe的内置APM集成(New Relic) — OpenTelemetry将替换它。 Adobe应您的请求为环境启用OpenTelemetry后,New Relic将不再接收来自该环境的数据。 您可以向后移动到2026年11月底 — 请参阅常见问题解答。
  • Dynatrace OneAgent — 如果在环境中安装了Dynatrace OneAgent,则它优先。 配置管道拒绝您的OpenTelemetry配置,并返回一个错误,说明Dynatrace已在环境中处于活动状态。 若要在那里使用OpenTelemetry,请联系Adobe支持部门以首先删除Dynatrace OneAgent。
NOTE
您仍然可以将OpenTelemetry数据​作为您的APM提供程序发送到 Dynatrace — 请参阅特定于提供程序的设置。 上述优先规则仅适用于在您的环境中运行的Dynatrace OneAgent。

网络连接 network-connectivity

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

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

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

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

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

  • 入站HTTP请求跨越,由方法和路由命名(例如,GET /content/...)。
  • 在处理请求时生成的Servlet、出站HTTP和出站数据库(JDBC)范围。
  • AEM框架可显示处理请求时AEM中的逗留时间:Sling请求处理、组件渲染、HTL脚本渲染和JCR查询。

过滤掉大量内部调度程序和运行状况探测活动(例如Quartz作业),以便跟踪始终专注于应用程序请求。

量度 — JVM运行时和HTTP服务器量度,使用标准OpenTelemetry量度名称以及aem.前缀下的AEM量度(正在转出;它们自动显示,无配置更改),包括:

  • JVM运行时: jvm.memory.used、jvm.gc.duration、jvm.thread.count和jvm.cpu.recent_utilization。
  • HTTP服务器: http.server.request.duration (请求率、延迟百分位数和错误率派生自此直方图)。
  • AEM,正在转出:请求和错误计数(aem.requests.*)、Jetty线程池使用情况(aem.jetty.threads.*)、Sling作业、调度程序和身份验证(aem.sling.*)、存储库会话、查询、观察、索引和二进制存储(aem.oak.*),以及资产处理(aem.dam.*)。

日志 — 您的AEM应用程序位于WARN级别及更高级别的日志条目,在启用时使用OpenTelemetry的日志信号发送。 正在开发调整此日志级别的功能。 日志条目具有与跟踪和量度(service.name, deployment.environment)相同的资源属性,以及生成它们的请求的跟踪和范围标识符,因此它们可以与跟踪相关联。

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

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

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

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

设置集成 set-up

有关使用WKND示例项目的引导式演练(从在Cloud Manager中存储凭据到在可观察性平台中验证遥测),请参阅教程配置OpenTelemetry以深入了解AEM应用程序。

步骤1:请求访问 request-access

向aemcs-apm-beta@adobe.com发送电子邮件,其中包含您的Cloud Manager项目ID以及要启用的环境ID。 如果要使用Grafana或Splunk代理变体而不是默认变体,请在电子邮件中这样说(请参阅支持的OpenTelemetry变体)。

Adobe在回复您的请求后不久即为这些环境启用OpenTelemetry。 如果环境当前使用Adobe的内置APM集成,则该集成会在启用OpenTelemetry后停止发送数据 — 请参阅现有APM集成。

步骤2:添加配置文件 add-configuration

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

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

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

步骤3:配置身份验证凭据 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>。
Grafana Cloud
https://otlp-gateway-<zone>.grafana.net/otlp (例如,https://otlp-gateway-prod-us-east-0.grafana.net/otlp)
Grafana云实例ID和访问策略令牌,在Authorization标头中作为HTTP Basic发送。 将OTEL_CUSTOMER_AUTH设置为Basic <base64(instanceID:token)>。
Splunk
OpenTelemetry Collector的Splunk分发的OTLP/HTTP端点,作为网关运行(例如,https://<your-splunk-otel-collector>:4318)
网关配置为接受的凭据,在Authorization标头中发送(例如,Bearer <token>)。

示例配置 example-configuration

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

New Relic:

kind: "Otel"
version: "1"
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: "1"
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: "1"
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: "1"
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

Grafana云:

kind: "Otel"
version: "1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "grafana"
  endpoint: "https://otlp-gateway-<zone>.grafana.net/otlp"   # for example, https://otlp-gateway-prod-us-east-0.grafana.net/otlp
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"   # the secret's value must be "Basic <base64(instanceID:token)>"
  metrics: true
  logs: true

Splunk (通过作为网关运行的OpenTelemetry收集器的Splunk分发):

kind: "Otel"
version: "1"
metadata:
  envTypes:
    - "stage"
    - "prod"
data:
  enabled: true
  type: "splunk"
  endpoint: "https://<your-splunk-otel-collector>:4318"
  authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"   # the credential your gateway accepts, for example "Bearer <token>"
  metrics: true
  logs: true

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

kind: "Otel"
version: "1"
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: "1"
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。

步骤4:部署 deploy

在Adobe确认您的环境启用了OpenTelemetry(请参阅步骤1)后,运行配置管道以部署config/otel.yaml。 管道在应用配置之前验证您的配置并检查您的端点和凭据,因此大多数错误直接在管道日志中报告。

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

步骤5:验证集成 verify

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

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

  • 跟踪 — 您的AEM服务的新范围。 例如,搜索创作或发布层的service.name,或入站HTTP请求范围。
  • 量度 — 您的服务的传入jvm.*和http.server.*量度,以及部署到环境后的aem.*量度。
  • 日志 (如果已启用) — AEM服务的传入日志条目。

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

NOTE
为了确认您的端点和凭据正常工作,配置管道会在每次验证您的配置时向您的APM提供商发送一个测试范围。 它显示在服务名称otel-config-operator-validator下,可以安全忽略。

疑难解答 troubleshooting

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

症状
检查内容
配置管道错误:OTel tracing is disabled for this environment或Feature 'Otel' not allowed
尚未为此环境启用OpenTelemetry。 按照步骤1中的说明请求访问,并在Adobe确认其已启用后再次运行管道。
配置管道错误,说明Dynatrace已处于活动状态
Dynatrace OneAgent安装在环境中,它优先。 查看现有APM集成。
管道完成之后无数据
确认自上次更改以来配置管道已成功完成。 等待几分钟让第一个数据到达,然后重新检查端点URL和OTEL_CUSTOMER_AUTH值。
身份验证错误或被拒绝的数据
验证OTEL_CUSTOMER_AUTH值是否与提供商要求的格式匹配(请参阅步骤3和提供商特定的设置)。 常见错误包括或省略方案词(Basic、Bearer或Api-Token)并使用错误的密钥 — 例如,New Relic用户(NRAK-)密钥而不是引入许可证密钥。
端点不可访问
确认端点URL和区域正确,并且端点可通过HTTPS访问。 如果您的端点为私有的,或者您的提供商需要来自已知IP地址的流量,请启用具有专用出口的高级网络。
不确定是否需要高级联网
仅当无法从公共Internet访问APM端点时,或者提供商要求您允许列表稳定的源IP地址时,才需要它。 公共SaaS端点(如上面的提供商示例)不需要它。
没有日志条目,但会显示跟踪和量度
确认您的配置中已启用日志(请参阅发送哪些数据)。 仅发送WARN级别及以上的条目,因此,如果您的应用程序最近未记录警告或错误,则可能尚未发送任何内容。
目标位置存在重复的日志消息
您可能同时具有此集成的日志和日志转发以发送到同一目标。 请参阅概述 — 每个目标仅启用一个路径。
名为otel-config-operator-validator的不熟悉的服务
这是配置管道发送以检查您的端点和凭据的测试范围。 这是正常情况,可以忽略。

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

常见问题解答 faq

为什么发生此更改?

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

我需要请求访问吗?

是。 在有限可用期间,发送电子邮件至aemcs-apm-beta@adobe.com,其中包含您的项目和环境ID。 Adobe在回复您的请求后不久即为这些环境启用OpenTelemetry。 这还不适用于HIPAA范围内的环境。

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

Adobe应您的请求为环境启用OpenTelemetry后,数据将不再从该环境发送到New Relic。 这两者不能同时运行。

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

是。 电子邮件aemcs-apm-beta@adobe.com和Adobe为您的环境禁用OpenTelemetry。 然后在config/otel.yaml文件中设置enabled: false(或删除该文件),运行配置管道,并运行全栈栈管道以完成还原New Relic。 在2026年11月底之前,该操作是可能的。

如果我的环境运行Dynatrace OneAgent,我能否使用OpenTelemetry?

不在同一环境中 — Dynatrace OneAgent优先。 您可以删除OneAgent并改用OpenTelemetry,包括将Dynatrace作为APM提供程序。 查看现有APM集成。

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

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

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