使用AliyunLogConfig管理采集配置

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

前提条件

  • 已安装iLogtail组件。具体操作,请参见安装Logtail组件(阿里云Kubernetes集群)

  • 目标容器持续产生日志。

    重要

    iLogtail只采集增量日志。如果下发iLogtail配置后,日志文件无更新,则iLogtail不会采集该文件中的日志。更多信息,请参见读取日志

使用限制

通过AliyunLogConfig CR创建的配置,在控制台上对其修改不会同步到CR中。因此,如需修改由AliyunLogConfig CR创建的配置内容,只能修改CR资源,不能直接在控制台操作,避免配置不一致。

配置步骤

创建iLogtail采集配置

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

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

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

vim cube.yaml
  1. 在YAML文件中输入如下脚本,并根据实际情况设置其中的参数。CR结构的详细参数请参见CR参数说明

apiVersion: log.alibabacloud.com/v1alpha1      # 使用默认值,无需修改。
kind: AliyunLogConfig                          # 使用默认值,无需修改。
metadata:
  name: test-config                            # 设置资源名,在当前Kubernetes集群内唯一。
spec:
  logstore: k8s-stdout                         # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
  logtailConfig:                               # 设置iLogtail采集配置。
    inputType: plugin                          # 设置采集的数据源类型。
    configName: test-config                    # 设置iLogtail采集配置的名称。
    inputDetail:                               # 设置iLogtail采集配置的详细信息。
      ...
  1. 执行如下命令创建AliyunLogConfig的CR,会根据该CR自动创建iLogtail采集配置,从而使iLogtail采集配置生效。iLogtail采集配置生效后,Logtail开始采集数据,并发送到日志服务中。cube.yaml为文件名,请根据实际情况替换。

kubectl apply -f cube.yaml

查看iLogtail采集配置

  • 查看当前Kubernetes集群中所有由AliyunLogConfig创建的iLogtail采集配置。

    您可以执行以下命令,查看所有由aliyunlogconfigs创建的iLogtail采集配置。

    kubectl get aliyunlogconfigs
  • 查看由AliyunLogConfig创建的iLogtail采集配置的详细信息和状态。

    您可以执行kubectl get aliyunlogconfigs <config_name> -o yaml命令进行查看。其中,<config_name>AliyunLogConfig的名称,请根据实际情况替换。

    返回结果参考如下所示,执行结果中的status字段和statusCode字段表示iLogtail采集配置的状态。

    • 如果statusCode字段的值为200,表示应用iLogtail采集配置成功。

    • 如果statusCode字段的值为非200,表示应用iLogtail采集配置失败。

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      name: example-k8s-file
      namespace: kube-system
    spec:
      project: k8s-log-test
      logstore: k8s-file
      logtailConfig:
        inputType: file
        configName: example-k8s-file
        inputDetail:
          logType: common_reg_log
          logPath: /data/logs/app_1
          filePattern: test.LOG
          dockerFile: true
    status:
      status: OK
      statusCode: 200

更新iLogtail采集配置

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

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

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

vim cube.yaml
  1. 在YAML文件中修改配置参数。关于详细参数配置,请参见CR参数说明

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

kubectl apply -f cube.yaml

删除iLogtail采集配置

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

kubectl delete aliyunlogconfigs <config_name>
说明

CR删除后,iLogtail采集配置也会自动被删除。

CR参数说明

  • ApiVersion

    固定为log.alibabacloud.com/v1alpha1

  • Kind

    固定为AliyunLogConfig

  • Metadata

    参数

    数据类型

    是否必填

    说明

    name

    string

    CR 的唯一标识,建议与Spec.logtailConfig.configName相同。

    namespace

    string

    CR 所在的命名空间。

  • Spec

    参数

    数据类型

    是否必填

    说明

    project

    string

    目标 Project 名称。集群默认配置的 Project,alibaba-log-controller 环境变量 ALICLOUD_LOG_PROJECT 的值。

    说明

    如果您所指定的Project不存在,日志服务会自动创建。

    logstore

    string

    目标 Logstore 名称。

    说明
    • 如果您所指定的Logstore不存在,日志服务会自动创建。

    • 如果您所指定的Logstore已存在,后续所有Logstore相关的参数将不会生效。

    logtailConfig

    AliyunLogConfigDetail

    iLogtail采集配置详情。

    uid

    string

    目标账号的 uid。如果是跨账号投递日志,需要配置该参数,并在 alibaba-log-controller 的环境变量中配置 ALICLOUD_LOG_ACCOUNT_INFOS={"<uid>":{"accessKeyID":"<your_access_key_id>","accessKeySecret":"<your_access_key_secret>"}}

    说明
    • 该参数需要alibaba-log-controller 0.3.2及以上版本支持。

    • 该参数仅控制Project所属的账号,iLogtail数据投递到该账号需要另外配置iLogtail的用户标识,详情请参见配置用户标识

    endpoint

    string

    目标Project的服务入口。更多信息,请参见服务入口默认为当前集群所在的地域,如果目标Project 与集群不在同一地域,需要配置该参数。

    说明
    • 该参数需要alibaba-log-controller 0.4.1及以上版本支持。

    • 该参数仅控制采集配置所在的region,iLogtail数据投递到该region需要另外配置iLogtail的config_server_address、data_server_list,参考Logtail配置文件和记录文件

    logstoreMode

    string

    目标Logstore的类型。更多信息,请参见Logstore类型。默认值为standard,可选值:

    • query:查询型Logstore。

    • standard:标准型Logstore。

    说明

    该参数需要alibaba-log-controller 0.3.3及以上版本支持。

    shardCount

    int

    目标 Logstore 的 shard 数量。更多信息,请参见管理Logstore。默认值为2,取值范围为1~10。

    logstoreMaxSplitShard

    int

    目标 Logstore 的最大自动分裂 shard 数量。更多信息,请参见自动分裂Shard。默认值为32,取值范围为1~256。

    logstoreAutoSplit

    bool

    目标 Logstore 是否开启自动拆分 shard 功能。更多信息,请参见自动分裂Shard。默认值为true。

    lifeCycle

    int

    目标 Logstore 的数据存储的时间(以天为单位)。更多信息,请参见数据保存时间。默认值为180,取值范围为1~3650,如果配置为3650,表示永久保存。

    logstoreHotTTL

    int

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

    logstoreTelemetryType

    string

    目标 Logstore 的可观测数据类型。更多信息,请参见telemetryType。默认值为None,可选值:

    • None:日志类型。

    • Metrics:Metrics 类型。

    logstoreAppendMeta

    bool

    目标 Logstore 是否开通记录外网IP功能。更多信息,请参见记录外网IP。默认值为true。

    logstoreEnableTracking

    bool

    目标 Logstore 是否启用 Web Tracking。更多信息,请参见WebTracking。默认值为false。

    logstoreEncryptConf

    object

    目标 Logstore 的加密配置信息。更多信息,请参见通用数据结构。默认值为空。

    logstoreMeteringMode

    string

    目标 Logstore 的计费模式。更多信息,请参见计费模式。默认值为空,可选值:

    • ChargeByFunction:按功能计费

    • ChargeByDataIngest:按写入量计费。

    说明
    • 该参数需要alibaba-log-controller 0.4.3及以上版本支持。

    • 如果 Logstore 的 logstoreMode 为 query,只支持按功能计费。

    • 如果账号未开通写入量计费,只能配置为ChargeByFunction。

    machineGroups

    array

    iLogtail采集配置关联的机器组列表。更多信息,请参见机器组简介。安装logtail-ds组件时,日志服务会自动创建名为k8s-group-${your_k8s_cluster_id}的机器组,默认值为该机器组。

    configTags

    map

    用于标记iLogtail采集配置的自定义标签。

    说明

    该参数需要alibaba-log-controller 0.4.2及以上版本支持。

    AliyunLogConfigDetail

    详细的参数说明请参见Logtail配置,AliyunLogConfigDetail的数据格式与Logtail配置一致。

    参数

    数据类型

    是否必填

    说明

    configName

    string

    Logtail配置的名称,在其所属Project内必须唯一。创建Logtail配置成功后,无法修改其名称。建议与资源名相同(metadata.name)。

    命名规则如下:

    • 只能包括小写字母、数字、短划线(-)和下划线(_)。

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

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

    logSample

    string

    日志样例。需要小于1500字节。

    inputType

    string

    日志输入的方式。可选值如下:

    • plugin:通过Logtail插件采集标准输出、MySQL Binlog等日志。

    • file:通过固定模式(正则模式、分隔符模式等)采集文本文件中的日志。

    inputDetail

    Object

    日志输入的相关配置。更多信息,请参见inputDetail参数说明