Kubernets日志采集配置模式介绍与对比

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: 为提供更优的扩展性、灵活性,Logtail采集的配置与K8S中的Deploy/Pod配置完全解耦,两者可以一起部署也可以独立部署,具体取决于您的实际应用和业务需求。下面我们介绍几种典型的配置方式,以便于您在实际应用中进行参考。

日志服务支持通过Logtail采集Kubernetes(简称K8S)集群日志,并支持CRD(CustomResourceDefinition)和控制台等方式进行采集配置管理。


为提供更优的扩展性、灵活性,Logtail采集的配置与K8S中的Deploy/Pod配置完全解耦,两者可以一起部署也可以独立部署,具体取决于您的实际应用和业务需求。


下面我们介绍几种典型的配置方式,以便于您在实际应用中进行参考。


前提


  1. K8S环境中安装好Logtail相关服务组件,若未安装请参考Kubernetes日志采集部署相关组件。
  2. 假设您对K8S中服务部署已经具备一定基础知识。


注意事项


  1. K8S集群Logtail组件部署完毕后,会默认创建一个自定义标识的机器分组,后续所有的配置直接应用到该分组即可。
  2. Logtail容器在K8S中以DaemonSet的模式部署,后续您的集群缩扩容时不需关心。
  3. 无论是容器的标准输出还是容器文件,均支持IncludeEnvExcludeEnv用来过滤指定的容器,推荐使用环境变量的方式进行配置,具体含义请参考容器标准输出容器内文本文件
  4. 不建议使用容器的标准输和容器文件中的IncludeLabelExcludeLabel中的label是容器的label,和K8S中的label并不是同一概念。


入门型


f5311c24-5765-479b-b0bc-f41753ebb97e.png


作为初次接触日志服务的用户,建议您在第一次部署采集配置时使用该方式:只使用一个配置采集所有容器的stdout。(具体操作细节请参考Kubernetes日志采集入门


具体方式为:


  1. 在日志服务控制台Logstore列表单击数据接入向导图标,进入配置流程。
  2. 单击自建软件中的Docker标准输出,并单击下一步。
  3. 无需修改基础配置,直接单击下一步,并应用到机器组。
  4. 后续提示无需关心,一直点击下一步直到确认。


按照以上简单配置方式,您就可以将整个集群中所有容器的标准输出(stdout和stderr)全部采集到一个Logstore中。


同时若您的所有容器中日志文件保存路径均一致,也可以通过一个容器文本文件配置全部采集。


伴随型


7faaed5b-55f7-4452-b061-56ebfc7e3930.png


若您的集群中每个应用都需独立采集到一个logstore中,您可以使用伴随型的方式来进行日志采集部署:


  1. 在部署您的业务应用时,为需要采集的容器增加一个特殊环境变量。
  2. 部署应用同时,也加上对应的CRD配置,其中IncludeEnv配置为步骤1的特殊环境变量。


例如,当需要新部署应用app-comment时,为该容器增加环境变量ALIYUN_LOG_COLLECTION=app-comment, 在部署脚本(yaml文件)后增加对应的CRD配置,配置中指定IncludeEnvALIYUN_LOG_COLLECTION=app-comment


规划型


b9546848-9bce-46cd-91cc-721c02772abb.png


若您的公司、业务中对于日志管理较为健全,可以使用此种方式进行日志采集的管理:


  1. 对于需要采集的业务种类、日志形式、日志格式、日志路径等进行提前规划。
  2. 根据规划创建对应的容器标准输出以及容器文件的采集配置,配置中使用IncludeEnv进行特殊环境变量标识。
  3. 部署业务应用容器时,若该容器需采集若干种日志,则为该容器添加步骤2中对应的特殊环境变量。
  4. 若有对应新的业务日志或新的类型日志需要接入,则继续步骤2、3的流程。


例如,对于某个电商类的K8S集群,业务类日志规划为:前端访问日志、购物车日志、订单日志、交易日志、评论日志等;系统类日志规划为:kernel日志、Trace日志、Debug日志、Crash监控日志、应用异常日志。


其中对于Debug日志,统一存储在容器的/app/logs/debug/debug.log,配置采集的IncludeEnvALIYUN_LOG_DEBUG_LOG_COLLECTION=TRUE;对于Trace日志,统一存储在容器的/app/logs/trace/trace.log,配置采集的IncludeEnvALIYUN_LOG_TRACE_LOG_COLLECTION=TRUE....


最终部署服务时,若该容器需要采集Debug、Trace日志,则为其增加环境变量ALIYUN_LOG_DEBUG_LOG_COLLECTION=TRUEALIYUN_LOG_TRACE_LOG_COLLECTION=TRUE


混合型


1ea0dd85-f6b9-470a-a57f-e9be9b5bd595.png


混合型即为充分利用Logtail配置灵活的方式,可使用但并不仅限于以下方式:


  1. 对于全集群统一采集的配置,不配置IncludeEnv,只配置ExcludeEnv,如有特殊需求不被采集的容器可通过添加对应的环境变量排除采集。
  2. 对于类型比较确定的日志,可使用规划型的方式,提前创建配置,部署服务时通过为容器添加环境变量进行关联
  3. 对于比较特殊的应用日志,可使用伴随型的方式,只对该容器进行采集。


类型对比


下述是各种配置模式的对比,其中简单型最容易上手,只推荐入门的用户使用;伴随型灵活性较高,但此种方式配置数过多且对应用日志没有约束;规划型的配置数较少,且各类应用日志都遵循规范输出,日志格式化程度高,最终可分析性较强,目前阿里云中很多产品内部都基于此方式进行日志采集和分析,强烈建议使用;混合型继承了伴随型和规划型的优劣势,若您目前系统很难完成规划型改造,建议使用混合型逐批向规划型迁移。

简单型

伴随型

规划型

混合型

配置复杂性

极低

较高

较低

较高

配置数

1/2个

取决于应用数

取决于日志分类数

取决于日志分类数+特殊应用数

灵活性

极低

较高

一般

日志规范性

无要求

无要求

要求各类应用按规范打日志

部分日志需遵循规范

可分析性

极低

一般

较高

推荐指数

1星

3星

5星

4星


相关帮助文档参考


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
24天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
173 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
3天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
13 5
|
2月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
48 1
|
2月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
39 1
|
2月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
168 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
3月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
4月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
256 3
|
2月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1654 14

相关产品

  • 日志服务