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

如何使用 New Relic Java 代理监视 Spring Boot 应用

注意

Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。

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

本文向你展示了如何使用 New Relic Java 代理来监视 Azure Spring Apps 中的 Spring Boot 应用程序。

通过 New Relic Java 代理,可以:

  • 使用 New Relic Java 代理。
  • 使用环境变量配置 New Relic Java 代理。
  • 从 New Relic 仪表板查检查所有监视数据。

以下视频介绍如何使用 New Relic One 激活并监视 Azure Spring Apps 中的 Spring Boot 应用程序。


先决条件

激活 New Relic Java 进程内代理

使用以下过程访问该代理:

  1. 创建 Azure Spring Apps 的实例。

  2. 创建应用程序。

    az spring app create \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name <app-name> \
        --is-public true \
    
  3. 使用 New Relic 代理和环境变量创建部署。

    az spring app deploy \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name <app-name> \
        --artifact-path app.jar \
        --jvm-options="-javaagent:/opt/agents/newrelic/java/newrelic-agent.jar" \
        --env NEW_RELIC_APP_NAME=appName \
              NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
    

Azure Spring Apps 会将 New Relic Java 代理预安装到 /opt/agents/newrelic/java/newrelic-agent.jar。 客户可激活应用程序的 JVM 选项中的代理,也可使用 New Relic Java 代理环境变量配置代理。

Azure 门户

还可通过以下过程从 Azure 门户激活此代理。

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

    Screenshot of the Azure portal showing the Apps page for an Azure Spring Apps instance.

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

  3. 使用“常规设置”选项卡更新 JVM 选项之类的值。

    Screenshot of the Azure portal showing the Configuration page for an app with the General settings tab selected.

  4. 选择“环境变量”以添加或更新应用程序使用的变量。

    Screenshot of the Azure portal showing the Configuration page for an app with the Environment variables tab selected.

  5. 查看 New Relic 仪表板中应用程序 API/网关的“摘要”页面。

    Screenshot of the New Relic dashboard showing the API Gateway summary page.

  6. 查看 New Relic 仪表板中应用程序客户服务的“摘要”页面。

    Screenshot of the New Relic dashboard showing the Customers Service page.

  7. 查看 New Relic 仪表板中的“服务映射”页面。

    Screenshot of the New Relic dashboard showing the Service Map page.

  8. 查看 New Relic 仪表板中应用程序的 JVM 页面。

    Screenshot of the New Relic dashboard showing the JVM page.

  9. 查看 New Relic 仪表板中的应用程序配置文件。

    Screenshot of the New Relic dashboard showing the Application Profile page.

自动预配

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

使用 Terraform 自动预配

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

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:/opt/agents/newrelic/java/newrelic-agent.jar"
  ...
    environment_variables = {
      "NEW_RELIC_APP_NAME": "<app-name>",
      "NEW_RELIC_LICENSE_KEY": "<new-relic-license-key>"
  }
}

使用 Bicep 文件自动完成预配

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

deploymentSettings: {
  environmentVariables: {
    NEW_RELIC_APP_NAME : '<app-name>',
    NEW_RELIC_LICENSE_KEY : '<new-relic-license-key>'
  },
  jvmOptions: '-javaagent:/opt/agents/newrelic/java/newrelic-agent.jar',
  ...
}

使用 ARM 模板自动预配

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

"deploymentSettings": {
  "environmentVariables": {
    "NEW_RELIC_APP_NAME" : "<app-name>",
    "NEW_RELIC_LICENSE_KEY" : "<new-relic-license-key>"
  },
  "jvmOptions": "-javaagent:/opt/agents/newrelic/java/newrelic-agent.jar",
  ...
}

将应用程序日志转发到 New Relic

New Relic 代理可以直接从应用收集应用程序日志,并将其转发到 New Relic。 有关详细信息,请参阅将日志转发到 New Relic上下文中的 APM 日志

查看 New Relic Java 代理日志

默认情况下,Azure Spring Apps 会将 New Relic Java 代理的日志输出到 STDOUT。 这些日志将与应用程序日志混合。 可以从应用程序日志中找到显式代理版本。

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

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

可以使用 New Relic 提供的某些环境变量来配置新代理的日志记录,例如用于控制日志级别的 NEW_RELIC_LOG_LEVEL。 有关详细信息,请参阅 New Relic 日志记录配置

注意

除非 New Relic 支持要求你使用 finerfinest否则请勿执行此操作。 这些日志记录级别可能会产生过多的开销。 在大多数情况下,请使用 info

注意

强烈建议不要替代由 Azure Spring Apps 为 New Relic 提供的日志记录默认行为。 如果这样做,上述日志记录方案将被阻止,并且日志文件可能会丢失。 例如,不应将以下环境变量传递给应用程序。 在重启或重新部署应用程序后,日志文件可能会丢失。

  • NEW_RELIC_LOG
  • NEW_RELIC_LOG_FILE_PATH

New Relic Java 代理更新/升级

New Relic Java 代理会定期更新/升级 JDK。 代理更新/升级可能会影响以下方案。

  • 在更新/升级之前使用 New Relic Java 代理的现有应用程序将保持不变。
  • 更新/升级前使用 New Relic Java 代理的现有应用程序需要重启或重新部署,才能使用新版本的 New Relic Java 代理 。
  • 在更新/升级后创建的新应用程序将使用新版本的 New Relic Java 代理。

Vnet 注入实例出站流量配置

对于 Azure Spring Apps 的 vnet 注入实例,需要确保为 New Relic Java 代理正确配置出站流量。 有关详细信息,请参阅 New Relic 的网络

后续步骤

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