AliyunPipelineConfig是Log Service自訂的一類CRD,您可以通過配置YAML檔案建立對應的CR,從而管理iLogtail採集配置。本文主要介紹通過AliyunPipelineConfig管理iLogtail採集配置的操作步驟。
前提條件
已安裝Logtail組件,並且Logtail組件版本號碼不低於0.5.1。具體操作,請參見安裝Logtail組件(阿里雲Kubernetes叢集)和安裝Logtail組件(自建Kubernetes叢集)。
目標容器持續產生日誌。
重要Logtail只採集增量日誌。如果下發iLogtail配置後,記錄檔無更新,則iLogtail不會採集該檔案中的日誌。更多資訊,請參見讀取日誌。
配置步驟
alibaba-log-controller定期會同步AliyunPipelineConfig所定義的iLogtail採集配置到服務端,所以對於通過CR建立的iLogtail採集配置,其修改只能通過更新相應的CR來實現,在Log Service控制台配置的Logtail採集配置會被CR覆蓋,建議只使用一種方法管理Logtail採集配置。
建立iLogtail採集配置
您需要建立AliyunPipelineConfig
的CR,alibaba-log-controller
會根據CR自動建立iLogtail採集配置。建立完成後,系統自動應用該iLogtail採集配置。
建立步驟:
執行如下命令建立
cube.yaml
檔案,請根據實際情況替換檔案名稱。
vim cube.yaml
在YAML檔案中輸入如下指令碼,並根據實際情況設定其中的參數。CR結構的詳細參數請參見CR參數說明。
apiVersion: telemetry.alibabacloud.com/v1alpha1 # 使用預設值,無需修改。
kind: ClusterAliyunPipelineConfig # 使用預設值,無需修改。
metadata:
name: test-config # 設定資源名,在當前Kubernetes叢集內唯一。
spec:
project: # 設定目標Project名稱。
name: k8s-your-project
config: # 設定iLogtail採集配置。
inputs: # 設定iLogtail採集配置裡的輸入外掛程式
...
flushers: # 設定iLogtail採集配置裡的輸出外掛程式
...
執行如下命令建立
AliyunPipelineConfig
的CR,alibaba-log-controller
會根據該CR自動建立iLogtail採集配置,從而使iLogtail採集配置生效。iLogtail採集配置生效後,Logtail開始採集資料,並發送到Log Service中。cube.yaml
為檔案名稱,請根據實際情況替換。
kubectl apply -f cube.yaml
查看iLogtail採集配置
查看當前Kubernetes叢集中所有由
AliyunPipelineConfig
建立的iLogtail採集配置。您可以執行以下命令,查看所有由
AliyunPipelineConfig
建立的iLogtail採集配置。kubectl get clusteraliyunpipelineconfigs
查看由
AliyunPipelineConfig
建立的iLogtail採集配置的詳細資料和狀態。您可以執行以下命令進行查看。其中,
<config_name>
為AliyunPipelineConfig
的名稱,請根據實際情況替換。kubectl get clusteraliyunpipelineconfigs <config_name> -o yaml
返回結果參考如下所示,可以根據status查看iLogtail採集配置的應用情況。
apiVersion: telemetry.alibabacloud.com/v1alpha1 kind: ClusterAliyunPipelineConfig metadata: creationTimestamp: null finalizers: - finalizer.pipeline.alibabacloud.com name: example-config # 預期的配置 spec: config: flushers: - Endpoint: cn-hangzhou-intranet.log.aliyuncs.com Logstore: example-config-logstore Region: cn-hangzhou TelemetryType: logs Type: flusher_sls inputs: - FilePaths: - /var/log/*.log Type: input_file processors: - SourceKey: content Type: processor_parse_json_native logstores: - name: example-config-logstore project: name: k8s-log-clusterid # 應用狀態 status: # CR 是否應用成功 success: true # CR 當前的狀態資訊 message: success # 當前 status 的更新時間 lastUpdateTime: "2024-06-13T12:02:19.133422+08:00" # 上次成功應用的配置資訊,該配置資訊為填充預設值後實際生效的配置 lastAppliedConfig: # 上次成功應用的時間 appliedTime: "2024-06-13T12:02:19.133422+08:00" # 上次成功應用的配置詳情 config: configTags: sls.crd.cluster: clusterid sls.crd.kind: ClusterAliyunPipelineConfig sls.logtail.channel: CRD flushers: - Endpoint: cn-hangzhou-intranet.log.aliyuncs.com Logstore: example-config-logstore Region: cn-hangzhou TelemetryType: logs Type: flusher_sls global: null inputs: - FilePaths: - /var/log/*.log Type: input_file name: example-config processors: - SourceKey: content Type: processor_parse_json_native logstores: - appendMeta: true autoSplit: true encryptConf: {} maxSplitShard: 64 name: example-config-logstore shardCount: 2 ttl: 30 machineGroups: - name: k8s-group-clusterid project: description: k8s log project, created by alibaba cloud log controller endpoint: cn-hangzhou.log.aliyuncs.com name: k8s-log-clusterid
更新iLogtail採集配置
您只需要修改已有的AliyunPipelineConfig
的YAML檔案並重新應用,就可以更新iLogtail採集配置。
編輯已有的
AliyunPipelineConfig
檔案。cube.yaml
為檔案名稱,請根據實際情況替換。
vim cube.yaml
在YAML檔案中修改配置參數。
執行如下命令使iLogtail採集配置生效。
cube.yaml
為檔案名稱,請根據實際情況替換。
kubectl apply -f cube.yaml
刪除iLogtail採集配置
如果您要刪除iLogtail採集配置,只需刪除對應的CR即可。其中,<config_name>
為AliyunPipelineConfig
的名稱,請根據實際情況替換。
kubectl delete clusteraliyunpipelineconfigs <config_name>
在iLogtail採集配置成功刪除後,CR會釋放。
CR參數說明
ApiVersion
固定為
telemetry.alibabacloud.com/v1alpha1
。Kind
固定為
ClusterAliyunPipelineConfig
。Metadata
參數
資料類型
是否必填
說明
name
string
是
CR的唯一標識,同時也是建立出的iLogtail採集配置的名字。
注意:
該參數會作為iLogtail採集配置名稱使用,在所屬Project內唯一,且建立成功後無法修改。需要滿足以下條件:
只能包括小寫字母、數字、-和_。
必須以小寫字母或數字開頭和結尾。
長度必須在2~128字元之間。
Spec
參數
資料類型
是否必填
說明
project
是
目標Project的資訊。
說明project欄位在CR建立後不允許更改,如需切換project請建立新的CR。
config
是
定義iLogtail 採集配置詳情。
logstores
否
需要建立的Logstore列表,支援建立多個Logstore。
說明name以外的所有參數僅在建立logstore時生效。
該列表並不指定iLogtail採集配置的發送目標,只會按需建立Logstore。iLogtail採集配置的發送目標,由config中的flusher外掛程式決定。如果 iLogtail 採集配置中指定的目標 Logstore 已存在,此處可不填寫。
該列表只可以在logstores列表中新增/刪除logstore定義,不支援修改已定義的Logstore。
machineGroups
否
需要與iLogtail採集配置關聯的機器組列表。安裝
logtail-ds
組件時,Log Service會自動建立名為k8s-group-${your_k8s_cluster_id}
的機器組,預設值為僅包含該機器組的列表。說明alibaba-log-controller會保證iLogtail採集配置關聯的機器組嚴格等於machineGroups指定的機器組,不在machineGroups中的機器組會被解除關聯。
enableUpgradeOverride
bool
否
預設值為false。當叢集中存在AliyunLogConfig定義的採集配置、且與當前的AliyunPipelineConfig指向同一個iLogtail採集配置時,可以:
開啟此開關:alibaba-log-controller會對已有的AliyunLogConfig定義的採集配置進行覆蓋升級。
不開啟此開關:採集配置存在衝突,AliyunPipelineConfig應用失敗。
說明指向同一個iLogtail採集配置的定義:
目標project相同。
AliyunLogConfig中為叢集預設的project或spec.project。AliyunPipelineConfig中為spec.project.name。
目標iLogtail採集配置名相同。
AliyunLogConfig中為spec.logtailConfig.configName。AliyunPipelineConfig中為metadata.Name。
覆蓋升級的定義:
首先,AliyunPipelineConfig生效,並更新iLogtail採集配置。
然後,如果AliyunPipelineConfig成功生效,會刪除叢集內指向同一個iLogtail採集配置的AliyunLogConfig。
最終,覆蓋更新完成。
PipelineProject
說明project欄位在CR建立後不允許更改,如需切換project請建立新的CR。
參數
資料類型
是否必填
說明
name
string
是
目標 Project 的名稱。
說明如果您所指定的Project不存在,Log Service會自動建立。
description
string
否
目標 Project 的描述。
說明該參數僅在建立Project時生效。
endpoint
string
否
目標Project的服務入口。更多資訊,請參見服務入口。預設為當前叢集所在的地區,如果目標 Project 與叢集不在同一地區,需要配置該參數。
說明該參數僅控制採集配置所在的region,iLogtail資料投遞到該region需要另外配置iLogtail的config_server_address、data_server_list,參考Logtail設定檔和記錄檔案。
uid
string
否
目標帳號的uid。預設使用當前叢集所屬帳號。如果需要跨帳號投遞日誌,請配置該參數,並在 alibaba-log-controller 的環境變數中配置
ALICLOUD_LOG_ACCOUNT_INFOS={"<uid>":{"accessKeyID":"<your_access_key_id>","accessKeySecret":"<your_access_key_secret>"}}
。說明該參數僅控制project所屬的帳號,iLogtail資料投遞到該帳號需要另外配置iLogtail的使用者標識,參考配置使用者標識。
PiplineConfig
配置中的各項參數要求與CreateLogtailPipelineConfig介面一致。configName會使用CR的metadata.Name,不可單獨配置。
參數
資料類型
是否必填
說明
sample
string
否
日誌範例。支援多條日誌,總長度不超過1500位元組。
global
object
否
全域配置。詳細資料,請參見請求參數。
inputs
object列表
是
輸入外掛程式列表。詳細資料與外掛程式參數,參見請求參數。
說明目前,只允許配置 1 個輸入外掛程式。
processors
object列表
否
處理外掛程式列表。詳細資料與外掛程式參數,請參見請求參數。
aggregators
object列表
否
彙總外掛程式列表。詳細資料與外掛程式參數,請參見請求參數。
flushers
object列表
是
輸出外掛程式列表。詳細資料與外掛程式參數,請參見請求參數。
說明目前,只允許存在 1 個 flusher_sls 外掛程式。
configTags
map
否
用於標記iLogtail採集配置的自訂標籤。
PipelineLogstore
說明name以外的所有參數僅在建立logstore時生效。
參數
資料類型
是否必填
說明
name
string
是
需要建立的Logstore的名稱。
queryMode
string
否
目標Logstore的類型。更多資訊,請參見Logstore類型。預設值為standard,可選值:
query:查詢型Logstore。
standard:標準型Logstore。
ttl
int
否
目標Logstore的資料存放區的時間(以天為單位)。更多資訊,請參見資料儲存時間。預設值為30,取值範圍為1~3650,如果配置為3650,表示永久儲存。
hotTtl
int
否
目標Logstore的熱資料存放區的時間(以天為單位)。更多資訊,請參見智能儲存分層。預設值為0,需要小於ttl且大於等於 7。
shardCount
int
否
目標Logstore的Shard數量。更多資訊,請參見管理Logstore。預設值為2,取值範圍為1~100。
maxSplitShard
int
否
目標 Logstore 的最大自動分裂Shard數量。更多資訊,請參見自動分裂Shard。預設值為64,取值範圍為1~256。
autoSplit
bool
否
目標Logstore是否開啟自動拆分Shard功能。更多資訊,請參見自動分裂Shard。預設值為true。
telemetryType
string
否
目標 Logstore 的可觀測資料類型。更多資訊,請參見telemetryType。預設值為None,可選值:
None:日誌類型。
Metrics:Metrics 類型。
appendMeta
bool
否
目標Logstore是否開通記錄外網IP功能。更多資訊,請參見記錄外網IP。預設值為true。
enableTracking
bool
否
目標Logstore是否啟用Web Tracking。更多資訊,請參見WebTracking。預設值為false。
encryptConf
object
否
目標Logstore的加密配置資訊。更多資訊,請參見通用資料結構。預設值為空白。
meteringMode
string
否
目標Logstore的計費模式。更多資訊,請參見計費模式。預設值為空白,可選值:
ChargeByFunction:按功能計費
ChargeByDataIngest:按寫入量計費。
說明如果Logstore的queryMode為query,只支援按功能計費。
如果帳號未開通寫入量計費,無法配置為ChargeByDataIngest。
PipelineMachineGroup
參數
資料類型
是否必填
說明
name
string
是
需要與iLogtail採集配置關聯的機器組名。
說明如果機器組不存在,alibaba-log-controller會自動建立同名的標識型機器組,標識與機器組名相同。詳細資料,參見建立使用者自訂標識機器組。該行為僅在建立機器組時生效。