antony@notes:~/openshift$ cat "Install-Red-Hat-Openshift-Logging-on-ocp-4.18.md"
Install Red Hat Openshift Logging on ocp 4.18
Install Red Hat Openshift Logging 6.3
1. 先備知識
1.1. Openshift Logging 簡介
OpenShift Container Platform 的 Operator 使用自訂資源 (Custom Resources, CRs) 來管理應用程式及其元件。您可以透過 CR 提供高階的配置與設定。Operator 會根據其邏輯中內建的最佳實踐,將高階指令轉譯為低階操作。自訂資源定義 (Custom Resource Definition, CRD) 則會定義一個 CR,並列出所有供該 Operator 使用者使用的配置。安裝 Operator 時會建立 CRD,以便用來產生 CR。
若要開始使用日誌功能 (logging),您必須安裝下列 Operator:
- Loki Operator:用於管理您的日誌儲存。
- Red Hat OpenShift Logging Operator:用於管理日誌的收集與轉發。
- Cluster Observability Operator (COO):用於管理視覺化。
您可以使用 OpenShift Container Platform 網站主控台或 OpenShift 容器平台命令列介面 (CLI) 來安裝或設定日誌功能。
:::warning 重要提示: 必須在設定 Loki Operator 之後,才能設定 Red Hat OpenShift Logging Operator。 :::
1.2. 先決條件
如果是在離線環境的 openshift,請確定有正確設定 catalogsources CR 和 imagecontentsourcepolicies CR,可透過以下兩個命令檢查
確認
catalogsourcesoc -n openshift-marketplace get catalogsources.operators.coreos.com執行結果:
NAME DISPLAY TYPE PUBLISHER AGE cs-redhat-operator-index grpc 2d17h確認對應的 operator pod 正常運作
oc -n openshift-marketplace get pods -l "olm.catalogSource=cs-redhat-operator-index"執行結果:
NAME READY STATUS RESTARTS AGE cs-redhat-operator-index-wm57c 1/1 Running 0 2d17h確認
imagecontentsourcepolicies有定義openshift-loggingoperator 的 image 要去哪一個本地的 image registry 下載oc -n openshift-marketplace get imagecontentsourcepolicies.operator.openshift.io operator-0 -o json \ | jq -r '"SOURCE\tMIRRORS", (.spec.repositoryDigestMirrors[] | "\(.source)\t\(.mirrors | join(", "))")' \ | column -ts $'\t'執行結果:
SOURCE MIRRORS registry.redhat.io/cluster-observability-operator quay.kubeantony.com:8443/cluster-observability-operator registry.redhat.io/rhosdt quay.kubeantony.com:8443/rhosdt registry.redhat.io/rhel8 quay.kubeantony.com:8443/rhel8 registry.redhat.io/openshift-logging quay.kubeantony.com:8443/openshift-logging registry.redhat.io/openshift4 quay.kubeantony.com:8443/openshift4 registry.redhat.io/quay quay.kubeantony.com:8443/quay查詢叢集中,所有可從 OperatorHub 安裝的 Operator 套件,並檢查是否有
cluster-loggingoc get packagemanifests.packages.operators.coreos.com執行結果:
NAME CATALOG AGE elasticsearch-operator 2d22h opentelemetry-product 2d22h loki-operator 2d22h cluster-logging 2d22h quay-operator 2d22h cluster-observability-operator 2d22h
2. 使用 CLI 安裝 Loki Operator
2.1. 先決條件
- 您擁有管理員權限。
- 您已安裝 OpenShift 命令列介面 (oc)。
- 您能夠存取一個受支援的物件儲存空間。例如:AWS S3、Google Cloud Storage、Azure、Swift、Minio 或 OpenShift Data Foundation。
- 預先準備好要安裝的 loki size 對應的硬體資源
2.2. 開始安裝
建立工作目錄,並切換當前目錄至新建立的工作目錄
mkdir -p ~/wulin/logging/loki; cd ~/wulin/logging/loki幫 Loki Operator 建立
Namespacecat <<EOF > loki-operator-ns.yaml apiVersion: v1 kind: Namespace metadata: name: openshift-operators-redhat labels: openshift.io/cluster-monitoring: "true" EOF建立
Namespace:oc apply -f loki-operator-ns.yaml建立
OperatorGroup物件cat <<EOF > loki-operator-group.yaml apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: loki-operator namespace: openshift-operators-redhat spec: upgradeStrategy: Default EOF必須指定
openshift-operators-redhat作為 namespace。建立
OperatorGroupoc apply -f loki-operator-group.yaml幫 Loki Operator 建立
Subscriptioncat <<EOF > loki-operator-subscription.yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: loki-operator namespace: openshift-operators-redhat spec: channel: stable-6.3 installPlanApproval: Manual name: loki-operator source: redhat-operators sourceNamespace: openshift-marketplace EOF- 您必須將
openshift-operators-redhat指定為 namespace。 - 將
stable-6.3指定為頻道。 - 如果訂閱中的核准策略設定為
Automatic(自動),那麼一旦所選的頻道中有新的 Operator 版本可用,更新程序就會立即啟動。如果核准策略設定為Manual(手動),您就必須手動核准待處理的更新。 - 將
redhat-operators指定為其值。如果您的 OpenShift Container Platform 叢集安裝在受限網路 (也稱為離線叢集) 中,請指定您在設定 Operator Lifecycle Manager (OLM) 時所建立的CatalogSource物件名稱。
- 您必須將
建立
Subscriptionoc apply -f loki-operator-subscription.yaml檢查是否有待處理的 Operator 安裝更新計畫
oc -n openshift-operators-redhat get installplans執行結果:
NAME CSV APPROVAL APPROVED install-w2988 loki-operator.v6.3.0 Manual false如果沒看到
installplans,去看openshift-marketplacenamespace 底下應該會有一個jobpod 噴錯手動核准待處理的安裝計畫
oc patch installplan $(oc -n openshift-operators-redhat get installplans.operators.coreos.com -o name | cut -d "/" -f 2) \ -n openshift-operators-redhat \ --type merge \ --patch '{"spec":{"approved":true}}'查詢 Operator 目前的版本狀態
oc -n openshift-operators-redhat get csv正確執行結果:
NAME DISPLAY VERSION REPLACES PHASE loki-operator.v6.3.0 Loki Operator 6.3.0 Succeeded確認 operator pod 狀態
oc -n openshift-operators-redhat get pods執行結果:
NAME READY STATUS RESTARTS AGE loki-operator-controller-manager-5bff6f97d-7wtnz 2/2 Running 0 16m幫 LokiStack 建
namespacecat <<EOF > lokistack-ns.yaml apiVersion: v1 kind: Namespace metadata: name: openshift-logging labels: openshift.io/cluster-monitoring: "true" EOFopenshift-loggingnamespace 專門用於所有 logging 的 workload。openshift.io/cluster-monitoring: "true"一個字串值,用於指定標籤,以確保 cluster monitoring 能夠抓取openshift-loggingnamespace。
建立 namespace
oc apply -f lokistack-ns.yaml建立一個 Secret,其中包含用以存取 object storage 空間的憑證。例如,建立一個用以存取 Minio s3 的 Secret。
cat <<EOF > lokistack-secret.yaml apiVersion: v1 kind: Secret metadata: name: logging-loki-s3 namespace: openshift-logging stringData: access_key_id: admin access_key_secret: admin123 bucketnames: test endpoint: https://antony-minio.example.com region: us-west-2 EOF建立 Secret
oc apply -f lokistack-secret.yaml建立
LokiStackCRcat <<EOF > lokistack-cr.yaml apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: logging-loki namespace: openshift-logging spec: size: 1x.extra-small storage: schemas: - version: v13 effectiveDate: "2025-09-11" secret: name: logging-loki-s3 type: s3 storageClassName: managed-nfs-storage tenants: mode: openshift-logging EOFmetadata.name: 請使用名稱logging-loki。metadata.namespace: 必須將openshift-logging指定為 namespace。spec.size: 指定部署規模。Loki 生產環境執行個體支援的規模選項為1x.extra-small、1x.small或1x.medium。此外,自 logging 6.1 版起也支援1x.pico。spec.storage.schemas.effectiveDate: 對於新的安裝,此日期應設定為相當於「昨天」的日期,因為這將會是 schema (結構綱要) 生效的起始日期。spec.storage.secret.name: 指定您的日誌儲存 Secret 名稱。spec.storage.secret.type: 指定對應的儲存類型。spec.storageClassName: 指定一個用於暫存空間的儲存類別 (Storage Class) 名稱。為獲得最佳效能,請指定一個會分配 block storage 的儲存類別。可以使用oc get storageclasses指令來列出叢集所有可用的儲存類別。openshift-logging模式是預設的租用模式 (tenancy mode),此模式會為稽核 (audit)、基礎架構 (infrastructure) 和應用程式 (application) 等日誌類型建立不同的租戶 (tenant)。這使得個別使用者及使用者群組對不同日誌串流 (log streams) 的存取控制成為可能。
建立
LokiStackCRoc apply -f lokistack-cr.yaml切換 current project
oc project openshift-logging確認
LokiStackpod 狀態oc get pods正確執行結果:
NAME READY STATUS RESTARTS AGE logging-loki-compactor-0 1/1 Running 0 3m37s logging-loki-distributor-6bcbc8bc5b-bwjlj 1/1 Running 0 3m38s logging-loki-distributor-6bcbc8bc5b-bznfk 1/1 Running 0 3m38s logging-loki-gateway-6f9657d5f7-5mrfd 2/2 Running 0 3m37s logging-loki-gateway-6f9657d5f7-v4h75 2/2 Running 1 (3m31s ago) 3m37s logging-loki-index-gateway-0 1/1 Running 0 3m37s logging-loki-index-gateway-1 1/1 Running 0 3m16s logging-loki-ingester-0 1/1 Running 0 3m38s logging-loki-ingester-1 1/1 Running 0 2m35s logging-loki-querier-75c5755c58-c582z 1/1 Running 0 3m38s logging-loki-querier-75c5755c58-wtfv7 1/1 Running 0 3m38s logging-loki-query-frontend-7894d6df5c-g7vpj 1/1 Running 0 3m37s logging-loki-query-frontend-7894d6df5c-hlt4v 1/1 Running 0 3m37s
3. 使用 CLI 安裝 Red Hat OpenShift Logging Operator 6.3
請使用 OpenShift CLI (oc),將 Red Hat OpenShift Logging Operator 安裝至 OpenShift Container Platform 叢集,以收集日誌並將其轉發至日誌儲存區。
3.1. 先決條件
- 擁有管理員權限。
- 已安裝 OpenShift CLI (oc)。
- 已安裝並設定 Loki Operator。
- 已建立
openshift-logging命名空間。
3.2. 開始安裝
建立工作目錄,並切換當前目錄至新建立的工作目錄
mkdir -p ~/wulin/logging/openshift-logging; cd ~/wulin/logging/openshift-logging建立
OperatorGroupYAML 檔cat <<EOF > logging-operator-group.yaml apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: cluster-logging namespace: openshift-logging spec: upgradeStrategy: Default EOF建立
OperatorGroupoc apply -f logging-operator-group.yaml為 Red Hat OpenShift Logging Operator 建立
SubscriptionYAML 檔cat <<EOF > logging-operator-subscription.yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: cluster-logging namespace: openshift-logging spec: channel: stable-6.3 installPlanApproval: Automatic name: cluster-logging source: cs-redhat-operator-index sourceNamespace: openshift-marketplace EOF建立
Subscriptionoc apply -f logging-operator-subscription.yaml確認 operator pod 已啟動
oc get pods執行結果:
NAME READY STATUS RESTARTS AGE cluster-logging-operator-86bf5bc9b6-fxf28 1/1 Running 0 17h
3. 使用 CLI 安裝 logging UI plugin
3.1. 先決條件
- 您擁有管理員權限。
- 您已安裝 OpenShift CLI (oc)。
- 您已安裝並設定 Loki Operator。
3.2. 開始安裝 Cluster Observability Operator
Cluster Observability Operator 是 OpenShift Container Platform 的一個選用元件,專為建立和管理高度可自訂的監控堆疊而設計。它使叢集管理員能夠廣泛地自動化設定和管理監控需求,與預設的 OpenShift Container Platform 監控系統相比,它能為每個命名空間 (namespace) 提供更客製化且詳細的視圖。
COO 會部署以下監控元件:
- Prometheus - 一個高可用性的 Prometheus 實例,能夠使用遠端寫入 (remote write) 將指標 (metrics) 傳送到外部端點。
- Thanos Querier (選用) - 能夠從一個中央位置查詢多個 Prometheus 實例。
- Alertmanager (選用) - 為不同服務提供警報設定功能。
- UI plugins (選用) - 透過用於監控、日誌記錄、分散式追蹤和疑難排解的外掛程式來增強可觀測性。
- Korrel8r (選用) - 提供可觀測性訊號的關聯性分析,由開源的 Korrel8r 專案提供支援。
- Incident detection (選用) - 將相關的警報分組為事件,以協助您識別警報爆發的根本原因。
建立工作目錄,並切換當前目錄至新建立的工作目錄
mkdir -p ~/wulin/logging/coo; cd ~/wulin/logging/coo建立
OperatorGroupYAML 檔cat <<EOF > coo-operator-group.yaml apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-cluster-observability-operator namespace: openshift-cluster-observability-operator spec: upgradeStrategy: Default EOF建立
OperatorGroupoc apply -f coo-operator-group.yaml為 Cluster Observability Operator 建立
SubscriptionYAML 檔cat <<EOF > coo-subscription.yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: cluster-observability-operator namespace: openshift-cluster-observability-operator spec: channel: stable installPlanApproval: Manual name: cluster-observability-operator source: cs-redhat-operator-index sourceNamespace: openshift-marketplace startingCSV: cluster-observability-operator.v1.2.2 EOF建立
Subscriptionoc apply -f coo-subscription.yaml檢查是否有待處理的 Operator 安裝更新計畫
oc -n openshift-cluster-observability-operator get installplans.operators.coreos.com執行結果:
NAME CSV APPROVAL APPROVED install-cxddp cluster-observability-operator.v1.2.2 Manual false如果沒看到
installplans,去看openshift-marketplacenamespace 底下應該會有一個jobpod 噴錯手動核准待處理的安裝計畫
oc patch installplan $(oc -n openshift-cluster-observability-operator get installplans.operators.coreos.com -o name | cut -d "/" -f 2) \ -n openshift-cluster-observability-operator \ --type merge \ --patch '{"spec":{"approved":true}}'查詢 Operator 目前的版本狀態
oc -n openshift-cluster-observability-operator get csv正確執行結果:
NAME DISPLAY VERSION REPLACES PHASE cluster-logging.v6.3.0 Red Hat OpenShift Logging 6.3.0 Succeeded cluster-observability-operator.v1.2.2 Cluster Observability Operator 1.2.2 cluster-observability-operator.v1.2.1 Succeeded loki-operator.v6.3.0 Loki Operator 6.3.0 Succeeded確認 operator pod 狀態
oc -n openshift-cluster-observability-operator get pods執行結果:
NAME READY STATUS RESTARTS AGE obo-prometheus-operator-54d44bf564-czp56 1/1 Running 0 19s obo-prometheus-operator-admission-webhook-86c9c76864-qg9hb 1/1 Running 0 18s obo-prometheus-operator-admission-webhook-86c9c76864-xbpcz 1/1 Running 0 19s observability-operator-77c8cf97cb-6qqqq 1/1 Running 0 18s perses-operator-bfd8678b7-czxlk 1/1 Running 0 17s建立
UIPluginCRcat <<EOF > coo-ui-plugin.yaml apiVersion: observability.openshift.io/v1alpha1 kind: UIPlugin metadata: name: logging spec: type: Logging logging: lokiStack: name: logging-loki logsLimit: 50 timeout: 30s schema: otel EOF建立
UIPluginoc apply -f coo-ui-plugin.yaml驗證:
- 前往 Red Hat OpenShift Logging 網站主控台,若有彈出式訊息提示,請重新整理頁面。
- 導覽至 Observe > Logs 面板,您可以在此執行 LogQL 查詢。您也可以從特定 Pod 的 Aggregated Logs 頁籤中,查詢該 Pod 的個別日誌。

