我正在尝试在古巴平台中使用 Azure Application Insight:https://learn.microsoft.com/en-us/azure/application-insights/app-insights-java-get-started
我设法将库添加到 Cuba Platform,特别是添加到 Web 模块,但我无法以任何方式设置“Instrumentation key”。
有以下三种方法:
1- 将 ApplicationInsights.xml 放入“资源”文件夹
我找不到放置 TelemetryConfigurationFactory 类要读取的文件的位置。在内部,我看到它使用 getResource() 来扫描各种“合理”的地方。我尝试了 WEB-INF、META-INF、Tomcat 中的 conf 目录、conf/app、java 包的根目录、Tomcat 中的 work/app 以及可能更多的内容,但没有结果。
2- 系统属性:-DAPPLICATION_INSIGHTS_IKEY=your_ikey
3- 环境变量:APPLICATION_INSIGHTS_IKEY
在 docker 容器中尝试了这两种方法,在本地尝试了最后一种方法:没有结果。特别是,即使在本地手动导出变量后,System.getEnv 也会返回 null,因此这可能是我这边的一些错误
欢迎任何见解:D 欢迎
最佳答案
我尝试从 Application Insights source code 搜索 Instrumentation key 的配置.
我可以在 TelemetryConfigurationFactory Class 中看到如下代码片段.
/**
* Setting an instrumentation key:
* First we try the system property '-DAPPLICATION_INSIGHTS_IKEY=i_key' or '-DAPPINSIGHTS_INSTRUMENTATIONKEY=i_key'
* Next we will try the environment variable 'APPLICATION_INSIGHTS_IKEY' or 'APPINSIGHTS_INSTRUMENTATIONKEY'
* Next we will try to fetch the i-key from the ApplicationInsights.xml
* @param userConfiguration The configuration that was represents the user's configuration in ApplicationInsights.xml.
* @param configuration The configuration class.
*/
private void setInstrumentationKey(ApplicationInsightsXmlConfiguration userConfiguration, TelemetryConfiguration configuration) {
try {
String ikey;
// First, check whether an i-key was provided as a java system property i.e. '-DAPPLICATION_INSIGHTS_IKEY=i_key', or '-DAPPINSIGHTS_INSTRUMENTATIONKEY=i_key'
ikey = System.getProperty(EXTERNAL_PROPERTY_IKEY_NAME);
if (!Strings.isNullOrEmpty(ikey)) {
configuration.setInstrumentationKey(ikey);
return;
}
ikey = System.getProperty(EXTERNAL_PROPERTY_IKEY_NAME_SECONDARY);
if (!Strings.isNullOrEmpty(ikey)) {
configuration.setInstrumentationKey(ikey);
return;
}
// Second, try to find the i-key as an environment variable 'APPLICATION_INSIGHTS_IKEY' or 'APPINSIGHTS_INSTRUMENTATIONKEY'
ikey = System.getenv(EXTERNAL_PROPERTY_IKEY_NAME);
if (!Strings.isNullOrEmpty(ikey)) {
configuration.setInstrumentationKey(ikey);
return;
}
ikey = System.getenv(EXTERNAL_PROPERTY_IKEY_NAME_SECONDARY);
if (!Strings.isNullOrEmpty(ikey)) {
configuration.setInstrumentationKey(ikey);
return;
}
// Else, try to find the i-key in ApplicationInsights.xml
if (userConfiguration != null) {
ikey = userConfiguration.getInstrumentationKey();
if (ikey == null) {
return;
}
ikey = ikey.trim();
if (ikey.length() == 0) {
return;
}
configuration.setInstrumentationKey(ikey);
}
} catch (Exception e) {
InternalLogger.INSTANCE.error("Failed to set instrumentation key: '%s'", e.getMessage());
}
}
似乎可以将 Instrumentation key 配置为 java 系统属性
、环境变量
或在 ApplicationInsights.xml
中。
根据您的描述,您的代码中的System.getEnv("XXX")返回null。您可以检查以下可能的原因:
使用“我的电脑”>“高级”>“环境变量”使变量对所有新进程可见。
2.尝试读取变量的进程已在运行。重新启动它。
3.Tomcat的启动脚本在调用java.exe之前取消设置变量
4.Tomcat 取消设置其 Java 代码中的变量。
另外,您可以引用这个帖子:System.getenv() returns null when the environment variable exists .
希望对您有帮助。
关于java - 古巴平台的应用洞察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47452950/
多年来,这一直是令人困惑和沮丧的根源。假设您导入了一个文档记录特别差的模块,并且您需要的某个方法只有 **kwargs 作为其参数,您应该如何知道该方法正在检查哪些键? def test(**kwar
一:背景 1. 讲故事 前几天写了一篇 如何洞察 .NET程序 非托管句柄泄露 的文章,文中使用 WinDbg 的 !htrace 命令实现了句柄泄露的洞察,在文末我也说了,Wi
所以我正在尝试使用 Facebook Python API提取我们的参与数据(点赞、分享等,基本上是 Facebook 网站上“洞察”选项卡下的所有内容)。 我已设法通过 API 建立连接并使访问 t
我注意到从 facebook insights 返回的数据在从 API 获取数据时与从 CSV 导出数据中获取时存在一致的差异。例如,对于某个指标 (page_impressions_unique_d
我用 Python 创建了一个 XGBoost 模型,并使用以下代码来更好地理解该模型: xgb.plot_importance(model) 或 xgb.plot_importance(model,
谁能告诉我 Visual Studio 的内存转储中概述的行为类型 正常吗?例如,StackExchange.Redis.PhysicalConnection 在包含大小(字节)上运行得那么高吗?还是
谁能告诉我 Visual Studio 的内存转储中概述的行为类型 正常吗?例如,StackExchange.Redis.PhysicalConnection 在包含大小(字节)上运行得那么高吗?还是