AliyunPipelineConfig是日志服务自定义的一类CRD,您可以通过配置YAML文件创建对应的CR,从而管理iLogtail采集配置。本文主要介绍通过AliyunPipelineConfig管理iLogtail采集配置的操作步骤。
前提条件
已安装iLogtail组件。具体操作,请参见安装Logtail组件(阿里云Kubernetes集群)。
AliyunPipelineConfig需要alibaba-log-controller Deployment的镜像版本号不低于0.5.0。
目标容器持续产生日志。
重要iLogtail只采集增量日志。如果下发iLogtail配置后,日志文件无更新,则iLogtail不会采集该文件中的日志。更多信息,请参见读取日志。
使用限制
因为alibaba-log-controller定期会同步AliyunPipelineConfig所定义的iLogtail采集配置到服务端,所以对于通过CR创建的iLogtail采集配置,其修改只能通过更新相应的CR来实现。直接在日志服务控制台对iLogtail采集配置进行修改不会影响CR本身,并且所有控制台上的更改都将在下一次同步时被CR中的配置覆盖。因此,为保证iLogtail采集配置的一致性,请始终通过CR来对iLogtail采集配置进行管理。
配置步骤
创建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会自动创建同名的标识型机器组,标识与机器组名相同。详细信息,参见创建用户自定义标识机器组。该行为仅在创建机器组时生效。