无法在 stackdriver 中看到痕迹
Unable to see traces in stackdriver
我正在使用以下 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
我是不是漏掉了什么不对劲的东西?
注意 - 我遵循
中提到的代码
更新
我尝试了来自 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 代码被触发时,有什么方法可以检查正在发送的负载是什么?
最后我发现我并没有在构建后调用 pt.execute() 请求
PatchTraces pt =cloudTraceService.projects().patchTraces("myproject", traces);
pt.execute()
我正在使用以下 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
我是不是漏掉了什么不对劲的东西?
注意 - 我遵循
更新
我尝试了来自 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 代码被触发时,有什么方法可以检查正在发送的负载是什么?
最后我发现我并没有在构建后调用 pt.execute() 请求
PatchTraces pt =cloudTraceService.projects().patchTraces("myproject", traces);
pt.execute()