【推荐】使用AliyunPipelineConfig管理采集配置

更新时间:2024-12-20 03:14:29

AliyunPipelineConfig是日志服务自定义的一类CRD,您可以通过配置YAML文件创建对应的CR,从而管理iLogtail采集配置。本文主要介绍通过AliyunPipelineConfig管理iLogtail采集配置的操作步骤。

前提条件

配置步骤

重要

alibaba-log-controller定期会同步AliyunPipelineConfig所定义的iLogtail采集配置到服务端,所以对于通过CR创建的iLogtail采集配置,其修改只能通过更新相应的CR来实现,在日志服务控制台配置的Logtail采集配置会被CR覆盖,建议只使用一种方法管理Logtail采集配置。

创建iLogtail采集配置

您需要创建AliyunPipelineConfigCR,alibaba-log-controller会根据CR自动创建iLogtail采集配置。创建完成后,系统自动应用该iLogtail采集配置。

创建步骤:

  1. 获取集群KubeConfig并通过kubectl工具连接集群

  2. 执行如下命令创建cube.yaml文件,请根据实际情况替换文件名。

vim cube.yaml
  1. 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采集配置里的输出插件
      ...
  1. 执行如下命令创建AliyunPipelineConfigCR,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采集配置

您只需要修改已有的AliyunPipelineConfigYAML文件并重新应用,就可以更新iLogtail采集配置。

  1. 获取集群KubeConfig并通过kubectl工具连接集群

  2. 编辑已有的AliyunPipelineConfig文件。cube.yaml为文件名,请根据实际情况替换。

vim cube.yaml
  1. YAML文件中修改配置参数。

  2. 执行如下命令使iLogtail采集配置生效。cube.yaml为文件名,请根据实际情况替换。

kubectl apply -f cube.yaml

删除iLogtail采集配置

如果您要删除iLogtail采集配置,只需删除对应的CR即可。其中,<config_name>AliyunPipelineConfig的名称,请根据实际情况替换。

kubectl delete clusteraliyunpipelineconfigs <config_name>
重要
  • iLogtail采集配置成功删除后,CR会释放。

  • 如果iLogtail采集配置删除失败,CR不会被释放,可以查看CRstatus中的报错信息。如果想忽略报错直接删除CR,可以手动删除CR metadata中的finalizers字段。

CR参数说明

  • ApiVersion

    固定为telemetry.alibabacloud.com/v1alpha1

  • Kind

    固定为ClusterAliyunPipelineConfig

  • Metadata

    参数

    数据类型

    是否必填

    说明

    参数

    数据类型

    是否必填

    说明

    name

    string

    CR的唯一标识,同时也是创建出的iLogtail采集配置的名字。

    注意:

    该参数会作为iLogtail采集配置名称使用,在所属Project内唯一,且创建成功后无法修改。需要满足以下条件:

    只能包括小写字母、数字、-和_。

    必须以小写字母或数字开头和结尾。

    长度必须在2~128字符之间。

  • Spec

    参数

    数据类型

    是否必填

    说明

    参数

    数据类型

    是否必填

    说明

    project

    PipelineProject

    目标Project的信息。

    说明

    project字段在CR创建后不允许更改,如需切换project请创建新的CR。

    config

    PiplineConfig

    定义iLogtail 采集配置详情。

    logstores

    PipelineLogstore

    需要创建的Logstore列表,支持创建多个Logstore。

    说明
    • name以外的所有参数仅在创建logstore时生效。

    • 该列表并不指定iLogtail采集配置的发送目标,只会按需创建Logstore。iLogtail采集配置的发送目标,由config中的flusher插件决定。如果 iLogtail 采集配置中指定的目标 Logstore 已存在,此处可不填写。

    • 该列表只可以在logstores列表中新增/删除logstore定义,不支持修改已定义的Logstore。

    machineGroups

    PipelineMachineGroup

    需要与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中为集群默认的projectspec.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需要另外配置iLogtailconfig_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会使用CRmetadata.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

      1. 目标Logstore的热数据存储的时间(以天为单位)。更多信息,请参见智能存储分层。默认值为0,需要小于ttl且大于等于 7。

      shardCount

      int

      目标LogstoreShard数量。更多信息,请参见管理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:按写入量计费。

      说明

      如果LogstorequeryModequery,只支持按功能计费。

      如果账号未开通写入量计费,无法配置为ChargeByDataIngest。

    • PipelineMachineGroup

      参数

      数据类型

      是否必填

      说明

      参数

      数据类型

      是否必填

      说明

      name

      string

      需要与iLogtail采集配置关联的机器组名。

      说明

      如果机器组不存在,alibaba-log-controller会自动创建同名的标识型机器组,标识与机器组名相同。详细信息,参见创建用户自定义标识机器组。该行为仅在创建机器组时生效。

  • 本页导读 (1)
  • 前提条件
  • 配置步骤
  • 创建iLogtail采集配置
  • 查看iLogtail采集配置
  • 更新iLogtail采集配置
  • 删除iLogtail采集配置
  • CR参数说明
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等