Trace 提供了一种机制,可让您向 span 添加有意义的数据。如果您使用的是 Cloud Trace API V1,则可以使用 Cloud Trace API TraceSpan
对象中的 labels
字段添加标签(即键值对)。如果您使用的是 Cloud Trace API v2,则可以使用 Attributes
对象添加信息。如需了解详情,请参阅向轨迹 span 添加事件注释。
探索某个 span 时,该 span 的标签会显示在属性标签页中。例如,以下屏幕截图展示了此标签页:
如需了解如何访问此类信息,请参阅查找和探索跟踪记录。
labels
字段是键值对的映射。其中的键和值以字符串形式存储。如需了解字符串长度限制,请参阅 labels
的 API 参考。
每个 span 最多只能有 32 个标签。
预定义的键
规范化标签
下表列出了受支持的预定义键(包括说明),在某些情况下还包含示例:
标签键 | 说明 示例 |
---|---|
/agent |
Trace 代理标识符。"node@google-cloud/trace-agent v3.0.0" |
/component |
组件标识符。"grpc" |
/error/message |
错误消息。"Rendezvous of RPC that terminated with:
|
/error/name |
错误的显示名。 |
/http/client_city |
客户端所在的城市。"NYC" |
/http/client_country |
客户端所在的国家/地区。"US" |
/http/client_protocol |
HTTP 协议标识符。"1.0" |
/http/client_region |
客户端所在的区域。"us-east4" |
/http/host |
主机标头的值。"default.example.com"
|
/http/method † |
设置为 HTTP 请求方法。 对于非 HTTP 请求,请勿添加此键。 "GET"
|
/http/path † |
请求网址路径。"/cart/checkout" |
/http/redirected_url |
重定向前的网址。 在本例中,请使用键 HTTL 网址标签存储最终到达网址。 |
/http/request/size |
请求中的字节数。 |
/http/response/size |
响应中的字节数。 |
/http/route † |
匹配的路由。"/cart/checkout/:item_id" |
/http/status_code † |
HTTP 响应状态代码。"200" |
/http/url |
完整的 HTTP 请求网址。"http://example.com"
|
/http/user_agent |
发起该请求的 HTTP 用户代理的相关信息。"python-requests/2.19.1"
|
/stacktrace |
JSON 格式的堆栈轨迹。堆栈轨迹不会编入搜索索引。 此标签显示在调用堆栈表中。 /stacktrace 标签仅供 V1 API 使用。对于 V2 API, span 包含 stackTrace 字段。
|
"stackTrace": { "stackFrames": { "frame": [ { "functionName": { "value": "serverMethodTrace [as func]" }, "fileName": { "value": "/usr/src/app/node_modules/@google-cloud/trace-agent/build/src/plugins/plugin-grpc.js" }, "lineNumber": "249", "columnNumber": "28" }, { "functionName": { "value": "anonymous function" }, "fileName": { "value": "/usr/src/app/node_modules/grpc/src/server.js" }, "lineNumber": "592", "columnNumber": "13" } ] } }, |
†
此标签及其值显示在 Trace 详情视图中包含的详情表中。
GKE 的规范化标签
下表列出了 GKE 容器的所有规范化标签:
GKE 容器表中的显示名 标签键 |
说明 |
---|---|
项目 IDg.co/r/k8s_container/project_id |
托管 GKE 集群的 Google Cloud 项目。点击项目名称以转到 Google Cloud 控制台中的 GKE 信息中心。 |
位置g.co/r/k8s_container/location |
GKE 集群的实际位置。 |
集群名称g.co/r/k8s_container/cluster_name |
标识 GKE 集群。要转到集群配置页面,请点击此值。 |
命名空间g.co/r/k8s_container/namespace |
标识命名空间。要转到 GKE 的工作负载页面,请点击此值。 |
Pod 名称g.co/r/k8s_container/pod_name |
标识 GKE Pod。要转到 Pod 详细信息信息中心,请点击此值。 |
容器名称g.co/r/k8s_container/container_name |
标识 GKE 容器。如需转到容器的详细信息页面,请点击此值。 |
示例
以下是包含多个标签的 Trace
对象的部分 JSON 表示法:
{ "projectId": "a-sample-project", "traceId": "00000000000000004db6dd68e7d37f57", "spans": [ { "spanId": "12913864118554233534", "kind": "RPC_SERVER", "name": "http://xx.xxx.xxx.xxx/", "startTime": "2019-04-02T19:37:34.149058Z", "endTime": "2019-04-02T19:37:34.151136Z", "parentSpanId": "5599906629317525335", "labels": { "/component": "default", "/http/host": "xx.xxx.xxx.xxx", "/http/status_code": "200", "/http/url": "http://xx.xxx.xxx.xxx/", "zipkin.io/http.route": "/**", "/http/method": "GET", "zipkin.io/endpoint.ipv4": "10.16.1.6", "zipkin.io/http.path": "/", "zipkin.io/mvc.controller.class": "ResourceHttpRequestHandler" } } ] }
上一个轨迹来自使用 Zipkin 收集器的系统。在这种情况下,具有 zipkin.io
键的标签由该收集器添加。
g.co
前缀
在某些情况下,显示的标签包含 g.co
前缀。g.co
前缀表示此标签是由 Google 服务生成的。如果您是在 App Engine 或其他 Google Cloud 基础架构上运行服务,则可能会看到如下所示的标签:
标签键 | 示例标签值 |
---|---|
g.co/agent |
opentelemetry-js 1.18.1; google-cloud-trace-exporter 2.1.0 |
g.co/r/generic_node/location |
global |
自定义标签
您可以创建自定义标签。如果您要创建自定义标签,我们建议您使用以下格式:
/category/product/key
表示已知产品的代理。例如/db/mongodb/read_size
。short_host/path/key
表示特定于网域的键。例如g.co/agent
。
如果您创建了大量自定义标签,那么由于标签基数的增加,这可能会产生性能影响。
如示例部分所示,如果您使用 Zipkin 收集器或 OpenTelemetry 等库,则可能会向 Trace span 添加标签。
使用 OpenTelemetry
如果您使用的是 OpenTelemetry 库,请确保在创建 span 时使用 OpenTelemetry 语义惯例。