Application Insights 支持 Java 的多个环境
Application Insights support multiple environment for Java
我正在 Azure 上构建 Java webapp(Spring webapp 使用 Maven 构建)并使用 Application Insights 进行监控。我使用了参考 link https://azure.microsoft.com/en-us/documentation/articles/app-insights-java-get-started/.
由于我使用多个环境,我计划从 Azure 门户 APP_SETTING 将 App Insights 检测密钥作为系统 属性 传递(JAVA_OPTS
值为 -Dappinsight.instrumentation.key=xxxxxxx
)。
我已经添加了所需的 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 中是否有任何特定的方法来引用应用程序洞察的系统属性?
配置文件中提供的检测密钥按原样使用,因此指定系统属性将无济于事。
尽管没有记录,AI Java SDK 尝试按以下顺序解析检测密钥:
- 系统属性:-DAPPLICATION_INSIGHTS_IKEY=your_ikey
- 环境变量:APPLICATION_INSIGHTS_IKEY
- 配置文件:ApplicationInsights.xml.
所以我想前两个选项中的一个会让您满意。
SDK是开源的,您可以在这里阅读代码:TelemetryConfigurationFactory.setInstrumentationKey
我正在 Azure 上构建 Java webapp(Spring webapp 使用 Maven 构建)并使用 Application Insights 进行监控。我使用了参考 link https://azure.microsoft.com/en-us/documentation/articles/app-insights-java-get-started/.
由于我使用多个环境,我计划从 Azure 门户 APP_SETTING 将 App Insights 检测密钥作为系统 属性 传递(JAVA_OPTS
值为 -Dappinsight.instrumentation.key=xxxxxxx
)。
我已经添加了所需的 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 中是否有任何特定的方法来引用应用程序洞察的系统属性?
配置文件中提供的检测密钥按原样使用,因此指定系统属性将无济于事。
尽管没有记录,AI Java SDK 尝试按以下顺序解析检测密钥:
- 系统属性:-DAPPLICATION_INSIGHTS_IKEY=your_ikey
- 环境变量:APPLICATION_INSIGHTS_IKEY
- 配置文件:ApplicationInsights.xml.
所以我想前两个选项中的一个会让您满意。
SDK是开源的,您可以在这里阅读代码:TelemetryConfigurationFactory.setInstrumentationKey