Пожалуйста, помогите, у меня не получилось в течение 3 дней: /
Я развернул несколько сервисов в Google Cloud Run и хотел бы отслеживать запросы и сопоставлять журналы с этими запросами как запросыпрыгать через услуги. StackDriver имеет отличную платформу для этого в «StackDriver Trace». Я использую библиотеку Google.Cloud.Diagnostics в моих основных веб-API asp.net. Я могу успешно отслеживать запросы, запускать пролеты и видеть промежутки, вложенные в трассировку на временной шкале StackDriver Trace. Однако я не знаю, как заставить мои журналы соотноситься с трассами и интервалами?
Документы StackDriver утверждают, что запись «специальных полей» в объект LogEntry
будет распознанас помощью Logging API:
Special fields in structured payloads
When the Logging agent receives a structured log record, it treats the following fields specially, allowing you to set specific fields in the LogEntry object that get written to the Logging API.
All (special fields) are stripped from the payload if present.
В частности, это говорит о поле 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.
source: https://cloud.google.com/logging/docs/agent/configuration#special-fields
Я пробовал многоэто разные вещи в моем структурированном JSON, но представление трассировки Stackdriver не распознает мои журналы и не вкладывает их в трассировку запросов. В настоящее время я включаю трассировку и spanId в JSON.
Вот один из моих журналов, которые 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"
}
Есть мысли ???