統一的可觀察性:指標、日誌和跟蹤

語言: CN / TW / HK

作者/ Paul Parkinson

來源/翻譯外網

01

資料驅動的微服務和可觀察性

一般來說,現代應用程式開發和微服務架構的性質使可觀察性(指標、日誌和跟蹤)成為 DevOps 的絕對關鍵要求。此外,可觀察性工具越高效,使用者和應用程式就越有效。目前,有許多不同的工具用於監控、跟蹤和日誌記錄,使得跨工具的關聯變得困難。此外,應用程式和資料庫的可觀察性目前是完全不同和獨立的,本地和基於雲的工具也是如此。

CNCF 提供了許多開放標準,例如 OpenTelemetry,也有相應的開放技術,例如 Prometheus、Jaeger 和 Grafana。這些標準和技術可以一起使用,以提供跨指標、日誌和跟蹤以及跨應用程式和資料庫層的統一可觀察性。

*注意,我不是在任何嚴格的拓撲含義中指代“層”,而是為了解釋應用程式和資料庫這兩個方面的分離。話雖如此,在這篇部落格的上下文中,我確實指的是基於 Kubernetes 的應用程式層。

下圖是統一的可觀測性架構圖:

*請注意,不排除使用 ELK(Elasticsearch、Logstash 和 Kibana)或 EFK(Elasticsearch、Fluentd 和 Kibana)堆疊,也不排除任何 Oracle 資料庫產品,例如 Enterprise Manager、Trace File Analyzer、Application Performance Monitor等。每個都有其優點、缺點和用例。此處介紹的 PLG(Promtail、Loki、Grafana)是由 Grafana 推廣的解決方案,該解決方案越來越受歡迎,因為它非常適合擁有系統的單一窗格檢視的能力。

02

配置和程式碼示例嘗試

統一可觀測性資料庫研討會目前包含以下實驗室。

設定和部署應用程式

  • 使用了Simplifying Data-driven Microservices Workshop中的“GrabDish”應用程式。

使用資料庫指標、日誌匯出器啟用可觀察性

  • 一個簡單的指令碼在這裡設定了您需要的所有內容,您可以參考該指令碼瞭解詳細資訊。
  • 這將在下一版研討會中通過使用可觀察性控制器/操作員來取代和自動化。

配置警報通道

  • 簡單展示瞭如何設定 Slack(或 Prometheus AlertManager 等)來接收警報。

可診斷性和除錯用例

  • 系統故障顯示在儀表板上並已修復的基本用例
  • 這將得到增強,以在下一個版本的研討會中演示跨層的更復雜的除錯場景。

效能監控用例

  • 負載測試導致效能下降觸發警報的基本用例。
  • 這將得到增強,以便在下一個版本的研討會中提供跨層的效能細節的更多細節。

更好地理解和修改指標、日誌記錄和跟蹤

  • 有關如何在應用程式和資料庫層中收集指標、日誌記錄和跟蹤的基本詳細資訊,如何使用 OpenTracing Id 和 Oracle ECID 跨層進行跟蹤等,包括原始碼示例。
  • 更多細節和增強使用 OpenTelemetry 自動儀器等將包含在下一版本的研討會中。

03

示例 Grafana 儀表板

示例儀表板基本上顯示了象限中的微服務資訊:

  • 執行在 Kubernetes 上的微服務的執行時指標,例如 CPU
  • 在 Kubernetes 上執行的微服務的特定於應用程式的指標,例如“PlaceOrder 計數”
  • 微服務資料庫的執行時指標,例如連線會話
  • 微服務資料庫的特定於應用程式的指標,例如“處於待處理狀態的訂單”

04

要跟蹤的日誌和跟蹤到日誌的日誌

指標、日誌和跟蹤可以在 Grafana 中並排檢視。使用者可以在特定指標上向下鑽取到相應的日誌。使用者還可以在日誌上向下鑽取到相應的跟蹤,反之亦然。請注意以下日誌輸出中的“Jaeger”連結。Kubernetes 微服務日誌和 Oracle 資料庫日誌都提供了這些日誌到跟蹤的相關性。

下面的跟蹤對應於上面的日誌(通過提到的“Jaeger”連結訪問)和視覺化圖形分析。同樣,這一切都發生在同一個 Grafana 控制檯中。

05

結論

我已經談到了為現代應用程式開發和使用 Oracle 資料庫的資料驅動微服務提供的統一可觀察性解決方案的一些基礎知識。我期待很快在這個系列中繼續釋出內容。我們正在該領域建立一些令人興奮的新功能,以幫助開發人員和運營人員獲得更簡單、更有效、更愉快的可觀察性體驗。

有疑問加站長微信聯絡(非本文作者)