容器云平台日志中心架构设计.docx

上传人:小飞机 文档编号:5176576 上传时间:2023-06-11 格式:DOCX 页数:11 大小:136.12KB
返回 下载 相关 举报
容器云平台日志中心架构设计.docx_第1页
第1页 / 共11页
容器云平台日志中心架构设计.docx_第2页
第2页 / 共11页
容器云平台日志中心架构设计.docx_第3页
第3页 / 共11页
容器云平台日志中心架构设计.docx_第4页
第4页 / 共11页
容器云平台日志中心架构设计.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《容器云平台日志中心架构设计.docx》由会员分享,可在线阅读,更多相关《容器云平台日志中心架构设计.docx(11页珍藏版)》请在三一办公上搜索。

1、容器云平台日志中心架构设计目录前言4一、日志中心需求概述41. 组件服务化需求 42. 日志数据集中分析处理需求43. 简化开发,专注于业务实现 54日志格式标准化,采集规范化,存统-化 55. 可扩展性需求56. 松耦合需求57. 开放性,标准化需求 68. 实时准实时处理需求69. 支持不同的日志格式、日志类型需求 6二、设计原则6三、架构设计7四、组件介绍81日志采集82日志转换113.日志中心 Server114日志展示115 .配置更新11五、日志中心组件定位12六、结束语12刖言日志功能是任何一个系统或组件必不可或缺的组成部分,我们每次规划建设一套系统或一个服 务的时候,都少不了需

2、要考虑日志的问题。容器云平台也是一样,不但要考虑容器云平台自身 的日志,还要考虑部署于平台的业务应用、业务服务以及云上中间件的日志。再推广一点,以 微服务的思想来构建容器云平台,日志作为独立的组件微服务,不仅容器云平台可以访问使用 日志中心服务,其他平台、其他组件同样也可以访问日志中心服务。这样日志中心服务就可以 成为基础的组件服务,服务于整个公司的系统、应用、服务等,而不仅仅是服务于某个特定的 系统、应用、服务。真正做到一次建设,永久使用。基于上面的考虑,我们提出容器云平台日志中心需求。一、日志中心需求概述1. 组件服务化需求我们以前也讨论过以微服务思想构建容器云平台,很重要的一点就是实现服

3、务共享,一次建设, 多次使用。日志功能是最基础的功能需求之一,为避免重复建设,重复投资,造成浪费,把公 用的日志能力单独提取出来作为一个微服务组件,以实现服务共享、降低成本、节省时间,最 大化收益的目的。2. 日志数据集中分析处理需求技术的发展使日志数据也越来越显示出其价值。以前在无法处理分析大量日志的情况下,很多 日志数据散落于各处,也由于竖井式的应用系统架构方式,日志数据归集繁琐,关联困难,日 志数据很难保存,大多都过一段时间就会被删除。随着大数据分析技术的成熟,使我们能从大量的日志信息中挖掘获取到高价值信息、趋势,提供预测、决策支持。目前已经没有了技术限 制,因此日志数据的归集也更便于数

4、据的统计、查询、分析、存储等,更好的挖掘数据的价值。 在去中心化大行其道的今天,我们为什么强调集中化和中心化?其实并不矛盾。去中心化并不 是没有中心,更多的是去单中心化,实现多中心化。在设计时需要自成一体,同时又是某一个 中心的一员。宇宙一艮河系太阳系一地球一生物细胞一原子.,他们都依 附于一个中心,都是一个中心,同时并行的中心又有很多个。这样是一个生态系统。我们在做 软件设计、软件架构的时候,同样可以参考这样的思想,避免只见树木不见森林。3. 简化开发,专注于业务实现简化业务系统、业务应用、业务服务研发,直接调用日志服务,不再关注日志格式、存储、运 维等问题,专注于业务逻辑研发。4. 日志格

5、式标准化,采集规范化,存储统一化不同的系统不同的应用格式不统一,首先把日志作为组件服务提出出来,在设计实施时只需要 按照日志中心的标准格式来打印输出日志,也实现了日志采集的规范化,日志数据存储的统一 化,这样对于日志的统计、分析等也易于处理。5. 可扩展性需求要实现服务共享,可能就无法确切的预测到底需要多少资源,这就需要考虑可扩展性。随着业 务的需要自动或手动扩展。容器云平台的扩展,更多是考虑横向的扩展,比如增加节点数,增 加实例数,以支持更高的负载请求压力。最理想的方案是扩展无限制,但目前不太现实,所以 单个节点或者单个实例的能力还是要满足相应的要求。容器技术理论很好,但落地时也会面临 着这

6、样那样的技术细节问题。所以不能盲目乐观,可扩展性是一个容器云平台需要认真面对的 问题。6. 松耦合需求 松耦合需求也是一项很重要的内容。组件或服务易扩展,组件或服务之间耦合性不能太强。组 件与组件之间,组件内部等都需要考虑松耦合的架构。组件服务彼此独立又相互关联,就象人 与人之间的社会关系。不管容器云平台还是日志中心内部的架构,都应该是一种松耦合的架构。 组件可以独立存在,也可以被替换。7. 开放性,标准化需求在遵循相应的开放性标准或规范的情况下,松耦合的组件很容器被替换。如果是私有标准,就 可能会增加很多工作量。所以在做设计的时候需要考虑开放性的需求。8. 实时准实时处理需求日志的采集和处理

7、到查询展示通常情况下是有一个可以忍受的延迟时间。比如,1秒或2秒,如果超过5秒,体验明显就会不好。所以日志中心设计也需要考虑日志的实时或准实时处理。可能不同的日志需要考虑分级,所采用的技术和方法会有不同。比如交易类就可能需要实时的 日志记录、采集、展示。管理类可以接受准实时的日志延迟。9支持不同的日志格式日志类型需求日志格式有多种多样,日志中心需要考虑支持不同的日志格式,比如文本,json文件,jms消息等,还可能涉及到字符编码等。对于我们来说,最基本的需求是支持业务应用服务日志的标准输出采集,平台各组件运行日志采集,中间件运行日志采集等。这些数据归集于ElasticSearch(ES),通过

8、Kibana或者Graylog来查询展示。二、设计原则基于前面需求的讨论,容器云平台日志中心设计原则也就体现出来了:1. 组件中心化原则:实现日志集中存储、集中管理、集中查询分析等能力。通过组件服务化实 现特定的功能,这些是基础的、可共享的、自成一体的、有独立中心的功能组件。2. 可扩展性原则:通过采用分布式架构,支持在不更改整体架构的前提下进行系统横向扩容。可借助于Elastic Search(ES)的扩展能力来实现。3. 松耦合原则:容器云平台架构采用松耦合架构,平台日志中心通过标准的接口和容器云平台 连接,也方便客户已有系统的集成或平台组件的扩展和替换。4. 开放性和兼容性原则:标准化或

9、通用的技术手段兼容主流的设备和系统、软件、工具等。5. 可靠性原则:提供可靠的采集、传输、存储、查询、分析等方面的能力。6. 准实时原则:日志的处理有时很难做到实时,可以考虑实现准实时的日志处理,根据业务的 要求来确认日志的延迟性。尽可能做到准实时。7. 日志分类处理原则:对业务日志和组件运行资源使用等日志的处理是不一样的。组件运行资 源使用等日志通常只作为实时监控的数据,不需要持久保存。业务日志通常是需要持久化存储, 作为进一步统计分析的依据。三、架构设计容器云平台日志中心组件我们选择比较流行的ELK等作为基础组件,一些场景使用Graylog替换Kibana来更好的用图形化展示。一方面考虑在

10、容器云平台前期建设过程中成本投入,开源 组件也比较成熟且功能强大,足以满足前期支撑业务日志的需求。另一方面开源是个趋势,也 需要逐步培养内部技术人员自主研发的能力,减少对商用软件公司的依赖。所以在规划建设容 器云平台时选择ELK作为日志组件。Elastic Search(ES)以集群的形式来存储采集到的日志数据,提供保存、查询、分析等能力。Logstash等作为日志采集的工具,根据不同的业务场景和业务需求,选择合适的工具采用合适四、组件介绍1 .日志采集ELK支持多种beats工具来采集日志数据,比如filebeats,采集日志文件的数据,Metricbeats 采集指标数据,PacketBe

11、ats采集网络数据,Topbeats采集系统资源情况数据,Heartbeats 采集运行时健康检查数据等等。Beats有很多中,也可以根据需要自己实现。ES beats概要页 面给出的关系图如下:Beats采集到的数据可以直接发送给ES或者通过logstash转换,由 Kibana来展示。回至U我们实际的需求,我们希望业务应用的日志全部打到标准输出,容器云平台通过标准输出 来采集日志。日志中心同样需要考虑支持多租户,和容器云平台多租户能力打通。租户只能看 到自己的应用和服务的日志,以及容器云平台自身和租户自身资源的运行时信息。这会涉及到 容器云平台的权限中心设计。这也是我们为什么一再强调权限中

12、心设计的重要性的原因。权限 管理是贯穿整个容器云平台能力的基础功能。作为容器云组件的日志中心的设计也离不开对权 限和多租户能力的支持。容器中应用服务日志输出到标准输出,通过Logstash的组件来从标准输出中采集日志,每个服务的每条日志有固定的格式和标签来区分。将容器日志发送到STDOUT和STDERR是Docker的默认日志行为。实际上,Docker提供了多种日志机制帮助用户从运行的容器中提 取日志信息。这些机制被称作logging driver o Docker的默认logging driver是json-file。 json-file会将容器的日志保存在json文件中,Docker负责格

13、式化其内容并输出到STDOUT 和 STDERR。路径为:/var/lib/docker/containers/-json.logDriverDE&criplionnoneNo logs are available Tor the ccxitainer and docker lags does not rsium any ouipuLjsDn fiiEThe logs are noatted as son. Trs de5aul: loggin变 dJiver Tor D-jcKei.Writes logging me&ages Sulhe iyslog acility. The syslog

14、 daemon iirusi be ruiining on the hast mac-line. Journald Writer leg imesagES to jourrald The Joui pald daemon must be running cn ttie host machine gelfWrites logtoa Graytag Etendeiog or LogstastifluentdWrites log messages toFlu=r.td (fonvEsr-G input). I he fluectd daemon mLst tie mming on Lne host

15、mac nine,awslugswrites log messag es to Amazon Clon Logs.&piunkwrites leg mess3ge& to=piurk ire http Event col lector.etHlc胪Writes log messages asEvent Tracing for Artndows iETXV) events. Only available on Windows pfatfcims.gcplaiWriter leg messages to Google Cloud Dlatfomn (GCPi Logging,ip-entrie-.

16、Writes log messages to Rapid/ .ogentnes对于日志文件存储量的评估计算,根据 Kubernetes v1.10的文档,一个node上支持不超过 100个pods的部署数量,整个集群平均每节点不超过 30个Pods 60个容器,那么单一节点 能支持的容器数是多少(假定资源足够)?至多支持100个pods,容器数可能也不超过200个。所以一个node上的日志量按照5个rotation日志文件数,每个文件200M计算,不会超 过200M x 5 x 200 = 200G,基于这样的计算,我们配置一个 node节点挂载200G的磁盘卷 用于日志文件存储。默认应用服务

17、的日志文件大小不超过200M,文件数量不超过5个,文件写满后自动覆盖最旧的文件。At vl.10, Kubernetes supports clusters with up to 5000 nodes. More specifically, we support enrhgurtians that meet all af ths following criteris: Jonicr& than 500D nodes No rr ere tha n 150 DOO total peds No more than 300DOO total containers ia ni ere tha n 10

18、0 fMd s per node应用日志是必须采集的,还有平台日志,也是监控数据的重要来源。不同的日志需要考虑分类 分级,在日志采集的时候就需要考虑清楚。平台日志更多的时候是为了平台正常运行而作为监 控的数据,需要对接监控中心。业务应用的日志可能需要根据具体业务来确定存储时间,平台 的日志基本上不需要存储很长时间,其价值往往也就是体现在实时监控用。2 .日志转换在某些情况下可能需要实现日志转换,其实logstash已经提供了强大的filter日志转换能力。 当然也可以根据需要自定义实现,这里不再赘述。日志转换比较需要关注的一点可能是字符编 码的问题。对于英文来说不存在的编码问题在我们处理中文的

19、时候可能会是个严重问题。3日志中心Server日志采集组件就相当于日志中心的Client端,采集之后的数据需要进行存储、分析、统计、查 询、展示等,这是ELK的主要功能。不过对于容器云平台来说,日志采集是重要的考虑,日志 中心Server可能会需要支持不同的方案,不只是ELK。目前我们选择的是开源的ELK为主的方 案,后期也许会根据实际需要进行调整,比如采用商用的日志工具。所以,日志中心跟容器云 平台需要松耦合的架构设计。4日志展示目前选择的Kibana是日志分析展示的工具,我们也有团队使用Greylog,Greylog可视化能力更强。具体选择什么工具,个人观点,适合自己就好。5 .配置更新不

20、管平台或是应用服务,日志采集方式或者输出目的地可能需要变更。以前我们使用log4j,要修改日志路径,需要修改配置文件,然后重启服务。使用容器云日志中心服务,则要复杂很多。不管是标准输出或是log4j等日志文件,数据最终是要被送到日志中心 Server的。日志中心 Server可能变更,日志传输接口需要调整更新,比如logging-drivers可能需要变更。容器云平台需要支持这样的需求。所以日志采集(Client)和日志Server是松耦合的架构,容器云平台 的日志采集模块和容器云平台之间也需要考虑松耦合的设计。容器云平台可以提供日志配置(作为容器云平台配置)能力,实现平台级配置更新。五、日志

21、中心组件定位容器云平台日志中心的定位,也决定着日志中心的能力建设规划和设计。从我们考虑来说,云 计算平台是基础设施,不管IaaS、PaaS需要有对基础设施资源的管理和运维能力。采用容器 技术实现的容器化PaaS平台或叫容器云平台也是一样,虽然目前一些资源管理能力还不具备, 但仍然能通过相应的技术和方式提供基础设施资源和开发、测试、托管、运维等平台能力。日 志作为每个平台每个服务都不可回避的能力,使之成为一个平台级的服务也是一种很好的选择。 在建设容器云平台时,日志功能单独拿出来实现日志中心,再逐步集成其他应用和系统的日志, 日志中心逐步会成为企业内的日志平台,最终一个企业可能就只有这一个日志中心平台。这样, 所有业务日志的归集也便于日志的分析和价值挖掘。六、结束语我们在这里提供了一种方案,但更多的是提供一种思想,在做方案设计时全面的看待问题,表 面看起来不相关的东西都存在着内在的联系。容器云平台的设计和架构,关键不是容器的问题, 容器本身只是一种工具,只是一种实现的手段,关键是为了支撑业务。要支撑业务,就不仅仅 是说我有容器就万事大吉了。如何使用容器来支撑业务,构建业务平台,满足大部分业务的持 续集成、持续运营运维等需求,才是我们需要重点思考的方面。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号