通过OpenTelemetry的可观察性

了解AEM as a Cloud Service如何使用OpenTelemetry将跟踪、指标和日志发送到您选择的应用程序性能监控(APM)平台。

Adobe正在将AEM as a Cloud Service中的内置应用程序性能监控(APM)集成替换为OpenTelemetry,这是用于收集和导出跟踪、指标和日志的开放标准。 使用OpenTelemetry,您可以​自带 APM端点并监视AEM以及您的其他应用程序,使用您的团队已了解的工具。 有关详细信息,请参阅OpenTelemetry文档。

本文介绍了该集成提供的功能、遥测如何从AEM流向APM平台、您控制的内容以及在启用它之前需要考虑的事项。 配置教程介绍如何为AEM环境设置OpenTelemetry。

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

为什么OpenTelemetry

使用OpenTelemetry,您可以:

  • 选择您的平台:将遥测发送到任何通过HTTPS (OTLP/HTTPS)接受OpenTelemetry协议的后端,包括支持OTLP的当前提供程序。
  • 查看全图:通过一个集成而不是单独的机制获取跟踪、量度和日志。
  • 更快地调查:查找缓慢或失败的请求,随时间跟踪JVM运行状况,并在事件期间将AEM行为与其他服务相关联。
  • 保持控制:通过使用Cloud Manager配置管道,配置要将数据发送到哪个目标,并在您自己的平台中管理功能板、警报和保留。

Adobe提供并更新与AEM一起运行的OpenTelemetry Java代理,因此您不会安装或升级该代理。 由您决定遥测的去向。

工作原理

下图显示了从AEM服务到可观察性平台的遥测的逻辑流:

从AEM服务到客户可观察性平台的遥测逻辑流

OpenTelemetry Java代理从AEM服务收集应用程序遥测,并将其发送到在AEM环境中运行的OpenTelemetry收集器。 收集器处理遥测并将其通过OTLP/HTTPS转发到您配置的可观察性平台。

仅发送由AEM应用程序生成的遥测。 有关底层运行时和平台的信息(如内部主机名、地址、容器标识符以及操作系统或进程详细信息)将在任何数据离开您的环境之前删除。

遥测有哪些可用

信号
您获得的内容
如何启用
跟踪
跨越应用程序处理的请求:入站HTTP请求、servlet处理和出站调用。
使用Cloud Manager配置管道配置和部署otel.yaml文件,请参阅配置教程
个量度
JVM运行时量度(内存、垃圾收集、线程、CPU利用率)和HTTP服务器请求量度(速率、延迟和错误率)。
使用Cloud Manager配置管道通过metrics: true配置和部署otel.yaml文件,请参阅配置教程
日志
AEM应用程序日志条目(WARN及更高版本),使用OpenTelemetry日志信号发送。 注意:不发送Dispatcher和CDN日志。
使用Cloud Manager配置管道通过logs: true配置和部署otel.yaml文件,请参阅配置教程

请牢记以下一些细节:

  • 为了保持跟踪专注于应用程序请求,过滤掉大量内部活动,例如健康探测器和调度程序(Quartz)作业。
  • 此版本中不会发出细粒度的AEM框架内部范围,例如Sling资源解析、OSGi服务和JCR访问。
  • 度量使用标准的OpenTelemetry名称,例如jvm.memory.used、jvm.gc.duration、jvm.thread.count和http.server.request.duration。
WARNING
如果您通过OpenTelemetry 和​通过日志转发将日志发送到同一目标,则会收到重复的日志消息。 每个目标仅启用一个路径,或将每个路径发送到不同的目标。
日志转发是一个独立的机制,可像现在一样继续工作。

如何识别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)平台和自托管平台:

供应商托管(SaaS)
自托管
设置
无需安装或操作。
您可以安装、升级和扩展平台。
数据位置
遥测会离开您的环境,可能需要进行安全或隐私审查。
遥测保留在您控制的基础结构中。
功能
仪表板、警报和APM视图通常内置。 某些功能特定于供应商。
功能取决于您选择的软件。
成本
定价通常取决于数据量。
您需为基础设施和工程时间付费。
可用性
供应商经营服务。
您可以管理正常运行时间、存储、备份和保留。

开始之前

  • 环境:您可以在生产、暂存和开发环境中单独启用OpenTelemetry。 但是,不支持HIPAA范围内的环境、沙盒程序和快速开发环境(RDE)。
  • 版本:集成支持OpenTelemetry Java代理2.x和OTLP/HTTPS导出协议。

后续步骤

按照配置教程中的说明,使用AEM WKND示例项目或您自己的AEM项目设置OpenTelemetry。

其他资源

recommendation-more-help
experience-manager-learn-help-cloud-service