容器云平台日志中心建设概述

一、前言

日志对于任何系统和组件都必不可缺的,运维人员通过日志信息发现系统隐患、系统故障并安排人员及时处置,开发人员解决问题离不开日志信息的协助定位。现在微服务兴起,微服务架构带来好处的同时带来了诸多困扰,分布式部署的应用其日志散落在各个位置,这给日志的采集、存储、分析、管理带来了挑战,所以在规模化的容器云平台建设中,日志中心的建设是我们需要重点考虑的部分。

我们在建设容器云平台日志中心的时候要考虑日志采集到管理全部组件的高可用、松耦合、高性能和稳定性,不仅容器云平台可以访问和使用日志中心服务,其他平台和组件也可以访问日志中心服务。这样的日志中心就成为了服务整个公司系统和应用的安全可靠的基础设施,节省了其他系统重复开发日志功能的成本。

容器云平台日志中心建设概述
容器云平台日志中心建设概述

二、架构设计

容器云平台日志中心建设概述

「架构图示意图」

容器云平台日志中心组件,我们选择比较流行的filebeat、kafka、ES等开源日志采集器和中间件组件,一些场景使用Kibana实现ES的简单维护和信息查询的功能,针对特定的日志指标,我们开发了LogStream组件实现了kafka消息的流式处理、日志监控指标exporter、日志和事件告警。

容器云平台日志中心建设概述

日志中心架构示意图

「多AZ部署」

在这一关键设计中,微服务结构由以下几部分组成:每个AZ之间保持基础设施的隔离,一个域内部署有多个k8s集群。每个AZ都有一个独立部署的kafka和ES集群,一个高可扩展的LogStream部署副本集。AZ中每个node节点部署LogAgent守护进程集,通过LogAgent管理多个filebeat进程收集日志。在日志查询时通过ES的CCS能力,提供跨AZ的日志查询能力。

「日志管理流程」

微服务架构日志管理流程主要分为以下几个步骤。

  1. 日志选取:确定选择哪些日志需要收集和记录分析。

  2. 日志采集:Filebeat轻巧做收集。

  3. 日志缓冲:Kafka缓存本地做缓冲。

  4. 日志处理:LogStream筛选过滤日志、进行日志监控指标采集、日志和事件告警。

  5. 日志存储:Elasticsearch建索引入库。

  6. 日志检索:利用Elasticsearch强大的检索功能,实现日志的各项搜索查询能力。

  7. 日志展现:在容器云平台界面实现日志数据可视化。

这一套流程在保障功能完备同时提高性能、尽可能做到轻量部署。

容器云平台日志中心建设概述

「Kafka缓冲」

引入kafka作为日志缓冲层,一方面实现了日志采集、处理、存储流程的松耦合,另一方面也避免了在服务高峰期应用日志对ES的冲击,造成日志数据丢失。

其优点如下:

  1. 一个topic拥有多个partition,而partition分布在不同的磁盘中,这也是kafka性能高的原因之一。

  2. kafka采用集群化部署,可添加kafka工作节点,对集群进行横向扩展。

  3. Kafka的高性能保证了可以接收来自众多Filebeat的日志信息,从而实现一个缓冲的作用。

容器云平台日志中心建设概述

「ES相关设计」

选择ES作为日志中心的存储,有如下优点:

  1. 可分布式的部署,方便拓展。

  2. 处理海量数据可以应对多种需求。

  3. 强大的搜索功能,基于Lucene可以实现快速搜索。

  4. 活跃的开发社区,资料多、上手简单。

在设计容器云平台日志功能界面时,可利用ES强大的搜索能力,通过项目、应用、Deployment、pod名称、关键字、日志级别、时间范围来检索所需要的日志信息。

LogStream组件在处理和筛选日志时,将根据不同的项目信息,将日志写入不同的项目索引中,从而降低各个项目之间日志耦合度,提升日志查询性能。

容器云平台日志中心建设概述

「LogStream组件设计」

LogStream组件是根据特定需求而开发的用于处理和筛选kafka大量日志数据,写入日志存储组件的工具。它实现了如下功能:

  1. kafka消息的流式处理,不仅能过滤日志,而且能根据上游的容器云平台的数据,在日志中添加关键信息。

  2. 日志监控指标exporter,在过滤和处理日志的过程中,统计项目、集群、命名空间、应用、日志等级、关键字段等各个维度的日志监控指标,并上报至Promethues中,丰富监控的各项能力。

  3. 对接了告警模块,当出现指定的日志或者事件告警时,调用告警模块接口创建告警。

容器云平台日志中心建设概述

三、实现目标

上述日志中心的建设,实现了以下目标。

  1. 一次建设多次使用,降低成本。

  2. 将微服务中散落各地的日志进行了统一收集和处理,提升了分析和查询的便利性。

  3. 缩短项目组开发周期,不用重复建设日志采集、处理、存储等功能,专注于业务实现。

  4. 日志格式标准化,采集规范化,存储统一化。

  5. kafka、es集群以及LogStream组件高度可扩展,可横向扩容。

  6. 降低了各项目组之间、各日志功能组件之间的耦合度。

  7. 遵循统一的规范和标准,各个组件可随时替换,减小重新设计工作量。

  8. 保证了日志查询的实时和准实时,可根据不同分级、不同业务属性创建不同的索引,保障重要关键日志查询的性能。

  9. 支持不同的日志格式,可通过LogStream组件转换日志编码,统一编码格式。

容器云平台日志中心建设概述

四、结束语

容器云平台日志中心的规划和建设取决于日志中心在整体架构上的定位,如果在整体架构上已存在了该角色,我们需要做的就是配合提供信息以支撑日志中心的接入和正常运行。只不过云计算平台是基础设施,不管IaaS、PaaS需要有对基础设施资源的管理和运维能力,日志作为每个平台每个服务都不可回避的能力,使之成为一个平台级的服务也是一种很好的选择。

上述内容描述的方案,但更多的是提供一种思路,我们在做方案设计时需要全面地看待问题,表面看起来不相关的东西都存在着内在的联系。容器云平台的设计和架构,关键不是容器的问题,关键是为了支撑业务。要支撑业务,则需要我们持续关注业务在容器云平台使用上的痛点和难点,不断完善容器云平台的各项功能。

容器云平台日志中心建设概述
容器云平台日志中心建设概述

文章作者:佘彬彬

排版设计:王蔚棋

手绘插画:岳   媛

容器云平台日志中心建设概述

求分享

容器云平台日志中心建设概述

求点赞

求在看

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33237.html

(0)
EBCloud's avatarEBCloud
上一篇 2024年4月2日 下午3:28
下一篇 2024年4月2日 下午3:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注