采集ACK集群标准输出-新版(DaemonSet)

本文介绍如何通过DaemonSet方式部署Logtail采集阿里云ACK集群标准输出(新版)的流程。

前提条件

方案概览

在使用DaemonSet方式部署Logtail并采集集群标准输出时,主要有三个步骤:

  1. 安装Logtail组件:为您的集群安装Logtail组件,包含DaemonSet logtail-ds,ConfigMap alibaba-log-configuration,Deployment alibaba-log-controller等,以供后续日志服务下发采集配置到Logtail并执行日志采集操作。

  2. 创建Logtail采集配置:Logtail组件会根据采集配置将增量日志采集并处理后上传到Logstore中。本文介绍CRD-AliyunPipelineConfig(推荐)和控制台两种创建采集配置的方式。

  3. 查询分析日志:配置成功后会为您自动创建Logstore,您可以查看日志数据。

步骤一:安装Logtail组件

已有的ACK集群中安装Logtail组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 日志与监控页签中,找到logtail-ds,然后单击安装

新建ACK集群时安装Logtail组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 单击创建集群,在组件配置页面,选中使用日志服务

    本文只描述日志服务相关配置,关于更多配置项说明,请参见创建ACK托管集群

    当选中使用日志服务后,会出现创建项目(Project)的提示。

    • 使用已有Project

      您可以选择一个已有的Project来管理采集到的容器日志。

      安装logtail组件

    • 创建新Project

      日志服务自动创建一个Project来管理采集到的容器日志。其中ClusterID为您新建的Kubernetes集群的唯一标识。

      安装logtail组件

重要

组件配置页中,默认开启控制面组件日志,开启此配置会在Project中自动配置并采集集群控制面组件日志并遵循按量计费,因此请您根据自身情况选择是否需要开启,相关信息请参考管理控制面组件日志image

安装完成后,自动生成名为k8s-log-<YOUR_CLUSTER_ID>Project,并在该Project下生成如下资源,您可登录日志服务控制台查看资源。

资源类型

资源名称

作用

示例

机器组

k8s-group-<YOUR_CLUSTER_ID>

logtail-daemonset的机器组,主要用于日志采集场景。

k8s-group-my-cluster-123

k8s-group-<YOUR_CLUSTER_ID>-statefulset

logtail-statefulset的机器组,主要用于指标采集场景。

k8s-group-my-cluster-123-statefulset

k8s-group-<YOUR_CLUSTER_ID>-singleton

单实例机器组,主要用于部分单实例采集配置。

k8s-group-my-cluster-123-singleton

Logstore

config-operation-log

用于存储Logtail组件中的alibaba-log-controller日志。建议不要在此Logstore下创建采集配置。该Logstore可以删除,删除后不会再采集alibaba-log-controller的运行日志。该Logstore的收费标准和普通的Logstore收费标准是一致的,具体请参见按写入数据量计费模式计费项

步骤二:创建Logtail采集配置

这里为您介绍两种采集配置方式。建议您只使用一种方法管理Logtail采集配置。

配置方式

配置说明

场景适用

(推荐)CRD-AliyunPipelineConfig

通过K8s CRD管理日志采集配置。

适用于需要复杂采集和处理需求以及在ACK集群中确保日志与应用版本一致性的场景。

日志服务控制台

图形化界面直接管理,快速部署配置。

适合少量Logtail采集配置的创建和管理,部分高级功能和自定义需求无法通过实现。

CRD-AliyunPipelineConfig(推荐)

您只需要创建AliyunPipelineConfig自定义资源即可创建Logtail采集配置,资源创建完成后自动生效。

重要

对于通过自定义资源创建的Logtail采集配置,其修改只能通过更新相应的自定义资源来实现,在日志服务控制台上对Logtail采集配置的修改不会同步到自定义资源中。

  1. 登录容器服务管理控制台

  2. 在左侧导航栏中,单击集群列表

  3. 集群列表页面中,单击目标集群操作列下的更多,然后单击管理集群

  4. 创建名为example-k8s-stdout.yaml的文件。

    说明

    您可用采集配置生成器生成目标场景YAML脚本,该工具可帮您快速完成配置,减少手动操作。

    以下示例YAML文件以多行模式采集default命名空间下,标签为app: ^(.*test.*)$Pod中的标准输出,并将其发送到名为k8s-log-testProject中的名为k8s-stdout(自动创建)的Logstore。您需根据实际情况修改YAML中的以下参数:

    1. project,示例:k8s-log-test

      登录日志服务控制台确定您安装的Logtail生成的Project的名称,通常格式为k8s-log-<YOUR_CLUSTER_ID>

    2. IncludeK8sLabel,示例:app: ^(.*test.*)$。用于筛选目标Pod的标签,当前条件指定标签键为app,值中包含testPod会被采集。

    有关YAML文件中config项的详情,包括支持的输入、输出、处理插件类型和容器过滤方式,完整的参数配置请参见Kubernetes标准输出(新版)。完整的YAML参数详情请参见CR参数说明

    apiVersion: telemetry.alibabacloud.com/v1alpha1
    # 创建一个 ClusterAliyunPipelineConfig
    kind: ClusterAliyunPipelineConfig
    metadata:
      # 设置资源名,在当前Kubernetes集群内唯一。该名称也是创建出的Logtail采集配置名。如果名称重复则不会生效。
      name: example-k8s-stdout
    spec:
      # 定义Logtail采集配置
      config:
        aggregators: [ ]
        global: {}
        # 定义输入插件
        inputs:
          # 使用input_container_stdio插件采集容器标准输出
          - Type: input_container_stdio
            # 采集标准输出
            IgnoringStderr: false
            # 采集标准错误
            IgnoringStdout: false
            # 启用容器元数据预览
            CollectingContainersMeta: true
            # 容器过滤
            ContainerFilters:
              IncludeK8sLabel:
                app: ^(.*test*.)$
            # 配置多行采集
            Multiline:
              # 配置行首正则表达式
              StartPattern: \d+-\d+-\d+.*
              Mode: custom
              UnmatchedContentTreatment: single_line
            # 使用处理插件解析日志
        processors:
            # 正则模式解析
          - Type: processor_parse_regex_native
            SourceKey: content
            # 正则表达式
            Regex: (\d+-\d+-\d+\s\S+)(.*)
            # 字段索引
            Keys:
              - time
              - detail
        # 定义输出插件
        flushers:
          - Type: flusher_sls
            Logstore: k8s-stdout
        sample: |-
          2025-04-02 16:00:03
          1
          2
          3
          4
          5
          6
          7
          8
          9
      project:
        name: k8s-log-test
      logstores:
        - name: k8s-stdout
  5. 执行kubectl apply -f example-k8s-stdout.yaml,其中example-k8s-stdout.yaml替换为您创建的 YAML 文件名称,Logtail开始采集容器内的标准输出,并发送到日志服务中。

日志服务控制台

  1. 登录日志服务控制台

  2. 选择Project列表中您在安装Logtail组件时所使用的Project,如k8s-log-<your_cluster_id>。在Project页面中点击目标LogstoreLogtail配置,添加Logtail配置,并单击Kubernetes-标准输出-新版的立即接入。

    image

  3. 机器组配置页面K8s场景的ACK Daemonset方式下勾选k8s-group-${your_k8s_cluster_id}机器组并单击>添加到应用机器组中,点击下一步。image

  4. 创建Logtail采集配置,按下文填写必须配置后点击下一步即可,Logtail采集配置生效大概需要1分钟,请耐心等待。

    此处仅介绍必须配置,详细配置请参见Kubernetes标准输出(新版)

    全局配置中输入配置名称。

    image

  5. 创建索引预览数据:日志服务默认开启全文索引,此时查询会索引日志中所有字段。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将生成字段索引,通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。更多信息请参见创建索引image

步骤三:查询分析日志

  1. 登录日志服务控制台

  2. Project列表中,单击目标Project,进入对应的Project详情页面。

    image

  3. 在对应的日志库右侧的图标图标,选择查询分析,查看Kubernetes集群输出的日志。

    image

标准输出(新版)默认字段

Kubernetes集群的每条日志默认上传的字段如下所示。

字段名称

说明

_time_

日志采集时间。

_source_

日志源类型,stdoutstderr。

__tag__:_image_name_

镜像名

__tag__:_container_name_

容器名

__tag__:_pod_name_

Pod

__tag__:_namespace_

Pod所在的命名空间

__tag__:_pod_uid_

Pod的唯一标识

相关文档