通过OpenTelemetry的可观察性
了解AEM as a Cloud Service如何使用OpenTelemetry将跟踪、指标和日志发送到您选择的应用程序性能监控(APM)平台。
Adobe正在将AEM as a Cloud Service中的内置应用程序性能监控(APM)集成替换为OpenTelemetry,这是用于收集和导出跟踪、指标和日志的开放标准。 使用OpenTelemetry,您可以自带 APM端点并监视AEM以及您的其他应用程序,使用您的团队已了解的工具。 有关详细信息,请参阅OpenTelemetry文档。
本文介绍了该集成提供的功能、遥测如何从AEM流向APM平台、您控制的内容以及在启用它之前需要考虑的事项。 配置教程介绍如何为AEM环境设置OpenTelemetry。
为什么OpenTelemetry
使用OpenTelemetry,您可以:
- 选择您的平台:将遥测发送到任何通过HTTPS (OTLP/HTTPS)接受OpenTelemetry协议的后端,包括支持OTLP的当前提供程序。
- 查看全图:通过一个集成而不是单独的机制获取跟踪、量度和日志。
- 更快地调查:查找缓慢或失败的请求,随时间跟踪JVM运行状况,并在事件期间将AEM行为与其他服务相关联。
- 保持控制:通过使用Cloud Manager配置管道,配置要将数据发送到哪个目标,并在您自己的平台中管理功能板、警报和保留。
Adobe提供并更新与AEM一起运行的OpenTelemetry Java代理,因此您不会安装或升级该代理。 由您决定遥测的去向。
工作原理
下图显示了从AEM服务到可观察性平台的遥测的逻辑流:
OpenTelemetry Java代理从AEM服务收集应用程序遥测,并将其发送到在AEM环境中运行的OpenTelemetry收集器。 收集器处理遥测并将其通过OTLP/HTTPS转发到您配置的可观察性平台。
仅发送由AEM应用程序生成的遥测。 有关底层运行时和平台的信息(如内部主机名、地址、容器标识符以及操作系统或进程详细信息)将在任何数据离开您的环境之前删除。
遥测有哪些可用
请牢记以下一些细节:
- 为了保持跟踪专注于应用程序请求,过滤掉大量内部活动,例如健康探测器和调度程序(Quartz)作业。
- 此版本中不会发出细粒度的AEM框架内部范围,例如Sling资源解析、OSGi服务和JCR访问。
- 度量使用标准的OpenTelemetry名称,例如
jvm.memory.used、jvm.gc.duration、jvm.thread.count和http.server.request.duration。
如何识别AEM服务
每个跟踪、量度和日志条目都带有资源属性,这些属性让您的平台能够区分不同的环境和层:
-
service.name按照以下模式标识项目、环境、层和环境类型:code language-text cm-p<program>-e<environment>-aem-<author|publish|preview>-<environment-type>例如,
cm-p12345-e67890-aem-publish-prod是程序12345中环境67890的Publish服务,在生产环境中运行。 -
deployment.environment标识环境类型,如prod或stage。
使用这些属性过滤遥测并将其分组,并将日志与来自同一服务的跟踪和量度相关联。
您所控制的内容
您可以使用Cloud Manager配置管道部署config/otel.yaml文件来配置集成。
示例配置文件为:
kind: "Otel"
version: "v1"
metadata:
envTypes:
- "dev"
- "stage"
- "prod"
data:
enabled: true
type: "generic"
endpoint: "<YOUR_OTLP_HTTPS_ENDPOINT>"
authHeaderName: "Authorization"
authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"
metrics: true
logs: true
advancedNetworking: false
该配置确定:
- 它适用的环境类型(
prod,stage,dev) - 目标类型(
newrelic、dynatrace、generic等) 和OTLP/HTTPS端点 - 身份验证凭据(
authHeaderName和authHeaderValue),作为名为OTEL_CUSTOMER_AUTH的Cloud Manager 密钥环境变量引用 - 除了跟踪之外,是否还导出量度(
metrics: true)和日志(logs: true) - 是否将高级网络(
advancedNetworking: true)用于目标
身份验证凭据(authHeaderValue)应存储为名为OTEL_CUSTOMER_AUTH的Cloud Manager 密钥环境变量,并从配置文件中引用。 切勿将凭据作为纯文本存储在存储库中。
如果您的OTLP/HTTPS端点为私有的,或需要来自已知稳定IP地址的出站流量,请启用具有专用出口的高级网络。 除非Cloud Manager已为该环境配置了高级网络,否则advancedNetworking设置无效。 公共SaaS端点使用标准出站网络路径。
支持的目标
您可以将遥测发送到公开OTLP/HTTPS端点的任何APM平台,包括:
- New Relic
- Dynatrace
- Datadog
- Grafana Cloud
- Splunk可观察性云
- 短划线0
- 蜂窝
- 弹性可观测性
- Sumo逻辑
- ServiceNow Cloud可观察性
这份清单并非详尽无遗。 OpenTelemetry定义遥测格式和导出协议,您选择的平台确定如何查询、可视化、保留数据和发出警报。
选择可观察性平台
您需要一个接受OTLP/HTTPS的平台来接收遥测。 Adobe不提供,您必须自带可观察性平台。
如果您的组织已使用以上平台之一,请从此处开始。 如果没有,请选择供应商托管的(SaaS)平台和自托管平台:
开始之前
- 环境:您可以在生产、暂存和开发环境中单独启用OpenTelemetry。 但是,不支持HIPAA范围内的环境、沙盒程序和快速开发环境(RDE)。
- 版本:集成支持OpenTelemetry Java代理2.x和OTLP/HTTPS导出协议。
后续步骤
按照配置教程中的说明,使用AEM WKND示例项目或您自己的AEM项目设置OpenTelemetry。