本文介绍如何通过DaemonSet方式部署Logtail采集阿里云ACK集群标准输出(新版)的流程。
前提条件
方案概览
在使用DaemonSet方式部署Logtail并采集集群标准输出时,主要有三个步骤:
安装Logtail组件:为您的集群安装Logtail组件,包含DaemonSet logtail-ds,ConfigMap alibaba-log-configuration,Deployment alibaba-log-controller等,以供后续日志服务下发采集配置到Logtail并执行日志采集操作。
创建Logtail采集配置:Logtail组件会根据采集配置将增量日志采集并处理后上传到Logstore中。本文介绍CRD-AliyunPipelineConfig(推荐)和控制台两种创建采集配置的方式。
查询分析日志:配置成功后会为您自动创建Logstore,您可以查看日志数据。
步骤一:安装Logtail组件
已有的ACK集群中安装Logtail组件
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在日志与监控页签中,找到logtail-ds,然后单击安装。
新建ACK集群时安装Logtail组件
登录容器服务管理控制台,在左侧导航栏选择集群列表。
单击创建集群,在组件配置页面,选中使用日志服务。
本文只描述日志服务相关配置,关于更多配置项说明,请参见创建ACK托管集群。
当选中使用日志服务后,会出现创建项目(Project)的提示。
使用已有Project
您可以选择一个已有的Project来管理采集到的容器日志。
创建新Project
日志服务自动创建一个Project来管理采集到的容器日志。其中
ClusterID
为您新建的Kubernetes集群的唯一标识。
在组件配置页中,默认开启控制面组件日志,开启此配置会在Project中自动配置并采集集群控制面组件日志并遵循按量计费,因此请您根据自身情况选择是否需要开启,相关信息请参考管理控制面组件日志。
安装完成后,自动生成名为k8s-log-<YOUR_CLUSTER_ID>
的Project,并在该Project下生成如下资源,您可登录日志服务控制台查看资源。
资源类型 | 资源名称 | 作用 | 示例 |
机器组 | k8s-group- | logtail-daemonset的机器组,主要用于日志采集场景。 | k8s-group-my-cluster-123 |
k8s-group- | logtail-statefulset的机器组,主要用于指标采集场景。 | k8s-group-my-cluster-123-statefulset | |
k8s-group- | 单实例机器组,主要用于部分单实例采集配置。 | 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采集配置的修改不会同步到自定义资源中。
登录容器服务管理控制台。
在左侧导航栏中,单击集群列表。
在集群列表页面中,单击目标集群操作列下的更多,然后单击管理集群。
创建名为example-k8s-stdout.yaml的文件。
说明您可用采集配置生成器生成目标场景YAML脚本,该工具可帮您快速完成配置,减少手动操作。
以下示例YAML文件以多行模式采集default命名空间下,标签为
app: ^(.*test.*)$
的Pod中的标准输出,并将其发送到名为k8s-log-test
的Project中的名为k8s-stdout
(自动创建)的Logstore。您需根据实际情况修改YAML中的以下参数:project
,示例:k8s-log-test
。登录日志服务控制台,确定您安装的Logtail生成的Project的名称,通常格式为
k8s-log-<YOUR_CLUSTER_ID>
。IncludeK8sLabel
,示例:app: ^(.*test.*)$
。用于筛选目标Pod的标签,当前条件指定标签键为app,值中包含test的Pod会被采集。
有关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
执行
kubectl apply -f example-k8s-stdout.yaml
,其中example-k8s-stdout.yaml
替换为您创建的 YAML 文件名称,Logtail开始采集容器内的标准输出,并发送到日志服务中。
日志服务控制台
登录日志服务控制台。
选择Project列表中您在安装Logtail组件时所使用的Project,如
k8s-log-<your_cluster_id>
。在Project页面中点击目标Logstore的Logtail配置,添加Logtail配置,并单击Kubernetes-标准输出-新版的立即接入。在机器组配置页面K8s场景的ACK Daemonset方式下勾选k8s-group-${your_k8s_cluster_id}机器组并单击>添加到应用机器组中,点击下一步。
创建Logtail采集配置,按下文填写必须配置后点击下一步即可,Logtail采集配置生效大概需要1分钟,请耐心等待。
此处仅介绍必须配置,详细配置请参见Kubernetes标准输出(新版)。
在全局配置中输入配置名称。
创建索引和预览数据:日志服务默认开启全文索引,此时查询会索引日志中所有字段。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将生成字段索引,通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。更多信息请参见创建索引。
步骤三:查询分析日志
登录日志服务控制台。
在Project列表中,单击目标Project,进入对应的Project详情页面。
在对应的日志库右侧的
图标,选择查询分析,查看Kubernetes集群输出的日志。
标准输出(新版)默认字段
Kubernetes集群的每条日志默认上传的字段如下所示。
字段名称 | 说明 |
_time_ | 日志采集时间。 |
_source_ | 日志源类型,stdout或stderr。 |
__tag__:_image_name_ | 镜像名 |
__tag__:_container_name_ | 容器名 |
__tag__:_pod_name_ | Pod名 |
__tag__:_namespace_ | Pod所在的命名空间 |
__tag__:_pod_uid_ | Pod的唯一标识 |
相关文档
当您完成日志内容的采集后,您可以在日志服务中使用查询与分析功能,来帮助您了解日志情况,请参考查询与分析快速指引。
当您完成日志内容的采集后,您可以在日志服务中使用可视化功能, 来帮助您直观地统计与了解日志情况,请参考快速创建仪表盘。
当您完成日志内容的采集后,您可以在日志服务中使用告警功能, 来自动提醒您日志中的异常情况,请参考快速设置日志告警。
容器采集异常排查思路:
查看控制台是否有报错信息,具体操作,请参见如何查看Logtail采集错误信息。
如果控制台无报错信息,排查机器组心跳、Logtail采集配置等内容。具体操作,请参见如何排查容器日志采集异常。