日志概述

更新时间:2025-02-11 03:14:46

集群上的应用、容器以及基础架构组件都会持续产生大量分散的日志数据,使得日志的采集和管理较为复杂。ACK集群与阿里云日志服务SLS紧密集成,提供了一套日志管理解决方案,简化日志管理流程。

说明

如需了解SLS的功能以及基本术语,请参见什么是日志服务术语表

日志采集组件介绍

Logtail组件是由SLS提供的专门用于采集ACK集群内日志数据的Agent。您可以在控制台安装该组件,以无侵入的方式采集多种类型的日志文件,包括文本日志、Binlog、HTTP数据,支持标准容器、Kubernetes集群等容器集群的日志数据采集。如果您追求易用性、集成便捷性、资源效率以及成本控制,则推荐使用Logtail组件采集日志。

如需了解Logtail和开源组件的功能区别,请参见日志采集Agent对比

日志采集原理

以下分别对日志采集方式和采集流程这两个方面进行说明。

采集流程

ACK集群中,通过部署Logtail组件作为数据收集的桥梁,将各类日志数据安全地收集并传输至SLS进行存储和分析。此方式可以简化日志采集的配置和管理,提高了日志管理的灵活性和效率。使用Logtail采集日志的基本流程和架构如下所示。

image

整个流程包括:

  1. 部署Logtail。具体操作,请参见安装Logtail组件(阿里云Kubernetes集群)

    安装Logtail组件时,默认创建AliyunLogConfig CRD和安装alibaba-log-controller,实现ACK集群内AliyunLogConfig与日志服务中采集配置的关联关系。

  2. Logtail按照配置采集数据:Logtail获取创建的采集配置并根据配置内容进行工作。

    安装Logtail后,需要创建采集配置,支持通过控制台、CRD配置和环境变量配置采集日志。具体操作,请参见通过DaemonSet采集Kubernetes容器文本日志通过DaemonSet方式采集Kubernetes容器标准输出(旧版)通过Sidecar方式采集Kubernetes容器文本日志

  3. 上报日志至SLS:收集到的日志数据会被Logtail实时上传至SLS。

采集方式

Kubernetes集群中,日志采集分为SidecarDaemonSet两种方式,两种采集方式对应的采集流程和适用场景有所不同。

  • DaemonSet方式:Logtail组件安装在kube-system命名空间下,DaemonSet名为logtail-ds。每个节点的Logtail负责采集这个节点上所有运行的Pod的数据(包括标准输出和文件)。详细信息,请参见通过DaemonSet采集Kubernetes容器文本日志

  • Sidecar方式:节点中除了业务主容器外,还会运行LogtailSidecar容器(需要您手动为业务Pod注入Logtail容器),Logtail容器和主容器共享日志的Volume。在使用虚拟节点时,请使用Sidecar容器方式。详细信息,请参见通过Sidecar方式采集Kubernetes容器文本日志

分类

DaemonSet方式

Sidecar方式

分类

DaemonSet方式

Sidecar方式

适用场景

日志分类明确、功能较单一的集群。

  • 集群属于单一租户,功能单一或业务不多。

  • 希望对同一个节点的容器使用相同的日志采集配置。

  • 希望采集标准输出流。

  • 希望资源消耗低。

大型、混合型集群。

如果您需要对每个Pod使用不同的日志采集配置,可以采取该方式进行日志采集。但该方式的单Pod产生的日志量大、资源消耗大。

资源占用

在每个节点上运行一个Logtail Pod。

在每个Pod上运行一个Logtail容器。

部署运维

只需维护DaemonSet。

每个需要采集日志的Pod都需要部署Logtail容器。

采集日志类型

标准输出和文本日志。

文本日志。

支持的日志类型

ACK集群中,支持从不同源头采集日志数据,并将其安全地传输至SLS进行存储和分析。

日志类型

说明

相关文档

日志类型

说明

相关文档

应用(容器)日志

支持快速采集ACK集群的容器日志,包括容器的标准输出以及容器内的文本文件。

控制面组件日志

支持采集API Serverkube-schedulerkube-controller-managercloud-controller-manager、Controlplane-Events、ALB Ingress Controller等控制面组件日志,采集到的日志会被发送到指定的Logstore。这不仅便于集中管理和分析控制面的组件运行状态,还有助于快速排查问题、监控组件健康状况及验证自定义参数配置的效果。

每种日志服务Logstore对应一个Kubernetes控制面组件。

收集ACK托管集群控制面组件日志

网络组件日志

  • 支持采集Ingress组件的访问日志,帮助您了解应用接入层的流量动态。

  • 支持采集CoreDNS日志,帮助您识别和解决DNS解析缓慢、异常访问请求等问题。

系统插件日志

支持对Dashboard网络插件存储插件等插件进行日志采集。

收集系统插件日志

使用限制

限制项

限制说明

限制项

限制说明

集群版本

  • 使用DaemonSet方式采集日志时,要求Kubernetes1.10.0及以上版本(支持Mount propagation: HostToContainer)。

  • 使用CRD方式(alibaba-log-controller组件)采集日志时,要求Kubernetes1.16.0及以上版本。

    Kubernetes 1.7.0及以上版本提供的apiextensions.k8s.io/v1beta1 API也支持CRD能力,但Beta版本的API稳定性取决于具体的Kubernetes版本,稳定性未知。

logtail-ds组件

  • logtail-ds:每个节点至少预留0.1 Core CPU,256 MB内存。

  • alibaba-log-controller:每个节点至少预留0.05 Core CPU,100 MB内存。

更多使用限制,请参见Logtail限制说明

计费说明

ACK集群中使用SLS所产生的费用=集群管理费用+SLS费用。

  • 集群管理费用:ACK收取。ACK集群Pro收取,ACK集群基础版ACK专有版集群不收取。详细信息,请参见计费概述

  • SLS费用:以按量付费方式进行统一计费。产生的Logstore费用由SLS收取。

    查看Logstore的计费方式,请参见计费概述

常见问题

如何将Project中的日志复制到另一个Project中?

如需将project-alogstore-a的访问日志复制到新建project-blogstore-b中,从而后续在project-b进行统一的查询与分析,请参见复制Logstore数据

如果日志采集状态异常怎么办?

您在使用Logtail采集容器(标准容器、Kubernetes)日志时,如果采集状态异常,可以根据如何排查容器日志采集异常依次进行问题排查、运行状态检查等运维操作。

关于日志丢失、删除日志、降低日志存储费用等常见问题

如需了解如何变更日志保存天数、如何关闭日志采集等信息,请参见Logstore相关问题

Logtail相关问题

如需了解Logtail日志采集延时情况、如何采集历史日志、修改Logtail配置后多久生效等问题,请参见Logtail基本问题

联系我们

如果您在使用ACK过程中有任何疑问,欢迎您联系我们

  • 本页导读 (1)
  • 日志采集组件介绍
  • 日志采集原理
  • 采集流程
  • 采集方式
  • 支持的日志类型
  • 使用限制
  • 计费说明
  • 常见问题
  • 如何将Project中的日志复制到另一个Project中?
  • 如果日志采集状态异常怎么办?
  • 关于日志丢失、删除日志、降低日志存储费用等常见问题
  • Logtail相关问题
  • 联系我们
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等