當您使用ClusterAliyunPipelineConfig建立日誌採集配置時,需要通過一個結構化的YAML檔案定義採集規則。本文介紹該YAML檔案的整體結構及各欄位的含義。
CRD建立的採集配置內容請以CR為準,禁止在控制台修改,若在控制台進行修改,改動內容會被CR覆蓋,可能導致資料格式異常或丟失。
工作原理
-
建立CR資源:使用者通過 kubectl 提交
ClusterAliyunPipelineConfigYAML 檔案,定義採集規則。 -
控制器監聽變化:loongcollector-operator 持續監聽叢集中CR資源的變更。
-
同步配置:當檢測到 CR 變化時,operator 將其轉換為具體配置,並提交到指定Project。
-
採集器拉取最新配置:loongcollector-ds定時向Log Service發送心跳擷取配置更新,拉取最新的採集配置並熱載入。
-
開始採集與上報:loongcollector-ds 根據最新配置採集日誌,並通過配置的存取點發送到 SLS。
基礎欄位
定義API版本與資源類型,所有配置都必須以此開頭:
apiVersion: telemetry.alibabacloud.com/v1alpha1
kind: ClusterAliyunPipelineConfig
結構樣本
apiVersion: telemetry.alibabacloud.com/v1alpha1 # 使用預設值,無需修改。
kind: ClusterAliyunPipelineConfig # 使用預設值,無需修改。
metadata:
name: test-config # 設定資源名,在當前Kubernetes叢集內唯一。
spec:
project: # 設定目標Project名稱。
name: k8s-your-project
config: # 設定Logtail採集配置。
inputs: # 設定Logtail採集配置裡的輸入外掛程式
...
flushers: # 設定Logtail採集配置裡的輸出外掛程式
...核心參數說明
metadata.name
採集配置名稱,必填,在Project內唯一,建立後不可修改。
|
命名規則:
|
樣本:
|
spec.projecct
目標Project資訊。
project欄位在CR建立後不允許更改,如需切換project請建立新的CR。
|
參數 |
資料類型 |
是否必填 |
說明 |
|
name |
string |
是 |
目標 Project 的名稱,若不存在會自動建立。 |
|
description |
string |
否 |
Project 的描述(僅在建立時生效)。 |
|
endpoint |
string |
否 |
Project所在地區的服務入口,預設值為叢集所在的地區。
|
|
uid |
string |
否 |
目標Project所屬的阿里雲主帳號的uid。預設值為當前叢集所屬的主帳號uid。
|
spec.config
採集配置主體,定義具體的輸入、處理、輸出外掛程式。
|
子欄位 |
類型 |
是否必填 |
說明 |
|
|
string |
否 |
日誌範例,支援多條日誌,總長度不超過1500位元組。 |
|
|
object |
否 |
全域配置。 |
|
|
object列表 |
是 |
輸入外掛程式列表,目前只允許配置 1 個輸入外掛程式。 |
|
|
object列表 |
否 |
處理外掛程式列表: |
|
|
object列表 |
是 |
輸出外掛程式列表,目前只允許存在 1 個 |
spec.LogStores
可選配置,用於聲明需要建立的LogStore,其作用如下:
-
僅在建立時生效:所有參數(除
name外)都只在 LogStore 首次建立時有效。如果 LogStore 已存在,這些配置將被忽略,不會影響已有 LogStore 的屬性。 -
不決定資料發送目標:此列表不控制日誌發送到哪個 LogStore。真正的發送目標由
config.flushers中的輸出外掛程式(如flusher_sls)決定。 -
可選配置:如果目標 LogStore 已經存在,可以不用在此處定義。
-
僅支援增刪,不支援修改:可以向列表中添加新的 LogStore 或刪除某項,但無法通過更新此配置來修改已建立的 LogStore 屬性(如 TTL、Shard 數量等)。如需修改,請通過控制台或 API 操作。
|
參數 |
資料類型 |
是否必填 |
說明 |
|
name |
string |
是 |
需要建立的LogStore名稱。 |
|
queryMode |
string |
否 |
LogStore規格對比。預設值為
|
|
ttl |
int |
否 |
資料保留天數(1~3650)預設30,3650表示永久。 |
|
hotTtl |
int |
否 |
熱資料存放區時間(以天為單位)。預設0,需要小於ttl且大於等於 7。 |
|
infrequentAccessTTL |
int |
否 |
目標LogStore的低頻儲存時間(以天為單位)。預設值為0,需要hotTtl存在、小於ttl且大於等於30,如果hotTtl+infrequentAccessTTL不等於ttl,還需要 |
|
shardCount |
int |
否 |
Shard數量。預設值為2,取值範圍為1~100。 |
|
maxSplitShard |
int |
否 |
最大自動分裂Shard數量。預設值為64,取值範圍為1~256。 |
|
autoSplit |
bool |
否 |
是否開啟自動分裂Shard。預設值為true。 |
|
telemetryType |
string |
否 |
可觀測資料類型。預設值為None,可選值:
|
|
appendMeta |
bool |
否 |
是否記錄外網IP地址和日誌接收時間。預設值為true。
|
|
enableTracking |
bool |
否 |
是否啟用WebTracking功能。預設值為false。 |
|
encryptConf |
object |
否 |
加密配置資料結構,包含參數 |
|
meteringMode |
string |
否 |
計費模式。更多資訊,請參見管理LogStore。預設值為空白,可選值:
說明
如果LogStore的queryMode為query,只支援按功能計費。 如果帳號未開通寫入量計費,無法配置為ChargeByDataIngest。 |
|
index |
object |
否 |
指定索引(僅限LogStore建立時生效),格式參考通用資料格式 index。該參數需要loongcollector-operator組件版本號碼大於等於1.0.6有效。 |
spec.machineGroups
指定哪些機器組可以應用此採集配置。
-
預設行為:安裝LoongCollector時,系統會自動建立的名為
k8s-group-${clusterId}的機器組。若未顯式設定machineGroups,將預設關聯該機器組。 -
同步機制:
loongcollector-operator會確保採集配置所關聯的機器組嚴格等於machineGroups中定義的列表。任何不在該列表中的機器組都會被自動解除關聯。 -
自動建立支援:如果指定的機器組不存在,系統會自動建立同名的標識型機器組,並將其與當前採集配置綁定。
|
參數 |
資料類型 |
是否必填 |
說明 |
|
name |
string |
否 |
要關聯的機器組名稱。 |
spec.enableUpgradeOverride
可選,是否允許覆蓋舊配置。用於解決新舊版採集配置之間的衝突問題,預設為false。
-
true:loongcollector-operator會對已有的AliyunLogConfig定義的採集配置進行覆蓋升級。 -
false:採集配置存在衝突,AliyunPipelineConfig應用失敗。
使用情境:當叢集中存在AliyunLogConfig定義的採集配置、且與當前的AliyunPipelineConfig指向同一個採集配置時,就會發生衝突。
同一個採集配置的定義:
-
Project 相同
-
AliyunLogConfig:使用叢集預設 Project 或spec.project -
AliyunPipelineConfig:使用spec.project.name
-
-
採集配置名稱相同
-
AliyunLogConfig:spec.logtailConfig.configName -
AliyunPipelineConfig:metadata.name
-
覆蓋升級過程:
-
新配置生效
ClusterAliyunPipelineConfig被應用,更新採集配置。 -
舊配置清理
如果更新成功,控制器會自動刪除叢集中對應的AliyunLogConfig資源。 -
完成遷移
完成從舊方式到新方式的平滑過渡。