跳至主要内容

Flows 和 ClusterFlows

有關如何設定 Flows 和 ClusterFlows 的完整詳細資訊,請參閱 Logging operator 文件。

有關如何解決日誌緩衝區的記憶體問題,請參閱 Rancher 與日誌記錄服務的整合:疑難排解。

Flows​

Flow 定義要收集和過濾哪些日誌,以及將日誌發送到哪個輸出。

Flow 是一個命名空間資源,這意味著只會從 Flow 部署所在的命名空間收集日誌。

Flows 可以透過在 Rancher UI 中填寫表單來設定。

有關 Flow 自訂資源的更多詳細資訊,請參閱 FlowSpec。

Matches​

Match 語句用於選擇從哪些容器提取日誌。

您可以指定 match 語句來根據 Kubernetes 標籤、容器和主機名稱選擇或排除日誌。Match 語句會按照定義的順序進行評估,並且只會處理到第一個匹配的選擇或排除規則為止。

Matches 可以透過在 Rancher UI 中填寫 Flow 或 ClusterFlow 表單來設定。

有關使用 match 語句的詳細範例,請參閱官方日誌路由文件。

Filters​

您可以在 Flow 中定義一個或多個過濾器。過濾器可以對日誌執行各種操作,例如新增資料、轉換日誌或從記錄中解析值。Flow 中的過濾器會按照它們在定義中出現的順序應用。

有關 Logging operator 支援的過濾器清單,請參閱官方 Fluentd 過濾器文件。

過濾器需要在 YAML 中設定。

Outputs​

此 Output 將接收來自 Flow 的日誌。由於 Flow 是一個命名空間資源,因此 Output 必須與 Flow 位於同一命名空間中。

在 Rancher UI 中填寫 Flow 或 ClusterFlow 表單時可以參考 Outputs。

ClusterFlows​

ClusterFlows 的 Matches、過濾器和 Outputs 的設定方式與 Flows 相同。主要區別在於 ClusterFlow 的範圍是叢集層級,可以設定跨所有命名空間的日誌收集。

ClusterFlows 可以透過在 Rancher UI 中填寫表單來設定。

在 ClusterFlow 從叢集中的所有命名空間選擇日誌後,來自叢集的日誌將被收集並記錄到選定的 ClusterOutput。

YAML 範例​

以下範例 Flow 轉換來自 default 命名空間的日誌訊息,並將它們發送到 S3 Output:

apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
name: flow-sample
namespace: default
spec:
filters:
- parser:
remove_key_name_field: true
parse:
type: nginx
- tag_normaliser:
format: ${namespace_name}.${pod_name}.${container_name}
localOutputRefs:
- s3-output
match:
- select:
labels:
app: nginx