Google-Cloud-Platform

根據 textPayload 設置 Stackdriver 嚴重性

  • August 11, 2020

我們有一個由我們的開發人員創建的內部 Java 應用程序,用於log4j格式化其日誌消息。最近,我們開始在 Google Kubernetes Engine 上執行它,因此日誌會自動從標準輸出通過管道傳輸到 Stackdriver。但是,所有日誌都以嚴重級別顯示INFO。一條這樣的消息有一個 textPayload ,開頭是這樣的:

18 Jul 2019 10:11:32.334 [ERROR] [req=api-test--870259294-18071111-11 sess=cwfscqttcfqh1acsictx3toxv reqMs=4]

很明顯,開發人員的意圖是這是一條ERROR嚴重性消息,但由於他們沒有使用 Stackdriver 建構他們的應用程序,因此它是非結構化的並被報告為INFO嚴重性。

必須更改應用程序以尊重我們使用的集中式日誌記錄感覺是錯誤的;我們的客戶可能會使用其他日誌記錄解決方案。有沒有辦法讓 Stackdriver 使用 textPayload 來確定嚴重性?我在 Google Kubernetes Engine 上執行,因此我沒有設置任何日誌記錄基礎設施,並且除了 Google 將提供的之外,我沒有任何訪問權限。

我有興趣進行此更改,因為 Google Cloud Platform 的錯誤報告是跟踪錯誤消息的強大工具,但它僅適用於ERROR嚴重性或更高級別的日誌。簡單地在 Stackdriver 中的日誌上創建一個指標不會給我想要的控制權。

快速回答是否定的,您將需要更改程式碼並為每條消息實施正確的日誌記錄,並具有正確的嚴重性。您可以將 Stackdriver 日誌導出到 BigQuery,這很正常,然後執行更複雜的查詢。

在這裡您可以找到一些有用的連結:

https://cloud.google.com/logging/docs/export/bigquery

https://cloud.google.com/logging/docs/structured-logging

引用自:https://serverfault.com/questions/975729