在堆栈驱动程序中看不到跟踪

Posted

技术标签:

【中文标题】在堆栈驱动程序中看不到跟踪【英文标题】:Unable to see traces in stackdriver 【发布时间】:2017-08-26 18:50:41 【问题描述】:

我正在使用以下 Java 代码向 stackdriver 发送测试跟踪

HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

GoogleCredential cred = GoogleCredential
    .fromStream(
        getClass().getClassLoader().getResourceAsStream("appengineServiceAccountKey.json"),
        httpTransport,
        jsonFactory)
    .createScoped(CloudTraceScopes.all());

CloudTrace gceTrace = new CloudTrace.Builder(httpTransport, jsonFactory, cred)
    .setApplicationName("Google Cloud Trace test app")
    .build();


TraceSpan span = new TraceSpan();
span.setName("foo-bar");
span.setSpanId(new BigInteger("1"));
span.setStartTime("2017-04-02T16:12:03.636Z");
span.setEndTime("2017-04-02T16:12:04.636Z");
Trace trace = new Trace();
trace.setTraceId(UUID.randomUUID().toString().replaceAll("-","")); // Mandatory
trace.setSpans(Collections.singletonList(span));
Traces traces = new Traces();
traces.setTraces(Collections.singletonList(trace)); // Mandatory
cloudTraceService.projects().patchTraces("myproject", traces);

但是,当我从控制台访问跟踪时,我什么也没看到。

https://console.cloud.google.com/traces/details/8289f38bcb6e44c5b30c98953bee0018?project=myproject

我错过了什么?

注意 - 我正在遵循How to do a simple Google Cloud Trace request in Java中提到的代码

更新

我尝试了来自 API explorer 的等效负载,它给了我 200 响应,但在 Stackdriver 控制台中仍然没有任何跟踪迹象。

以下是我的有效载荷

PATCH https://cloudtrace.googleapis.com/v1/projects/myproject/traces?key=YOUR_API_KEY


 "traces": [
  
   "projectId": "myproject",
   "spans": [
    
     "startTime": "2017-04-03T16:12:03.636Z",
     "endTime": "2017-04-03T16:12:04.636Z",
     "spanId": "2"
     "name": "bar-foo"
    
   ],
   "traceId": "8289f38bcb6e44c5b30c98953bee0018"
  
 ]

回应

200

- Show headers -



控制台

更新:

感谢 GCP 社区 slack 中的某个人指出有效负载中缺少 Span 名称,以便能够在跟踪控制台中看到它。我在这里更新了代码。但是,即使在设置跨度名称之后,当我从 java 代码发送它时,我仍然无法看到跟踪。

有什么方法可以检查触发上述java代码时正在发送的有效载荷吗?

【问题讨论】:

【参考方案1】:

最后我发现我没有在构建请求后调用 pt.execute()

PatchTraces pt =cloudTraceService.projects().patchTraces("myproject", traces);

pt.execute()

参考patchTraces#examples

【讨论】:

以上是关于在堆栈驱动程序中看不到跟踪的主要内容,如果未能解决你的问题,请参考以下文章

找不到 android NDK 堆栈跟踪

Windbg可以看到Visual Studio中看不到的有效函数调用堆栈

如何获得触发的 MutationObserver 的堆栈跟踪?

详细的堆栈跟踪:错误:找不到模块“条带”

为啥我在 intelliJ logcat 视图中看不到任何错误?

在 Tkinter Python 程序中看不到图片