9.2 采集方案介绍

9.2.1 方案简介

阿里云Kubernetes日志采集方案如图9-2所示。Kubernetes的每个节点都会运行一个Logtail容器,该容器可采集宿主机以及该宿主机上容器的日志,包括标准输出和日志文件。

图9-2 阿里云Kubernetes日志采集方案

Logtail以集群Daemonset的方式编排,这保证了每个节点都有一个Logtail容器在运行。

同时,此方案使用了自定义标识机器组,支持集群动态缩容和扩容。另外,采集配置支持通过标签以及环境变量过滤指定容器。

Kubernetes内部会注册自定义资源CRD AliyunLogConfig,并部署Alibaba Log Controller控制器。所以,此方案支持用户通过CRD方式或日志服务控制台两种方式对采集配置进行管理。

9.2.2 运行流程

以CRD的配置方式为例,我们可以把日志方案的工作流程简单总结为六个步骤,如图9-2所示。

(1)用户使用kubectl或其他工具应用aliyunlogconfigs CRD配置。

(2)alibaba-log-controller监听到配置更新。

(3)alibaba-log-controller根据CRD内容以及服务端状态,自动向日志服务提交创建Logstore、创建配置以及创建应用机器组的请求。

(4)以DaemonSet模式运行的Logtail会定期请求配置服务器,获取新的或已更新的配置并进行热加载。

(5)Logtail根据配置信息采集各个容器(Pod)上的标准输出或日志文件。

(6)最终Logtail将处理、聚合好的数据发送给日志服务。

9.2.3 配置方式

日志采集配置默认支持控制台配置方式,同时针对Kubernetes微服务开发模式,我们还提供CRD的配置方式,用户可以直接使用命令行对配置进行管理或将其集成到其他编排服务中。两种配置方式的特点如表9-1所示。

表9-1

如果刚开始使用日志服务,建议使用控制台的配置方式,此种方式所见即所得,非常易于上手。

若后续需要将日志采集与服务或组件发布集成,建议使用CRD的配置方式,可以直接将采集配置和服务配置放到同一个Yaml文件中部署和管理。