你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何使用 Dynatrace Java OneAgent 监视 Spring Boot 应用

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用

本文适用于:✔️ 标准消耗和专用计划(预览版)✔️ 基本/标准计划 ❌️ 企业计划

本文介绍如何使用 Dynatrace OneAgent 监视 Azure Spring Apps 中的 Spring Boot 应用程序。

使用 Dynatrace OneAgent,你可以:

  • 使用 Dynatrace OneAgent 监视应用。
  • 使用环境变量配置 Dynatrace OneAgent。
  • 从 Dynatrace 仪表板检查所有监视数据。

以下视频介绍 Dynatrace OneAgent。


先决条件

Activate Dynatrace OneAgent

以下部分介绍如何激活 Dynatrace OneAgent。

准备 Azure Spring Apps 环境

  1. 创建 Azure Spring Apps 的实例。
  2. 通过运行以下命令,创建一个要报告给 Dynatrace 的应用程序。 将占位符“<...>”替换成自己的值。
    az spring app create \
        --resource-group <your-resource-group-name> \
        --service <your-Azure-Spring-Apps-name> \
        --name <your-application-name> \
        --is-public true
    

确定所需环境变量的值

要在 Azure Spring Apps 实例上激活 Dynatrace OneAgent,需要配置四个环境变量:DT_TENANTDT_TENANTTOKENDT_CONNECTION_POINTDT_CLUSTER_ID。 有关详细信息,请参阅将 OneAgent 与 Azure Spring Apps 集成

对于具有多个实例的应用程序,Dynatrace 可以通过多种方法将它们分组。 DT_CLUSTER_ID 是方法之一。 有关详细信息,请参阅过程小组检测

将环境变量添加到应用程序

可以使用 Azure 门户或 Azure CLI 将环境变量键/值对添加到应用程序。

选项 1:Azure CLI

要使用 Azure CLI 添加键/值对,请运行以下命令,将占位符 <...> 替换为前面步骤中确定的值

az spring app deploy \
    --resource-group <your-resource-group-name> \
    --service <your-Azure-Spring-Apps-name> \
    --name <your-application-name> \
    --artifact-path app.jar \
    --env \
        DT_TENANT=<your-environment-ID> \
        DT_TENANTTOKEN=<your-tenant-token> \
        DT_CONNECTION_POINT=<your-communication-endpoint>

选项 2:Azure 门户

要使用 Azure 门户添加键/值对,请使用以下步骤:

  1. 在 Azure Spring Apps 实例的导航窗格中选择“应用”。

    Azure 门户的屏幕截图,其中显示了 Azure Spring Apps 实例的“应用”页。

  2. 从列表中选择应用程序,然后在导航窗格中选择“配置”。

  3. 使用“环境变量”选项卡添加或更新应用程序所用的变量

    Azure 门户的屏幕截图,显示了应用的“配置”页,其中选择了“环境变量”选项卡。

自动预配

通过使用 Terraform、Bicep 或 Azure 资源管理器模板(ARM 模板),你还可以运行预配自动化管道。 此管道可以提供完整的无干预体验,用于检测和监视你创建和部署的任何新应用程序。

使用 Terraform 自动预配

若要在 Terraform 模板中配置环境变量,请将以下代码添加到模板中,并将“<...>”占位符替换为自己的值。 有关详细信息,请参阅管理活动的 Azure Spring Apps 部署

environment_variables = {
  "DT_TENANT": "<your-environment-ID>",
  "DT_TENANTTOKEN": "<your-tenant-token>",
  "DT_CONNECTION_POINT": "<your-communication-endpoint>",
  "DT_CLUSTER_ID": "<your-cluster-ID>"
}

使用 Bicep 文件自动完成预配

若要在 Bicep 文件中配置环境变量,请将以下代码添加到该文件,并将 <...> 占位符替换为你自己的值。 有关详细信息,请参阅 Microsoft.AppPlatform Spring/apps/deployments

environmentVariables: {
  DT_TENANT: '<your-environment-ID>'
  DT_TENANTTOKEN: '<your-tenant-token>'
  DT_CONNECTION_POINT: '<your-communication-endpoint>'
  DT_CLUSTER_ID: '<your-cluster-ID>'
}

使用 ARM 模板自动预配

若要在 ARM 模板中配置环境变量,请将以下代码添加到模板中,并将“<...>”占位符替换为自己的值。 有关详细信息,请参阅 Microsoft.AppPlatform Spring/apps/deployments

"environmentVariables": {
  "DT_TENANT": "<your-environment-ID>",
  "DT_TENANTTOKEN": "<your-tenant-token>",
  "DT_CONNECTION_POINT": "<your-communication-endpoint>",
  "DT_CLUSTER_ID": "<your-cluster-ID>"
}

在 Dynatrace 中查看报告

本部分介绍如何在 Dynatrace 中查找各种报告。

注意

Dynatrace 菜单和用户界面将逐渐演变。 为此,仪表板可能会移至 Dynatrace 网站的其他部分,而以下屏幕截图可能无法反映当前版本的用户界面。

在将环境变量添加到应用程序后,Dynatrace 开始收集数据。 要查看报告,请使用 Dynatrace 菜单,转到“服务”,然后选择你的应用程序

可以从“<your-app-name>/详细信息/服务流”中找到服务流

Dynatrace“服务流”报告的屏幕截图。

可以从“<your-app-name>/详细信息/方法热点”中找到“方法热点”

Dynatrace“方法热点”报告的屏幕截图。

可以从“<your-app-name>/详细信息/响应时间分析”中找到“数据库语句”

Dynatrace“响应时间分析”报告和“数据库语句”部分的屏幕截图。

接下来,转到“多维分析”部分

可以从“多维分析/常用数据库语句”中找到“常用数据库语句”

Dynatrace“常用数据库语句”报告的屏幕截图。

可以从“多维分析/异常概述”中找到“异常概述”

Dynatrace“异常概述”报告的屏幕截图。

接下来,转到“分析和优化”部分

可以从“分析和优化/CPU 分析”中找到“CPU 分析”

Dynatrace“CPU 分析”报告的屏幕截图。

接下来,转到“数据库”部分

可以从“数据库/详细信息/回溯”中找到“回溯”

Dynatrace“Backtrace”报告的屏幕截图。

查看 Dynatrace OneAgent 日志

默认情况下,Azure Spring Apps 会将 Dynatrace OneAgent 的“信息”级别日志输出到 STDOUT。 这些日志将与应用程序日志混合。 可以从应用程序日志中找到显式代理版本。

也可从以下位置获取 Dynatrace 代理的日志:

  • Azure Spring Apps 日志
  • Azure Spring Apps Application Insights
  • Azure Spring Apps LogStream

可以应用 Dynatrace 提供的某些环境变量来配置 Dynatrace OneAgent 的日志记录。 例如,DT_LOGLEVELCON 控制日志的级别。 DT_LOGLEVELCON 的默认值为 info。 可以通过将 DT_LOGLEVELCON 设置为 off 来禁用代理的日志。 如果禁用了日志记录,Dynatrace 支持人员将要求你先启用日志记录,以有效诊断任何代理问题。 然后,必须重启应用程序,只有这样才能使更改生效。 对于其他日志级别,请咨询 Dynatrace 支持团队。

注意

强烈建议不要替代由 Azure Spring Apps 为 Dynatrace 提供的默认日志记录行为。 如果这样做,上述日志记录方案将被阻止,并且日志文件可能会丢失。 例如,不应将 DT_LOGLEVELFILE 环境变量输出到应用程序。

Dynatrace OneAgent 升级

Dynatrace OneAgent 自动升级已禁用,将每季度随 JDK 升级。 代理升级可能会影响以下场景:

  • 升级前使用 Dynatrace OneAgent 的现有应用程序将保持不变,但需要重启或重新部署才能使用新版 Dynatrace OneAgent。
  • 升级后创建的应用程序将使用新版 Dynatrace OneAgent。

虚拟网络注入实例出站流量配置

对于 Azure Spring Apps 的虚拟网络注入实例,需要确保为 Dynatrace OneAgent 正确配置了 Dynatrace 通信终结点的出站流量。 有关如何获取 communicationEndpoints 的信息,请参阅部署 API - 获取 OneAgent 的连接信息。 有关详细信息,请参阅在虚拟网络中运行 Azure Spring Apps 的客户责任

Dynatrace 支持模型

有关在仅应用程序模式下部署 Dynatrace OneAgent 的限制信息,请参阅 OneAgent 平台和功能支持矩阵云应用程序平台部分。

后续步骤

在 Azure Spring Apps 中使用 Application Insights Java 进程内代理