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会自动创建同名的标识型机器组,标识与机器组名相同。详细信息,参见创建用户自定义标识机器组。该行为仅在创建机器组时生效。