GCP StackDriver:如何关联(和嵌套)信息日志与跟踪日志?

GCP StackDriver:如何关联(和嵌套)信息日志与跟踪日志?

请帮忙,我已经三天没成功了 :/

我正在向 Google Cloud Run 部署一些服务,并希望在请求通过服务时跟踪请求并将日志与这些请求关联起来。StackDriver 在“StackDriver Trace”中为此提供了一个很好的平台。我在我的 asp.net core web api 中使用了 Google.Cloud.Diagnostics 库。我能够成功跟踪请求并启动跨度,并在 StackDriver Trace Timeline 中看到嵌套在跟踪中的跨度。但是我不知道如何让我的日志与跟踪和跨度相关联。

StackDriver 文档指出,向LogEntry对象写入“特殊字段”将被 Logging API 识别。

关于这个领域它具体是这么说的trace

The value of this field should be formatted as projects/[PROJECT-ID]/traces/[TRACE-ID], so it can be used by the Logs Viewer and the Trace Viewer to group log entries and display them in line with traces. 

来源:https://cloud.google.com/logging/docs/agent/configuration#special-fields

我尝试过很多不同的方法来处理结构化的 JSON,但 Stackdriver Trace View 无法识别我的日志并将其嵌套在请求跟踪中。目前,我在 JSON 中同时包含了跟踪和 spanId。

这是 StackDriver Trace 不会嵌套在跟踪中的日志之一:

{
 insertId: "5da6c3a200j0923bx23x2"  
 jsonPayload: {
  ConnectionId: "0HLQI121N94JM"   
  CorrelationId: null   
  RequestId: "0HLQI121N94JM:00000001"   
  RequestPath: "/graphql"   
  message: "Getting Collection of type: FakeItem in GetCollectionOfItemsAsync"   
  messageTemplate: "Getting Collection of type: FakeItem in GetCollectionOfItemsAsync"   
  spanId: "4560986706170855936"   
  timestamp: "2019-10-16T07:15:46.8713740Z"   
  trace: "projects/myProject/traces/04b4a840df0289bb9fddcd62235d3ee4"   
 }
 labels: {
  instanceId: "00bf4bf02d34e072dc1c49x8dj943x4b5609mubm0409u566ad08acf6283d2b5135651fd8f2633e7b06e7dde4b96cfddbf5373a642da0b65fb21cf87a5aad"   
 }
 logName: "projects/myProject/logs/run.googleapis.com%2Fstdout"  
 receiveTimestamp: "2019-10-16T07:15:47.113845061Z"  
 resource: {
  labels: {
   configuration_name: "baseproject-graphql"    
   location: "us-central1"    
   project_id: "myProject"    
   revision_name: "baseproject-graphql-vhglp"    
   service_name: "baseproject-graphql"    
  }
  type: "cloud_run_revision"   
 }
 timestamp: "2019-10-16T07:15:46.871489Z"  
}

这是由 gcp 生成并被识别的日志:

{
 httpRequest: {
  latency: "0.026068056s"   
  protocol: "HTTP/1.1"   
  remoteIp: "73.158.189.48"   
  requestMethod: "POST"   
  requestSize: "1950"   
  requestUrl: "https://baseproject-api.myUrl.com/graphql"   
  responseSize: "2768"   
  serverIp: "152.289.4.125"   
  status: 200   
  userAgent: "PostmanRuntime/7.18.0"   
 }
 insertId: "5da6c3a8j90kjo9db8346"  
 labels: {
  instanceId: "00bf4bf02d34e072dc1cfda1073f2f5ec6888d75e1d75f26259006ad08acf6283d2b5135651fd8f26398n9hu0h9h09gm08g76f67f567fb21cf87a5aad"   
 }
 logName: "projects/myProject/logs/run.googleapis.com%2Frequests"  
 receiveTimestamp: "2019-10-16T07:15:47.207098181Z"  
 resource: {
  labels: {
   configuration_name: "baseproject-graphql"    
   location: "us-central1"    
   project_id: "myProject"    
   revision_name: "baseproject-graphql-vhglp"    
   service_name: "baseproject-graphql"    
  }
  type: "cloud_run_revision"   
 }
 severity: "INFO"  
 timestamp: "2019-10-16T07:15:46.877387Z"  
 trace: "projects/myProject/traces/04b4a840df0289bb9fddcd62235d3ee4"  
}

有什么想法吗???

相关内容