![GCP StackDriver: Wie korreliere (und verschachtele) ich Infoprotokolle mit Ablaufverfolgungsprotokollen?](https://rvso.com/image/1606675/GCP%20StackDriver%3A%20Wie%20korreliere%20(und%20verschachtele)%20ich%20Infoprotokolle%20mit%20Ablaufverfolgungsprotokollen%3F.png)
Bitte helfen Sie mir, ich habe seit 3 Tagen keinen Erfolg :/
Ich stelle eine Handvoll Dienste für Google Cloud Run bereit und möchte Anfragen verfolgen und Protokolle mit diesen Anfragen korrelieren, während die Anfragen durch die Dienste springen. StackDriver bietet hierfür mit „StackDriver Trace“ eine großartige Plattform. Ich verwende die Bibliothek Google.Cloud.Diagnostics in meinen asp.net-Core-Web-APIs. Ich kann Anfragen erfolgreich verfolgen, Spans starten und die Spans in der Trace-Zeitleiste von StackDriver verschachtelt sehen. Ich weiß jedoch nicht, wie ich meine Protokolle mit den Traces und Spans korrelieren kann.
In den StackDriver-Dokumenten heißt es, dass das Schreiben von „Sonderfeldern“ in das LogEntry
Objekt von der Logging-API erkannt wird.
Im Einzelnen heißt es zu dem trace
Feld:
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.
Quelle:https://cloud.google.com/logging/docs/agent/configuration#special-fields
Ich habe viele verschiedene Dinge mit meinem strukturierten JSON ausprobiert, aber die Stackdriver Trace View erkennt meine Protokolle nicht und verschachtelt sie nicht in der Anforderungsverfolgung. Derzeit schließe ich sowohl die Verfolgung als auch die SpanId in das JSON ein.
Hier ist eines meiner Protokolle, das StackDriver Trace nicht in die Ablaufverfolgung einbettet:
{
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"
}
Hier ist ein von gcp generiertes Protokoll, das erkannt wird:
{
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"
}
Irgendwelche Gedanken???