如何跟踪 Java 函数应用程序的依赖项
How to track dependencies of Java Function Apps
我为使用 Java 实现的 Azure Function App 设置了一些依赖项跟踪。因此我添加了 applicationinsights-core
作为依赖项,参见 Add the Application Insights SDK for Java to your project.
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>2.6.2</version>
</dependency>
要创建 dependencies
条目,我使用 TelemetryClient
.
的实例
// call an external service, e.g. ADLS file upload..
long start = System.currentTimeMillis();
uploadFile();
long elapsed = System.currentTimeMillis() - start;
// void trackDependency(String dependencyName, String commandName, Duration duration, boolean success)
new TelemetryClient().trackDependency(
"ADLS", "upload file", new Duration(elapsed), true);
生成的 dependencies
条目看起来很奇怪。它遗漏了 cloud_RoleName
,它通常标识条目的创建者。此外,commandName
作为 data
属性 传递,似乎无法设置条目的 type
属性。
虽然我没有找到用于依赖项跟踪的专用 Java Function App 文档,但一般 Java 文档建议另外使用 applicationinsights-agent
(请参阅 Java codeless application monitoring Azure Monitor Application Insights). The agent handles the telemetry of applicationinsights-core
(see Supported custom telemetry)。但对我来说,如何为 Azure Function App 设置代理并不明显。
如何设置 cloud_RoleName
?
有没有办法设置dependencies
的type
属性?
我找到了仅使用 applicationinsights-core
的解决方案。
cloud_RoleName
可以取自环境变量WEBSITE_SITE_NAME
。
type
可以通过 RemoteDependencyTelemetry
的 setter 配置。
// create depedencies entry
createTelemetryClient().trackDependency(
buildTelemetry("ADSL", "upload file", "custom context", successful, elapsed));
// ..
private TelemetryClient createTelemetryClient() {
TelemetryConfiguration configuration = TelemetryConfiguration.getActive();
configuration.setRoleName(System.getenv("WEBSITE_SITE_NAME"));
return new TelemetryClient(configuration);
}
private RemoteDependencyTelemetry buildTelemetry(String type,
String name,
String data,
boolean successful,
long elapsed) {
RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(
name,
data,
new Duration(elapsed),
successful);
telemetry.setType(type);
return telemetry;
}
我为使用 Java 实现的 Azure Function App 设置了一些依赖项跟踪。因此我添加了 applicationinsights-core
作为依赖项,参见 Add the Application Insights SDK for Java to your project.
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>2.6.2</version>
</dependency>
要创建 dependencies
条目,我使用 TelemetryClient
.
// call an external service, e.g. ADLS file upload..
long start = System.currentTimeMillis();
uploadFile();
long elapsed = System.currentTimeMillis() - start;
// void trackDependency(String dependencyName, String commandName, Duration duration, boolean success)
new TelemetryClient().trackDependency(
"ADLS", "upload file", new Duration(elapsed), true);
生成的 dependencies
条目看起来很奇怪。它遗漏了 cloud_RoleName
,它通常标识条目的创建者。此外,commandName
作为 data
属性 传递,似乎无法设置条目的 type
属性。
虽然我没有找到用于依赖项跟踪的专用 Java Function App 文档,但一般 Java 文档建议另外使用 applicationinsights-agent
(请参阅 Java codeless application monitoring Azure Monitor Application Insights). The agent handles the telemetry of applicationinsights-core
(see Supported custom telemetry)。但对我来说,如何为 Azure Function App 设置代理并不明显。
如何设置 cloud_RoleName
?
有没有办法设置dependencies
的type
属性?
我找到了仅使用 applicationinsights-core
的解决方案。
cloud_RoleName
可以取自环境变量WEBSITE_SITE_NAME
。type
可以通过RemoteDependencyTelemetry
的 setter 配置。
// create depedencies entry
createTelemetryClient().trackDependency(
buildTelemetry("ADSL", "upload file", "custom context", successful, elapsed));
// ..
private TelemetryClient createTelemetryClient() {
TelemetryConfiguration configuration = TelemetryConfiguration.getActive();
configuration.setRoleName(System.getenv("WEBSITE_SITE_NAME"));
return new TelemetryClient(configuration);
}
private RemoteDependencyTelemetry buildTelemetry(String type,
String name,
String data,
boolean successful,
long elapsed) {
RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(
name,
data,
new Duration(elapsed),
successful);
telemetry.setType(type);
return telemetry;
}