集群上的应用、容器以及基础架构组件都会持续产生大量分散的日志数据,使得日志的采集和管理较为复杂。ACK集群与阿里云日志服务SLS集成,提供解决方案简化日志管理流程。
日志采集组件介绍
日志采集组件与SLS深度集成,通过自动化发现方式采集容器日志,有效简化日志管理流程。该组件支持文本日志、Binlog、HTTP数据等多种格式。日志数据可直接持久化存储至SLS,并能够借助SLS的实时分析与查询功能快速识别和定位异常问题,提升故障处理效率,降低运维成本。当前支持的日志采集组件如下。
LoongCollector采集:LoongCollector是日志服务推出的新一代采集Agent,是Logtail的升级版,未来还将融合Arms的相关采集Agent能力,包括Prometheus抓取和eBPF无侵入采集等。
Logtail采集:Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC或其他云厂商等服务器上的日志。Logtail基于日志文件,无侵入式采集日志。您无需修改应用程序代码,且采集日志不会影响您的应用程序运行。
日志采集原理
以下分别介绍日志采集的两种方式及其流程。
采集流程
在ACK集群中,通过部署日志采集组件,将各类日志数据安全传输至SLS进行存储和分析。此方式简化了配置和管理,提升了效率。基本流程如下:
整个流程包括:
部署日志采集组件。
在为您的集群安装日志采集组件时,除了创建AliyunLogConfig CRD,还根据不同的日志采集组件部署相应的资源,以实现ACK集群内AliyunLogConfig与SLS采集配置的关联。
LoongCollector组件:loongcollector-ds(DaemonSet)、loongcollector-operator(Deployment)、alibaba-log-configuration(ConfigMap)
Logtail组件:logtail-ds(DaemonSet)、alibaba-log-controller(Deployment)、alibaba-log-configuration(ConfigMap)
配置采集数据:获取创建的采集配置并根据配置内容进行工作。
创建采集配置,支持通过控制台、CRD配置或环境变量配置采集日志。具体操作,请参见采集ACK集群容器日志、通过DaemonSet方式采集Kubernetes容器标准输出(旧版)、通过Sidecar方式采集Kubernetes容器文本日志。
上报日志至SLS:日志采集组件实时上传日志数据至SLS。
采集方式
在Kubernetes集群中,日志采集分为Sidecar和DaemonSet两种方式,两种采集方式对应的采集流程和适用场景有所不同。
DaemonSet 日志采集组件部署在
kube-system
命名空间下,以DaemonSet的形式运行。每个节点的日志采集Pod负责采集该节点上所有Pod的数据(包括标准输出和文件)。 详细信息,请参见采集ACK集群容器日志。Sidecar
每个业务Pod中运行一个日志采集容器,与主容器共享日志Volume。详细信息,请参见通过Sidecar方式采集Kubernetes容器文本日志。
分类 | DaemonSet方式 | Sidecar方式 |
适用场景 | 日志分类明确、功能较单一的集群。
| 大型、混合型集群。 如需对每个Pod使用不同的日志采集配置,可以采取该方式进行日志采集。但该方式的单Pod产生的日志量大、资源消耗大。 |
资源占用 | 在每个节点上运行一个日志采集 Pod。 | 在每个Pod上运行一个日志采集容器。 |
部署运维 | 只需维护DaemonSet。 | 每个需要采集日志的Pod都需要部署日志采集容器。 |
采集日志类型 | 标准输出和文本日志。 | 文本日志。 |
支持的日志类型
在ACK集群中,支持从不同源头采集日志数据,并将其安全地传输至SLS进行存储和分析。
日志类型 | 说明 | 相关文档 |
应用(容器)日志 | 快速采集ACK集群的容器日志,包括容器的标准输出以及容器内的文本文件。 |
|
控制面组件日志 | 支持采集API Server、kube-scheduler、kube-controller-manager、cloud-controller-manager、Controlplane-Events、ALB Ingress Controller等控制面组件日志,采集到的日志会被发送到指定的Logstore。这不仅便于集中管理和分析控制面的组件运行状态,还有助于快速排查问题、监控组件健康状况及验证自定义参数配置的效果。 每种日志服务Logstore对应一个Kubernetes控制面组件。 | |
网络组件日志 |
| |
数据面组件日志 |
使用限制
限制项 | 限制说明 |
集群版本 |
|
| |
更多使用限制,请参见Logtail限制说明。 |
计费说明
在ACK集群中使用SLS所产生的费用 = 集群管理费用 + SLS费用。
常见问题
如何将Project中的日志复制到另一个Project中?
如需将project-a
中logstore-a
的访问日志复制到新建project-b
的logstore-b
中,从而在project-b
进行统一的查询与分析,请参见复制Logstore数据。
如果日志采集状态异常怎么办?
您在使用Logtail采集容器(标准容器、Kubernetes)日志时,如果采集状态异常,可以根据如何排查容器日志采集异常依次进行问题排查、运行状态检查等运维操作。
关于日志丢失、删除日志、降低日志存储费用等常见问题
如需了解如何变更日志保存天数、如何关闭日志采集等信息,请参见Logstore相关问题。
Logtail相关问题
如需了解Logtail日志采集延时情况、如何采集历史日志、修改Logtail配置后多久生效等问题,请参见Logtail基本问题。
联系我们
如果您在使用ACK过程中有任何疑问,欢迎您联系我们。