Application Insights支持Java的多个环境

时间:2016-07-05 14:42:35

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

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

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

我添加了必需的Maven依赖项,而我的src\main\resources\ApplicationInsights.xml具有App Insight检测密钥参考:

<?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>

但它不起作用。当我直接硬编码密钥时,它可以工作。

在Spring中是否有任何特定的方法来引用Application见解的系统属性?

1 个答案:

答案 0 :(得分:3)

配置文件中提供的检测密钥按原样,因此指定系统属性将无济于事。

虽然没有记录,但AI Java SDK会尝试按以下顺序解析检测密钥:

  1. 系统属性:-DAPPLICATION_INSIGHTS_IKEY = your_ikey
  2. 环境变量:APPLICATION_INSIGHTS_IKEY
  3. 配置文件:ApplicationInsights.xml。
  4. 所以我猜前两个选项中的一个会让你满意。

    SDK是开源的,您可以在此处阅读代码:TelemetryConfigurationFactory.setInstrumentationKey