注意:

使用 OCI Application Performance Monitoring 和 OpenTelemetry 监视应用

简介

监视在堆栈组件中不同的应用程序通常具有挑战性。通过统一的方法来监视这些组件,可以端到端地查看和洞察可能出现的问题。OpenTelemetry 是用于收集大多数编程语言的跟踪、度量和日志数据的行业标准。它与 OCI Application Performance Monitoring 和 OCI Logging Analytics 等 Oracle Cloud Infrastructure (OCI) 观测和管理服务相结合,可提供强大的洞察力。

图中显示了 OpenTelemetry 数据流。

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

图中显示了 OCI Application Performance Monitoring 服务概览。

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

图中显示了 OCI 日志分析服务概览。

OpenTelemetry 具有针对不同编程语言的各种实现,并且正在不断更新或开发。使用此框架的目的是采用统一的标准化方法来收集和发送监视数据。

在本教程中,您将学习如何使用 OpenTelemetry 检测应用程序并将收集的数据导出到 OCI 服务,例如 OCI Application Performance Monitoring 和 OCI Logging Analytics。

目标

先决条件

GitHub 示例

如果要对 MERN/MEAN/MEVN 应用程序实施监视,请使用 GitHub 系统信息库 oci-observability-and-management 。此系统信息库包含以下文件:

任务 1:配置 OCI Application Performance Monitoring

  1. 创建 OCI Application Performance Monitoring (APM) 域

    注:有关先决条件任务,请查看 OCI Application Performance Monitoring 文档

    1. 登录到 OCI 控制台,然后导航到观测和管理应用性能管理管理以打开 OCI Application Performance Monitoring 管理页面。

    2. 单击创建 APM 域并输入域名。请注意,您可以在 OCI Application Performance Monitoring 域页面中找到以下信息。

      • 数据上载端点:用于将数据发送到 OCI Application Performance Monitoring 的 URL。

      • 公共数据密钥:与 OCI Application Performance Monitoring 浏览器代理一起使用。

      • 专用数据密钥:与 OpenTelemetry 等数据收集器连接。

      图中显示了 OCI Application Performance Monitoring 域详细信息。

  2. 检测应用程序

    要监视应用的前端,请检测 OCI Application Performance Monitoring 浏览器代理。有关更多信息,请参见 Browser/Client Instrumentation Steps

    服务器检测

    • 要获取端到端跟踪,需要从浏览器/客户端的前端跟踪到服务器进行上下文传播。在这样做时要记住的一件事是确保有 HTTP 头提供上下文。缺省情况下,OpenTelemetry 使用 W3C(traceparent) 自动传播上下文。还可以使用其他标题类型,但需要在应用程序代码中入账。

      上下文传播的 HTTP 标头数据图表。

    • 请务必使用运行浏览器/客户端检测的 JavaScript 片段添加以下代码。

      window.apmrum.traceSupportingEndpoints = [ { headers: [ 'W3C'], hostPattern: '.*' } ];
      
    • 根据可用内容检测自动检测或手动后端,请参阅编程语言步骤

    GitHub 中的示例

任务 2:配置 OCI 日志分析

  1. 发送应用程序日志

    将应用日志发送到 OCI Logging Analytics,从而关联跟踪、指标和日志,全面了解应用。可以使用标准日志记录库和定制日志附加程序启用日志记录。必须构建日志附加程序,以使用 OCI 提供的 SDK 或 REST 端点发送日志,如下所示。

    图中显示了日志数据流。

  2. 创建 API 签名密钥

    1. 转到 OCI 控制台并导航到用户用户设置

    2. 资源下选择 API 密钥。

    3. 单击添加 API 密钥生成 API 密钥对下载私有密钥添加

    4. 配置文件预览中复制内容,然后单击关闭

      OCI 中配置文件预览的图像。

  3. 创建配置文件

    创建目录 (.oci) 和配置文件,其中包含配置文件预览中的内容以及私有密钥文件的路径。下面是配置文件的示例。

    [DEFAULT]
    user= [User OCID]
    fingerprint= [API Key Fingerprint]
    tenancy= [Tenancy OCID]
    region= [Region]
    key_file= [Path to Private Key File]
    
  4. 创建日志语法分析器

    1. 转到 OCI 控制台,然后导航到观测和管理日志分析管理

    2. 单击语法分析器创建语法分析器,然后选择类型作为 JSON

    3. 输入示例 JSON 日志内容,它将解析和提取字段并将其映射到特定的字段名称,然后单击保存更改

      OCI 中日志语法分析器配置的图像。

  5. 创建日志源

    1. 转到 OCI 控制台,然后导航到日志分析管理创建源

    2. 输入源类型作为 File,输入实体类型作为 Host (Linux)

    3. 特定语法分析器中,选择在任务 2.4 中创建的语法分析器,然后单击创建源

      OCI 中日志源详细信息的图像。

  6. 创建日志组

    1. 转到 OCI 控制台,然后导航到日志分析管理日志组创建日志组

    2. 输入日志组的名称说明并单击创建

      注:记下稍后使用的日志组的 Oracle Cloud Identity (OCID)。

      图中显示了 OCI 中的日志组详细信息。

      图像突出显示 OCI 中的日志组 OCID。

      图像突出显示 OCI 中的区间 OCID。

  7. 获取名称空间详细信息

    1. 转到 OCI 控制台并导航到身份区间,然后单击创建日志源的区间并复制区间的 OCID。

    2. 打开 Cloud Shell 并运行以下命令以获取名称空间。

      oci os ns get -c compartmentID
      

    图中显示了如何在 OCI 控制台中获取名称空间详细信息。

  8. 创建日志附加程序

    可以使用为 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 所需的以下参数。

通过日志附加程序为不同的日志级别(调试、信息、警告和错误)创建日志记录后,它将发送到 OCI Logging Analytics,您可以在日志浏览器中查看日志记录,如下所示。

OCI Logging Analytics 中的日志浏览器视图。

任务 3:关联跟踪和日志

OpenTelemetry 在日志记录中包括 TraceIdSpanId,这允许直接关联对应于相同执行上下文的日志和跟踪。应用跟踪并跨流入 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 中配置向下钻取。

GIF 显示从 OCI Application Performance Monitoring 向下钻取到 OCI Logging Analytics 的示例。

任务 4:创建定制仪表盘

在 OCI 中跟踪数据和指标后,可以使用这些数据直观地表示数据。创建自定义仪表盘非常简单,只需拖放所需的小部件并修改源数据(度量、跟踪或日志数据)。

有关定制仪表盘的详细信息,请参阅:

为 MERN 应用程序创建的示例仪表盘。

图中显示了 OCI Application Performance Monitoring 中的定制仪表盘。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心