使用 OCI 日誌記錄分析監控 Kubernetes 日誌資料

Kubernetes 提供強大且極為客製化的平台,可管理自動部署及調整容器化工作負載。對整個環境建立監控和疑難排解系統是一項非常具挑戰性的任務,開發和 IT 團隊可能需要花費寶貴的時間。由於缺乏互補的監控解決方案,以 Kubernetes 為基礎的大量計畫無法起飛,此解決方案就像強大、可自訂、可擴展,且可自動部署。Oracle Cloud Infrastructure Logging Analytics 針對基礎基礎架構、Kubernetes 平台及雲端原生應用系統提供一鍵式端對端 Kubernetes 監控解決方案,藉此縮短此監控缺口。從您的內部部署 Kubernetes 叢集和 Oracle Cloud Infrastructure Kubernetes Engine (也稱為 Kubernetes 引擎確定 ) 將日誌資料傳送至 Oracle Cloud Infrastructure Logging Analytics 以進行深入檢查和分析。

Kubernetes 型環境可分為三個層級,每個層級均由業務需求驅動的眾多持續發展元件組成。

  • 基礎架構層:包含許多元件,包括網路資源、運算執行處理和 Kubernetes 節點主機。
  • Kubernetes 平台層:包含各種 Kubernetes 服務,例如網路、kubelet 服務及 DNS,這些服務可支援 kubernetes 平台。
  • 應用程式層:包含不同的技術、資料庫和應用程式。

架構

此架構顯示如何使用 Oracle Cloud Infrastructure Logging Analytics 監控 Kubernetes 平台和雲端原生應用程式。

下圖是單一 Oracle Cloud Infrastructure (OCI) 區域中 Kubernetes 叢集的範例拓樸。它顯示了基礎架構層,第二個圖表強調了 kubernetes 與應用程式層。

kubernetes-master-worker-nodes.png 的描述如下
kubernetes-master-worker-nodes.png 圖解描述

kubernetes-master-worker-nodes-oracle.zip

下圖說明使用 OCI Logging Analytics 對內部部署 Kubernetes 叢集和 Oracle Cloud Infrastructure Kubernetes Engine (又稱為 Kubernetes EngineOKE) 進行的 Kubernetes 監控。此解決方案將 Kubernetes 叢集的各種日誌集合到 OCI 日誌記錄分析中,並針對收集的日誌提供豐富的分析。您可以修改立即可用的組態來自訂日誌收集。

k8s-oke-monitoring.png 的描述如下
k8s-oke-monitoring.png 圖解描述

k8s-oke-monitoring-oracle.zip

架構具有下列元件:

  • Tenancy

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

  • 地區

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

  • 區間

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

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

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

  • 負載平衡器

    Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動流量分配。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,不會周遊網際網路。

  • 日誌記錄分析

    Oracle Cloud Infrastructure (OCI) Logging Analytics 是完全受管理的 SaaS 區域服務,可在超過 27 個區域使用,針對在內部部署、OCI 或第三方雲端執行的任何 IT 元件提供日誌的收集、索引、強化、查詢、視覺化及警示。

  • 日誌記錄分析來源

    日誌記錄分析來源是一種組態資源,提供剖析、擷取、標註、資料遮罩以及其他強化的規格,以確保能夠正確擷取日誌並編製索引以供分析與監控。此架構為 Kubernetes 服務、應用程式和物件使用超過 30 個預先定義的來源。這些來源會持續增強,以提供更深入的分析功能。

  • Kubernetes 系統 Pod

    Kubernetes 系統 Pod 是小型可部署的運算單元,您可以在 Kubernetes 中建立和管理。Pod 是一或多個容器,內含共用儲存體和網路資源,以及用於執行容器的規則。

  • 使用者 Pod

    在 Kubernetes 叢集上啟動的應用程式。寫入 STDOUT/STDERR 之應用程式 Pod 的所有日誌通常都位於 /var/log/containers/ 下。具有自訂日誌處理程式的應用程式可能會以不同的方式遞送其日誌,但一般而言,節點上可以使用 (透過磁碟區)。

  • 控制平面服務與 Pod

    Kubernetes 平台控制層服務和 Pod。「控制層」可管理 Kubernetes 叢集中的工作節點和 Pod。工作節點會執行容器化應用程式。每個叢集至少都有一個工作節點。工作節點會代管作為應用程式工作負載元件的 Pod。

  • 節點作業系統服務

    在安裝 Kubernetes 的執行處理上執行的 Linux 服務。記錄是收集在作業系統服務上。

  • 日誌和物件收集器 Pod

    日誌和物件收集器 Pod 是由複本集、FluentD 和協助程式集所組成。

    • FluentD 收集器

      FluentD 是一種開放原始碼資料收集器,可在資料來源和後端系統之間提供統一的記錄層。它允許對建置資料處理管線進行統一的資料收集和使用。此架構使用容器化的 FluentD 容器,以 kubernetes 叢集上設定的協助程式集和 replicat 形式執行。它使用日誌記錄分析 fluentd 輸出 Plugin 將日誌上傳至 OCI 日誌記錄分析。

    • 日誌記錄分析 FluentD Plugin

      連線至您租用戶中 OCI 日誌記錄分析服務的 FluentD 輸出 Plugin,以上傳或攝取 FluentD 收集器收集的日誌。

    • Kubernetes 物件

      Kubernetes 物件是 Kubernetes 系統中的永久實體。Kubernetes 使用這些實體來代表叢集的狀態。在此架構中,下列 kubernetes 物件狀態會收集為歷史分析和疑難排解的日誌:

    • Kubernetes 協助程式集

      Kubernetes DaemonSet 是一種在 Kubernetes 上執行的工作負載類型,可確保所有 (或部分) 節點都執行 Pod 的複本。當節點新增至叢集時,會新增 Pod。隨著節點從叢集中移除,系統會收集這些 Pod 的資源回收。

    • Kubernetes 複本集

      Kubernetes ReplicaSet 是一種在 Kubernetes 上執行的工作負載類型。它可維持在任一指定時間執行的一組穩定複製 Pod。因此,通常會用來保證指定數目的相同 Pod 可用性

  • Kubernetes 引擎

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

  • 服務連線器

    Service Connector Hub 是雲端訊息匯流排平台。您可以使用它在 Oracle Cloud Infrastructure 中的服務之間移動資料。資料是使用服務連線器移動。服務連接器指定來源服務,其中包含要移動的資料、要對資料執行的任務,以及指定任務完成時必須傳遞資料的目標服務。此架構佈建了一個服務連線器,用於收集網路和負載平衡器日誌。

  • OCI 服務

    Oracle Cloud Infrastructure (OCI) 服務是雲端服務的平台,可讓您在高可用性且一致的高效能環境中建置和執行各種應用系統。

  • 服務與稽核日誌

    服務和稽核日誌是在 OCI 日誌記錄服務中擷取。OCI 日誌記錄是一種可高度擴展且完全受管理的服務,可透過服務連線器存取 VCN 和負載平衡器服務日誌。

預設會收集 Kubernetes 系統服務日誌和 Kubernetes 物件資料。

Oracle Cloud Infrastructure Kubernetes Engine 內建服務,其中每個服務都有不同的職責,而且它們會在叢集中的一或多個節點上以部署或 DaemonSets 身分執行。

Kubernetes 系統服務 Linux 系統服務 Kubernetes 控制層 Kubernetes 物件 (預設值:每 15 分鐘一次) 自訂應用程式日誌
  • Kube Proxy
  • Kube Flannel
  • Kubelet
  • CoreDNS
  • CSI Node Driver
  • DNS Autoscaler
  • Cluster Autoscaler
  • Proxymux Client
  • Syslog
  • 安全日誌
  • Cron 日誌
  • 郵件日誌
  • 稽核日誌
  • Ksplice Uptrack 日誌
  • Yum 日誌
  • Kube API Server
  • Kube Scheduler
  • Kube Controller Manager
  • Cloud Controller Manager
  • etcd
  • Nodes
  • Namespaces
  • Pods
  • DaemonSets
  • Deployments
  • ReplicaSets
  • Events
  • 系統會收集執行叢集的所有自訂應用程式日誌。請參閱「建議」以自訂此行為。

附註:

Kubernetes 控制平面日誌不包含在立即可用的集合中,因為 OCI Kubernetes 引擎 (也稱為 OKE) 不會公開這些日誌。您可以從非 OKE Kubernetes 叢集啟用控制層日誌。

建議

使用下列建議作為起點。您的需求可能與此處所述的架構不同。

  • 日誌群組

    定義多個日誌群組,以提供不同小組的寫入存取權限,並避免共用機密資料。日誌群組可以 Oracle E-Business Suite、資料庫、OCI 基礎架構、主機日誌為基礎。

  • 費用管理

    Oracle Cloud Infrastructure (OCI) 日誌記錄分析服務會從作用中和封存儲存中的資料量收費。為了排除日常問題,並獲得異常偵測、模式偵測及其他 ML 功能的優點,建議您使用 90 天的作用中儲存期間,並將 90 天以上的日誌移至封存儲存。儲存存檔的日誌可以視需要快速恢復。

  • FluentD 多重工作者

    在多工作者模式中設定 FluentD 以進行時間敏感日誌。

  • 自訂應用程式日誌

    此解決方案會自動擷取在 Kubernetes 叢集中執行的應用程式所產生的所有日誌。依照預設,這些日誌會對應至 Kubernetes Generic Container Logs 日誌來源。應在 Oracle Cloud Infrastructure Logging Analytics 中建立應用程式日誌特定剖析器、來源和強化,以擷取必要欄位並將問題標籤附加至日誌。

  • 認證

    此架構支援執行處理主體和 Oracle Cloud Infrastructure config 檔案式認證。建議對 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 進行執行處理主體式認證。

注意事項

建置此參照架構時,請考量下列各點。

  • 效能

    查詢效能是以時間範圍和作業數目 (例如篩選、分組依據等等) 為基礎。為了提升查詢效能,建議在攝取時使用特定標籤和欄位強化日誌。這是持續改善 IT 作業的一部分。

  • 以安全與角色為基礎的存取控制 (RBAC)

    自訂日誌來源定義以篩選任何 PII 資料並啟用地理位置強化。

  • 使用狀態

    Oracle Cloud Infrastructure Logging Analytics 是完全受管理的高度可用 SaaS 服務。

部署

GitHub 中提供用於部署 Oracle Cloud Infrastructure Logging Analytics DaemonSetsReplicaSets 的 Kubernetes 清單和 helm 圖表。

  1. 移至 GitHub
  2. 複製或下載儲存區域至您的本機電腦。
  3. 遵循 README 文件中的指示。

致謝

作者: Kumar Varun

貢獻者: Zubair Ansari、Kiran Palukuri、Santhosh Vuda