使用 Oracle Cloud 上的 Application Performance Monitoring 監控和追蹤微服務

監控微服務可能是因為其架構的複雜性以及分散式部署模型所帶來的挑戰。

微服務應用程式可由許多不同系統部署的數千個獨立服務組成,而每個服務則與其程序一起執行。追蹤微服務應用程式中的交易流程或除錯問題時,專注於特定資源和狀況監控器的傳統監控方法不再有效。

Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) 可在微服務上自動執行 OpenTracing 工具,並擷取完整的端對端使用者交易,協助您瞭解使用者體驗和應用程式效能。APM 包含分散式追蹤系統的實作,可啟用執行處理層次、端對端及交易追蹤。它也啟用應用程式伺服器和業務度量監控。

架構

此參考架構示範如何使用 Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) 來監控部署在 OCI Kubernetes Engine (OKE) 叢集上的微服務應用程式。

下方的架構圖顯示 Kubernetes 叢集中部署的微服務應用程式。此應用程式託管在具有兩個部署複本的應用程式伺服器上,並使用 JDBC 連線至 Oracle Autonomous Database 。一般使用者可透過 Oracle Cloud 代管的 Web 介面存取應用程式。每個圖表都顯示不同的方法:

  • OpenTelemetry Operator:第一個方法使用 Kubernetes 運算子,簡化 Java 代理程式自動插入 Kubernetes Pod 中執行的 Java 虛擬機器 (JVM)。

  • 共用檔案系統:第二種方式是使用共用檔案系統來佈建和部署 APM 代理程式。

這兩種方法都可以監控部署在 Kubernetes 上的 Java 應用程式伺服器或架構,例如 Oracle WebLogic Server 或 Spring Boot。

下圖顯示 OpenTelemetry Operator 實行:



apm- 微服務 - 開放式遙測 -oracle.zip

此架構中的資料流程如下:

A:將 APM Java 代理程式部署到 Kubernetes Pod。
  1. 在 OCI 中建立 APM 網域,並取得網域的資料上傳端點 URL 和私密和公用資料金鑰。
  2. 在 OCI 中建立共用檔案系統,並建立 Kubernetes 儲存物件,例如 OKE 叢集中的永久磁碟區。
  3. 從 APM 網域下載 APM Java 代理程式,然後在掛載的磁碟區中佈建。
  4. 更新 Kubernetes 部署的 YAML 檔案或 StatefulSets,將 APM 代理程式部署至應用程式。

B:OpenTelemetry Operator 會自動將「Java 代理程式」下載至本機快取。Java 代理程式安裝在 OKE 叢集中每個複本的本機上。

C:伺服器和 JDBC 追蹤、跨度以及測量結果會傳送至 APM 網域。重新啟動 Kubernetes Pod 之後,會將伺服器的追蹤和跨度傳送至資料上傳端點 URL 所在的 APM 網域。

D:瀏覽器追蹤、跨度和度量會傳送至 APM 網域。收集的資料可在 APM 儀表板和追蹤總管中視覺化,以提供效能和可用性分析。

下圖顯示共用檔案系統實行:



apm- 微服務 -arc-oracle.zip

此架構中的資料流程如下:

A:將 APM Java 代理程式部署到 Kubernetes Pod。
  1. 在 OCI 中建立 APM 網域,並取得網域的資料上傳端點 URL 和私密和公用資料金鑰。
  2. 在 OCI 中建立共用檔案系統,並建立 Kubernetes 儲存物件,例如 OKE 叢集中的永久磁碟區。
  3. 從 APM 網域下載 APM Java 代理程式,然後在掛載的磁碟區中佈建。
  4. 更新 Kubernetes 部署的 YAML 檔案或 StatefulSets,將 APM 代理程式部署至應用程式。

B:伺服器和 JDBC 追蹤、跨度以及測量結果會傳送至 APM 網域。重新啟動 Kubernetes Pod 之後,會將伺服器的追蹤和跨度傳送至資料上傳端點 URL 所在的 APM 網域。

C:瀏覽器追蹤、跨度和度量會傳送至 APM 網域。收集的資料可在 APM 儀表板和追蹤總管中視覺化,以提供效能和可用性分析。

此架構包含下列元件:

  • Tenancy

    租用戶是 Oracle 在您註冊 Oracle Cloud Infrastructure 時設定在 Oracle Cloud 內的安全隔離分割區。您可以在您的租用戶內建立、組織及管理 OCI 中的資源。租用戶與公司或組織同義。通常,公司會擁有單一租用戶,並在該租用戶內反映其組織結構。單一租用戶通常與單一訂閱相關聯,單一訂閱通常只有一個租用戶。

  • 地區

    Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個代管可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間來組織、控制存取,以及為您的 Oracle Cloud 資源設定使用配額。在指定的區間中,您可以定義控制存取及設定資源權限的原則。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

    在此架構中,代管 Reds 叢集的所有運算執行處理都會連附至單一區域子網路。

  • 安全清單

    您可以為每個子網路建立安全規則,以指定允許進出子網路的來源、目的地和流量類型。

    此架構會新增 TCP 連接埠 16379 和 6379 的傳入規則。連接埠 6379 提供 Reds 用戶端,而連接埠 16379 則由 Reds 叢集匯流排使用。

  • Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes 引擎OKE) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

  • Autonomous Transaction Processing

    Oracle Autonomous Transaction Processing 是一種自主驅動、自主防護、自主修復的資料庫服務,已針對交易處理工作負載進行最佳化。您不需要設定或管理任何硬體,也不需要安裝任何軟體。Oracle Cloud Infrastructure 可處理資料庫的建立、備份、修補、升級和調校。

  • 應用程式效能監督

    Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) 是以平台即服務 (PaaS) 為基礎的解決方案,可讓您深入瞭解從一般使用者到應用程式日誌的應用軟體效能。此服務整合了使用者體驗資訊、應用程式指標和日誌資料分析。

    • APM 網域

      APM 網域是一個 Oracle Cloud Infrastructure (OCI) 資源類型,其中包含 APM 監控的系統。

      每個 APM 網域都會建立在標準 OCI 區間中,您可以定義 OCI 存取控制原則,將 APM 網域的存取權授予一組特定的使用者。

    • 資料金鑰

      必須提供資料金鑰,才能確保 APM 接受資料來源收集的監測項目。建立 APM 網域時會產生資料金鑰,並且有兩種類型:公用資料金鑰和私密資料金鑰

    • 資料上傳端點 URL

      資料上傳端點是資料來源傳送觀察的 URL。建立 APM 網域且每個 APM 網域都有其資料上傳端點時,便會產生資料上傳端點。

    • OpenTelemetry 運算子

      OpenTelemetry Operator 是 Kubernetes 運算子,其設計目的是要簡化 Java 代理程式自動插入 Kubernetes Pod 中執行的 JVM。

    • APMJava 代理程式

      APM Java 代理程式會記錄應用程式伺服器的跨度和度量,然後將它們傳送至 APM。

    • APM 瀏覽器代理程式

      APM 瀏覽器代理程式會記錄使用者與網站的互動,並傳送跨度和度量至 APM。

    • 追蹤與跨度

      追蹤指的是要求在指定期間內通過分散式系統的所有元件時的完整流程。跨度包括追蹤內的作業或邏輯工作單位,並且具有名稱、開始時間和持續時間。

建議

您的需求可能與此處所述的架構不同。使用下列建議作為 Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) 的起點。

  • APM 瀏覽器代理程式

    將 APM 瀏覽器代理程式部署至應用程式的 Web 介面,以啟用一般使用者監督功能。追蹤是從瀏覽器上的使用者動作開始。

  • 合成監控

    設定合成監控以監控應用程式使用者介面和 API 端點,以主動偵測可用性和效能問題。您可以建立瀏覽器型或 REST 型監控器,並將其排定在全域位置或租用戶虛擬雲端網路 (VCN) 內定期執行。

注意事項

使用 Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) 時,請考慮下列事項。

  • 資料金鑰

    使用自訂資料金鑰管理傳送至 APM 的資料。除了預設資料關鍵碼之外,您還可以建立自己的資料關鍵碼以供特定用途。如果是大型部署,有許多人使用 APM,請為不同的專案擁有者提供不同的金鑰,讓身為 APM 網域管理員,您可以輕鬆控制哪些資料會進入 APM,哪些資料則否。

    例如,APM 會從放棄的專案接收資料集,而您想要關閉資料收集。不過,因為專案擁有者離開組織,所以很難識別要關閉的專員。您可以刪除專案使用的資料索引鍵,以忽略與該資料索引鍵關聯的資料。

  • Kubernetes 資源

    設定微服務時,請考慮在設定 Kubernetes Pod 資源時使用 StatefulSets 而非部署,以便更有效地追蹤 APM 中的歷史記錄。部署 Pod 會在重新產生 ID 時變更其 ID,使用相同的 ID 索引 (例如 SS_0、SS_1、SS_2) 重新產生 StatefulSets,以簡化使用 APM 追蹤歷史記錄。

  • APM 服務名稱

    佈建 APM Java 代理程式時,您必須指定 APM 中使用的服務名稱。請考慮使用部署 /StatefulSet 名稱作為 APM serviceName ,以在 APM 中進行一致的追蹤。

  • 抽樣

    在大量應用程式中使用抽樣 (例如,每秒 100 萬次交易)。APM 預設會收集所有跨度,讓您追蹤應用程式的所有交易。不過,在大量應用程式的情況下,這可能會產生許多跨度。在此情況下,請考慮明確指定抽樣組態以提高成本效益,並減少追蹤資料量。

部署

部署此參考架構中所述的 APM Java 代理程式時,請參閱下列 Oracle LiveLabs 工作室中的逐步指示。

確認

  • Author: Yutaka Takatsu
  • Contributors: Avi Huber, Robert Lies