注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的值。
使用 OCI Application Performance Monitoring 和 OpenTelemetry 监视应用
简介
监视在堆栈组件中不同的应用程序通常具有挑战性。通过统一的方法来监视这些组件,可以端到端地查看和洞察可能出现的问题。OpenTelemetry 是用于收集大多数编程语言的跟踪、度量和日志数据的行业标准。它与 OCI Application Performance Monitoring 和 OCI Logging Analytics 等 Oracle Cloud Infrastructure (OCI) 观测和管理服务相结合,可提供强大的洞察力。

OCI Application Performance Monitoring 可深入了解应用的性能,并支持快速诊断问题以提供一致的服务水平。这包括监视分散在客户端、第三方服务和后端计算层(本地部署或云端)中的多个组件和应用逻辑。

OCI 日志分析是 OCI 中的云解决方案,可对来自应用和系统基础设施的所有日志数据进行索引、扩充、聚合、浏览、搜索、分析、关联、可视化和监视。使用 OCI Logging Analytics 内构建的精选 AI/ML 模型从日志数据中获得强大的洞察力。

OpenTelemetry 具有针对不同编程语言的各种实现,并且正在不断更新或开发。使用此框架的目的是采用统一的标准化方法来收集和发送监视数据。
在本教程中,您将学习如何使用 OpenTelemetry 检测应用程序并将收集的数据导出到 OCI 服务,例如 OCI Application Performance Monitoring 和 OCI Logging Analytics。
目标
-
为非 Oracle 堆栈应用程序配置 OpenTelemetry。
-
将跟踪和度量发送到 OCI Application Performance Monitoring。
-
将日志数据发送到 OCI 日志分析。
先决条件
-
具有初始管理员账户的 OCI 租户。
-
Node.js应用程序(GitHub 系统信息库示例: oci-observability-and-management )。 -
对 JavaScript 的基本了解。
GitHub 示例
如果要对 MERN/MEAN/MEVN 应用程序实施监视,请使用 GitHub 系统信息库 oci-observability-and-management 。此系统信息库包含以下文件:
-
检测应用程序前端和后端。
-
将定制度量发送到 OCI Application Performance Monitoring (APM)。
-
将日志消息发送到 OCI 日志分析。
-
用于试验 OpenTelemetry 实现的样例应用程序。
任务 1:配置 OCI Application Performance Monitoring
-
创建 OCI Application Performance Monitoring (APM) 域
注:有关先决条件任务,请查看 OCI Application Performance Monitoring 文档。
-
登录到 OCI 控制台,然后导航到观测和管理、应用性能管理、管理以打开 OCI Application Performance Monitoring 管理页面。
-
单击创建 APM 域并输入域名。请注意,您可以在 OCI Application Performance Monitoring 域页面中找到以下信息。
-
数据上载端点:用于将数据发送到 OCI Application Performance Monitoring 的 URL。
-
公共数据密钥:与 OCI Application Performance Monitoring 浏览器代理一起使用。
-
专用数据密钥:与 OpenTelemetry 等数据收集器连接。

-
-
-
检测应用程序
要监视应用的前端,请检测 OCI Application Performance Monitoring 浏览器代理。有关更多信息,请参见 Browser/Client Instrumentation Steps 。
服务器检测
-
要获取端到端跟踪,需要从浏览器/客户端的前端跟踪到服务器进行上下文传播。在这样做时要记住的一件事是确保有 HTTP 头提供上下文。缺省情况下,OpenTelemetry 使用 W3C(traceparent) 自动传播上下文。还可以使用其他标题类型,但需要在应用程序代码中入账。

-
请务必使用运行浏览器/客户端检测的 JavaScript 片段添加以下代码。
window.apmrum.traceSupportingEndpoints = [ { headers: [ 'W3C'], hostPattern: '.*' } ]; -
根据可用内容检测自动检测或手动后端,请参阅编程语言步骤。
GitHub 中的示例
-
任务 2:配置 OCI 日志分析
-
发送应用程序日志
将应用日志发送到 OCI Logging Analytics,从而关联跟踪、指标和日志,全面了解应用。可以使用标准日志记录库和定制日志附加程序启用日志记录。必须构建日志附加程序,以使用 OCI 提供的 SDK 或 REST 端点发送日志,如下所示。

-
创建 API 签名密钥
-
转到 OCI 控制台并导航到用户、用户设置。
-
在资源下选择 API 密钥。
-
单击添加 API 密钥、生成 API 密钥对、下载私有密钥和添加。
-
从配置文件预览中复制内容,然后单击关闭。

-
-
创建配置文件
创建目录 (
.oci) 和配置文件,其中包含配置文件预览中的内容以及私有密钥文件的路径。下面是配置文件的示例。[DEFAULT] user= [User OCID] fingerprint= [API Key Fingerprint] tenancy= [Tenancy OCID] region= [Region] key_file= [Path to Private Key File] -
创建日志语法分析器
-
转到 OCI 控制台,然后导航到观测和管理、日志分析、管理。
-
单击语法分析器和创建语法分析器,然后选择类型作为
JSON。 -
输入示例
JSON日志内容,它将解析和提取字段并将其映射到特定的字段名称,然后单击保存更改。
-
-
创建日志源
-
转到 OCI 控制台,然后导航到日志分析、管理、源、创建源。
-
输入源类型作为
File,输入实体类型作为Host (Linux)。 -
在特定语法分析器中,选择在任务 2.4 中创建的语法分析器,然后单击创建源。

-
-
创建日志组
-
转到 OCI 控制台,然后导航到日志分析、管理、日志组、创建日志组。
-
输入日志组的名称、说明并单击创建。
注:记下稍后使用的日志组的 Oracle Cloud Identity (OCID)。



-
-
获取名称空间详细信息
-
转到 OCI 控制台并导航到身份、区间,然后单击创建日志源的区间并复制区间的 OCID。
-
打开 Cloud Shell 并运行以下命令以获取名称空间。
oci os ns get -c compartmentID

-
-
创建日志附加程序
可以使用为 Java、Python、.Net、TypeScript/JavaScript、Go 和 Ruby 等不同编程语言提供的 OCI 日志分析 SDK 构建自定义日志附加程序,或使用 OCI API Rest 端点。有关更多信息,请参见 Software Development Kit (SDKs) 和 API Reference and Endpoints 。
GitHub 中的示例:日志附加程序 - JavaScript (MERN Stack) 。
记下上述步骤中初始化日志并将其发送到 OCI Logging Analytics 所需的以下参数。
- [PATH]/config:指向配置文件的路径。
- [PROFILE] :要用于 OCI 验证的配置文件中的配置文件。
- [NAMESPACE] :名称空间。
- [UPLOADNAME] :上载的用户定义的名称。
- [LOGSOURCENAME] :在 OCI Logging Analytics 中创建的日志源名称。
- [LOGFILENAME] :用于指示日志消息与特定日志文件相关的日志文件名。
- [LOGGROUPID] :在 OCI Logging Analytics 中创建的用于对日志消息进行分组的日志组 ID。
通过日志附加程序为不同的日志级别(调试、信息、警告和错误)创建日志记录后,它将发送到 OCI Logging Analytics,您可以在日志浏览器中查看日志记录,如下所示。

任务 3:关联跟踪和日志
OpenTelemetry 在日志记录中包括 TraceId 和 SpanId,这允许直接关联对应于相同执行上下文的日志和跟踪。应用跟踪并跨流入 OCI Application Performance Monitoring,并登录 OCI Logging Analytics 服务。OCI Application Performance Monitoring 提供了一种从跟踪和跨度导航到 OCI Logging Analytics 中的日志的简单方法,只需单击一下即可使用下钻配置。
向下钻取是使用可定制 URL(包括跨度中的属性)链接到 OCI 或其他定制服务的链接(例如:loganalytics/explorer?search=<OciInstanceId>,其中 ociInstanceId 是跨度属性)。按照以下步骤在 OCI Application Performance Monitoring 中配置向下钻取。

任务 4:创建定制仪表盘
在 OCI 中跟踪数据和指标后,可以使用这些数据直观地表示数据。创建自定义仪表盘非常简单,只需拖放所需的小部件并修改源数据(度量、跟踪或日志数据)。
有关定制仪表盘的详细信息,请参阅:
- 创建定制 APM 仪表盘
- 创建定制日志分析仪表盘
- 使用小部件在 Application Performance Monitoring 仪表盘中定制和显示跟踪数据,以从 Application Performance Monitoring 的 Trace Explorer 查询创建定制小部件。
为 MERN 应用程序创建的示例仪表盘。

相关链接
确认
- 作者 - Zyaad Khader(战略客户计划工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Monitor Applications using OCI Application Performance Monitoring and OpenTelemetry
F91954-01
January 2024
Copyright © APMOT, Oracle and/or its affiliates.