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