如何使用 New Relic Java 代理监视 Spring Boot 应用
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。
本文向你展示了如何使用 New Relic Java 代理来监视 Azure Spring Apps 中的 Spring Boot 应用程序。
通过 New Relic Java 代理,可以:
- 使用 New Relic Java 代理。
- 使用环境变量配置 New Relic Java 代理。
- 从 New Relic 仪表板查检查所有监视数据。
先决条件
- New Relic 帐户。
- Azure CLI 2.0.67 或更高版本。
激活 New Relic Java 进程内代理
使用以下过程访问该代理:
创建 Azure Spring Apps 的实例。
创建应用程序。
az spring app create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <app-name> \ --is-public true \
使用 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 门户激活此代理。
在 Azure Spring Apps 实例的导航窗格中选择“应用”。
从列表中选择应用程序,然后在导航窗格中选择“配置”。
使用“常规设置”选项卡更新 JVM 选项之类的值。
选择“环境变量”以添加或更新应用程序使用的变量。
查看 New Relic 仪表板中应用程序 API/网关的“摘要”页面。
查看 New Relic 仪表板中应用程序客户服务的“摘要”页面。
查看 New Relic 仪表板中的“服务映射”页面。
查看 New Relic 仪表板中应用程序的 JVM 页面。
查看 New Relic 仪表板中的应用程序配置文件。
自动预配
还可以使用 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 支持要求你使用 finer
或 finest
否则请勿执行此操作。 这些日志记录级别可能会产生过多的开销。 在大多数情况下,请使用 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 的网络。