java - Application Insights 支持 Java 的多种环境

标签 java azure web-applications azure-application-insights

我正在 Azure 上构建 Java Web 应用程序(使用 Maven 构建的 Spring Web 应用程序)并使用 Application Insights 进行监控。我使用了引用链接https://azure.microsoft.com/en-us/documentation/articles/app-insights-java-get-started/ .

由于我使用多个环境,因此我计划将 App Insights 检测 key 作为系统属性从 Azure 门户 APP_SETTING 传递(JAVA_OPTS 值为 -Dappinsight.instrumentation.key=xxxxxxx) >).

我已添加所需的 Maven 依赖项,并且我的 src\main\resources\ApplicationInsights.xml 的 App Insight 检测 key 引用为:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">


  <!-- The key from the portal: -->

  <InstrumentationKey>${appinsight.instrumentation.key}</InstrumentationKey>


  <!-- HTTP request component (not required for bare API) -->

  <TelemetryModules>
    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
  </TelemetryModules>

  <!-- Events correlation (not required for bare API) -->
  <!-- These initializers add context data to each event -->

  <TelemetryInitializers>
    <Add   type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>

  </TelemetryInitializers>
</ApplicationInsights>

但是这不起作用。当我直接对 key 进行硬编码时,它就可以工作。

是否有任何特定方法可以在 Spring 中引用系统属性以获取应用程序洞察?

最佳答案

配置文件中提供的检测 key 按原样采用,因此指定系统属性没有帮助。

尽管没有记录,AI Java SDK 尝试按以下顺序解析检测 key :

  1. 系统属性:-DAPPLICATION_INSIGHTS_IKEY=your_ikey
  2. 环境变量:APPLICATION_INSIGHTS_IKEY
  3. 配置文件:ApplicationInsights.xml。

所以我想前两个选项之一会让您满意。

该SDK是开源的,您可以在这里阅读代码:TelemetryConfigurationFactory.setInstrumentationKey

关于java - Application Insights 支持 Java 的多种环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38206360/

相关文章:

java - Mint 中的图标不起作用,但应用程序在直接调用时起作用 - Intellij IDEA

java - 如何引起左键单击然后关闭线程?

azure - 使用什么 Azure 消息服务?

mysql - Hibernate 搜索通过字段值获取一行

java - Google OAuth2 PlayGround 返回 "Unauthorized Client"

java - 有人可以帮我提供学校代码吗?

java - 泛型方法——语法困惑

c# - Azure Bot 使用 ngrok 为 channel 团队进行本地调试时抛出以下异常 "Failed to acquire token for client credentials."

azure - 授予函数跨租户 Azure RM 访问权限

ipad - 阻止iPad Web应用显示Safari地址栏