如何使用Stackdriver Trace在App Engine标准中创建自定义范围?

时间:2019-08-23 12:35:21

标签: java google-app-engine google-cloud-platform google-cloud-stackdriver google-cloud-trace

我尝试将自定义范围和注释添加到AppEngine标准应用程序。在GCP控制台的“跟踪”页面中,我看到了默认范围,但没有看到我添加的自定义范围。

我遵循以下文档:https://cloud.google.com/trace/docs/setup/java 我使用的是最新版本的opencensus-api 0.23.0

已启用Stackdrive Trace API,并且在API的指标页面中看到该应用程序成功完成了google.devtools.cloudtrace.v2.TraceService.BatchWriteSpans调用。

我基于重现此问题的官方helloworld应用程序创建了一个示例应用程序。

有趣的部分:

private static final Tracer tracer = Tracing.getTracer();

static {
    try {
        System.out.println("Init StackdriverTraceExporter");
        StackdriverTraceExporter.createAndRegister(
                StackdriverTraceConfiguration.builder()
                        .setProjectId("project-id")
                        .build());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

public static String getInfo() {

    try (Scope ignored = tracer.spanBuilder("MyChildWorkSpan").setSampler(Samplers.alwaysSample()).startScopedSpan()) {
        tracer.getCurrentSpan().addAnnotation("annotation example");
        try {
            Thread.sleep(100);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        System.out.println("annotation created");
        return "Version: " + System.getProperty("java.version")
                + " OS: " + System.getProperty("os.name")
                + " User: " + System.getProperty("user.name")
                + " Span: " + tracer.getCurrentSpan();
    }
}

您可以看到完整的代码here


我发现了我的错误。 这是我打开问题时看到的: trace_list 问题在于选择了服务和版本。

这些自定义范围看起来像一个单独的请求,我需要选择所有服务,否则它们将被隐藏。 child span

所以至少我可以看到它以某种方式起作用,但这不是我想要的。我想实现以下目标:combined_trace

如何将我的自定义范围附加到针对请求显示的根范围?

1 个答案:

答案 0 :(得分:1)

我检查了您的问题,并进行了一些复制,并且可以添加自定义跨度“ MyChildWorkSpan”和注释“注释示例”,与您从code到{ {3}}。

我使用了io.opencensus的两个版本({2.2 Helloworld application in AppEngine Standard with Java 8(与Maven一起使用)和0.23.0,这是您尝试使用的版本)。在这两种情况下,我都成功在Stackdriver Trace列表中看到了自定义范围。

在浏览到时,是否可以附上您在Google Cloud控制台> Stackdriver Trace列表中看到的屏幕截图?您可以在其中看到自定义范围“ MyChildWorkSpan”和注释“注释示例”吗?还是您没有看到其他自定义范围/注释?