Google Cloud 有一个强大的跟踪工具,用于分析请求和 RPC 的延迟。 但它似乎只是挑选了一些它认为值得跟踪的请求。 有时这已经足够好了,您只需浏览现有跟踪即可。 但是,如果您正在改进性能,则希望立即对特定查询进行跟踪,则不希望等到它被认为有趣。
问题是
- 哪些
规则干预决定跟踪哪些查询?
有没有办法要求为给定的URI捕获跟踪?
无论是从开发人员控制台中,还是通过从我们的应用程序中调用某些 API ? 还是通过一些 app.yaml 配置 ? 还是我们必须等待并祈祷伟大的算法来选择我们的请求?
您可以通过正确设置云跟踪上下文标头来强制跟踪 HTTP 请求:
$ curl -H "X-Cloud-Trace-Context: 01234567890123456789012345678901;o=1" http://<your-app>.appspot.com/<path>
01234567890123456789012345678901
(32 个十六进制字符)是跟踪 ID。您希望每次都使用不同的。 o=1
启用跟踪。
使用以下 URL 查看跟踪(最后一部分是跟踪 ID):http://console.developer.google.com/traces/details/01234567890123456789012345678901
既然你对特定的请求感兴趣,为什么不使用appstats呢?https://cloud.google.com/appengine/docs/python/tools/appstats?hl=en,您可以增强性能,打开appstats并将其部署到不同的版本,并从appengine_config.py进行一些控制
我使用云跟踪来获取聚合分析,为了深入了解每个请求的更多详细信息,我总是使用 appstats,因为它包含更多信息。
哪些规则干预决定跟踪哪些查询?
目前有一个采样率来指导跟踪哪些请求。每个实例每秒对请求进行少量采样。
有没有办法要求为给定的URI捕获跟踪?
根据您的方案,以下内容可能会有所帮助。
您可以添加跟踪上下文以强制请求对请求进行强制跟踪。Trace Context本质上是一个HTTP标头(X-Cloud-Trace-Context)
下面是一个帮助注入跟踪上下文的指针:https://github.com/liqianluo/gcloud-trace-java/blob/master/cloud-trace-sdk-java-core/src/main/java/com/google/cloud/trace/sdk/TraceContext.java