OpenTelemetry (Beta) opentelemetry-apm
Adobe正在以OpenTelemetry取代內建於AEM as a Cloud Service的應用程式效能監控(APM)整合,這是每個主要監控平台支援的開放式業界標準可觀察性方法。
現在,AEM as a Cloud Service包含完全由Adobe管理的內建APM整合。 當該整合被取代時,您需要自備APM端點 — 接受開放遙測資料的廠商平台,或是自我裝載(內部部署) OpenTelemetry相容的後端。
此變更的優點 benefits
- 更多立即可用的遙測 — 將追蹤、量度和記錄一起提供,讓您比目前內建整合更全面地瞭解AEM應用程式的行為。
- 開放式的業界標準 — OpenTelemetry在可觀察性業界廣泛採用,提供您一致的遙測格式,受到廣泛支援。
- 傳送遙測給符合您組織的提供者 — 包括您目前的提供者(如果它支援OpenTelemetry)。
- 進階網路支援 — 如果您的端點為私人,或要求從已知穩定IP位址離開傳出流量,此整合可支援專用輸出。
- 量度、追蹤和記錄檔的統一方法 — 這三個機制的單一整合點,而不是單獨的機制。 記錄轉送會繼續依原樣運作,您現在不需要變更轉送記錄的方式。
概觀 overview
AEM as a Cloud Service可以使用OpenTelemetry (開放式的業界標準可觀察性方法)從應用程式發出遙測,並將其轉送給您選擇的APM提供者。 這可讓您透過團隊已使用的工具,連同其他系統一並監控AEM應用程式。
使用此整合的常見原因包括調查緩慢或失敗的請求、追蹤JVM一段時間內的健康狀況和資源使用情況、為您的AEM層級建立儀表板和警報,以及在事件期間將AEM行為與您的其他服務建立關聯 — 所有這些都不需要離開您的團隊已使用的監控工具。
下列遙測在範圍中:
* 追蹤 — 分散式追蹤AEM應用程式處理的要求。
* 量度 — 應用程式量度,例如JVM執行階段量度(記憶體、記憶體收集、執行緒)和輸入HTTP要求率、延遲和錯誤率。
* 記錄檔 — 您的AEM應用程式的記錄檔,使用OpenTelemetry的記錄檔訊號傳送。 記錄是選用專案,可不受追蹤和量度影響而切換。
記錄檔轉送繼續透過其現有的個別機制受到支援,且不受此整合的影響。
支援的OpenTelemetry版本 supported-versions
OpenTelemetry代理程式會在Cloud Service執行階段中執行。 Adobe會提供它並保持為最新狀態,因此您不需要自行安裝、管理或升級。 Adobe更新代理程式時,特定修補程式版本可能會變更。
支援的OpenTelemetry變體 supported-variants
您的AEM應用程式可以使用下列任何OpenTelemetry代理程式變體(分佈)進行檢測,所有這一切都根據上述版本。 選擇適合您工具的變體;檢視每個專案的檔案以取得詳細資訊:
預設上游變體可與任何APM供應商搭配使用。 Grafana和Splunk變體會針對這些平台新增廠商特定的裝置和預設值。
APM供應商 apm-vendors
您可以傳送遙測給任何接受 OTLP/HTTPS 之OpenTelemetry資料的應用程式效能監視廠商。 這與您選擇的OpenTelemetry變體無關。 支援OTLP/HTTPS的廠商包括:
* New Relic
* Grafana Cloud
* Splunk Observability Cloud
* Dynatrace
* Datadog
* 虛線0
* 蜂窩
* 彈性可觀察性
* 相撲邏輯
* ServiceNow Cloud可觀察性
此清單並非詳盡無遺 — 任何公開OTLP/HTTPS端點的後端都可以使用。
支援的環境 supported-environments
您可以在您的Cloud Manager 生產、階段和 開發 環境中啟用此整合。 每個環境都分別啟用 — 請參閱步驟1。 不支援快速開發環境(RDE)。
網路連線 network-connectivity
您的APM提供者的端點必須可透過HTTPS從您的AEM as a Cloud Service環境連線。
如果您的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的值Basic、空格,然後是username:password的Base64編碼。Basic YWxhZGRpbjpvcGVuc2VzYW1lBearer、空格,然後是您的權杖。Bearer eyJhbGciOiJ...Authorization標頭傳送,因此必須包含配置字(Basic或Bearer)。 對於使用自訂標頭的提供者 — 例如,New Relic的api-key標頭 — 只提供原始認證值,並將設定檔案中的authHeaderName設定為正確的標頭名稱(請參閱設定範例)。OTEL_CUSTOMER_AUTH是認證。 請一律宣告為 機密 環境變數,如此一來,其值絕不會儲存在Git中或公開於記錄中。提供者特定的設定 provider-specific
下表總結列出一些常見提供者的端點與驗證。 一律在提供者自己的檔案中確認目前的值。 對於使用自訂標頭(例如,New Relic和Datadog)的提供者,請將OTEL_CUSTOMER_AUTH設為僅限原始金鑰值,並將設定檔案中的authHeaderName設為正確的標頭名稱(請參閱設定範例)。
https://otlp.nr-data.net (美國), https://otlp.eu01.nr-data.net (歐盟)api-key標頭傳送(原始值,無前置詞)。 使用內嵌授權金鑰,而非使用者(NRAK-)金鑰。https://otlp.<your-datadog-site> (例如,https://otlp.datadoghq.com)dd-api-key標頭傳送。 直接OTLP 追蹤攝入在預覽中。https://{your-environment-id}.live.dynatrace.com/api/v2/otlpAuthorization標頭中傳送為Api-Token <token>。 將OTEL_CUSTOMER_AUTH設為Api-Token <token>。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 Pipeline存放庫中的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
資料標籤:
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
advancedNetworking不會生效 — 請在依賴它之前確認此設定。 請參閱進階網路。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提供者中,請檢查下列專案:
OTEL_CUSTOMER_AUTH值。如果在這些檢查之後仍沒有顯示遙測,請連絡aemcs-apm-beta@adobe.com並提供您的程式和環境詳細資料。
常見問題 faq
為什麼發生此變更?
AEM as a Cloud Service客戶已要求其他量度和營運資料,以及內容中的追蹤、範圍和記錄。 OpenTelemetry是產業標準,支援所有這些功能,並以廣泛支援的格式(OTLP)輸出。
如果我啟用OpenTelemetry,New Relic會發生什麼事?
當您執行設定管道時,New Relic中的資料將不再從AEM as a Cloud Service傳輸。
如果我從New Relic移轉至OpenTelemetry,可以移回嗎?
可以。 透過設定管道停用OpenTelemetry,然後執行完整棧疊管道以完成。 在2026年11月底之前皆可使用此功能。
2026年11月之後會發生什麼事?
Adobe將從其內建的APM解決方案改用OpenTelemetry作為其永久可觀察性解決方案。