我有一些在Container Engine(GKE)中运行的微服务,我试图在Google控制台中获取跟踪信息,但是出现了一些问题。
这是我的清单:
我错过了什么? 提前致谢。
更新:我能够通过GKE pod的curl手动查询trace api:
kubectl exec -it POD -- /bin/bash curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" curl --verbose -d '{"traces": [{"projectId":"xxxx","traceId":"12345678901234567890123456789053","spans":[{"spanId":3,"name":"test"}]}]}' -X PATCH https://cloudtrace.googleapis.com/v1/projects/xxxx/traces -H "Content-Type: application/json" -H "Authorization":"Bearer TOKEN"
curl输出:
PATCH / v1 / projects / line-b / traces HTTP / 1.1 User-Agent:curl / 7.38.0 Host:cloudtrace.googleapis.com接受: / Content-Type:application / json授权:持票人TOKEN Content-Length:118
仪表板也已更新:
您可以直接查看API报告图 ,查看您对google.devtools.cloudtrace.v1.TraceService.PatchTraces的调用失败,并显示403 Forbidden错误。
403当对服务器的请求未被授权时引起禁止。 因此,从Container Engine(GKE)群集到“cloudtrace.PatchTraces”的呼叫未经授权。
这可能是由于您设置了有限的Stackdriver Trace“只写”权限。 另外,确保在创build群集时添加了“trace.append”范围 。
关于Stackdriver中缺less的日志。 一旦为您的集群启用了Stackdriver Logging,您应该可以简单地写入“STDOUT”和“STDERR”。 Fluentd应该照顾发送这个到Stackdriver和输出应该在日志查看器下的“GKE容器”下拉列表中可用。
或者,您可以使用Stackdriver Logging Client Library直接写入Stackdriver,就像使用Stackdriver Trace API一样。 您还应该设置日志严重性以便在日志查看器中更轻松地进行筛选,以查找特定的错误日志(如您所看到的403)。