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

k8s-oke-monitoring.png 圖解描述
架構具有下列元件:
- 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 可用性
- FluentD 收集器
- 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 分鐘一次) | 自訂應用程式日誌 |
---|---|---|---|---|
|
|
|
|
|
附註:
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 DaemonSets
和 ReplicaSets
的 Kubernetes 清單和 helm 圖表。
- 移至 GitHub 。
- 複製或下載儲存區域至您的本機電腦。
- 遵循
README
文件中的指示。