AliyunPipelineConfig是日志服務自定義的一類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來實現,在日志服務控制臺配置的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開始采集數據,并發送到日志服務中。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
組件時,日志服務會自動創建名為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不存在,日志服務會自動創建。
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會自動創建同名的標識型機器組,標識與機器組名相同。詳細信息,參見創建用戶自定義標識機器組。該行為僅在創建機器組時生效。