SideCar模式:类似于连接在摩托车旁的边车。在该模式中,sidecar服务被附加到主应用程序中,并为应用程序提供其所支持的特性。sidecar也与主应用程序有相同的生命周期,与主应用程序一起创建和退出。。
目前,微服务架构被广泛应用于软件系统架构中,相比于传统的单体应用而言,微服务架构按照功能不同对应用系统划分成为多个功能模块。多个功能模块支持分布式部署,无需部署在同一主机上。同时由于安全和稳定性的要求,每个功能模块均支持集群部署。
基于现在的微服务部署架构,会造成日志分散在多个服务器上,且同一个功能模块由于集群部署,打印的日志没有集中在一个文件中。由此增加了定位问题的难度和运维人员的操作复杂度。
本文设计一种基于SideCar模式的面向分布式集群部署系统的日志管理方法。通过进程间异步调用的方式,将日志通过统一的日志管理系统进行记录和管理,以解决日志分散、定位日志困难的问题。
1.构建SideCar模块,如图1。日志管理方法的所有流量进出全部通过SideCar实现,在SideCar中,包含身份认证、鉴权等功能。
2.构建日志管理系统主体,主要分为以下功能模块:加密模块,分类模块,存储模块,检索模块,housekeeping模块以及触发器模块。
3.加密模块主要应用于日志中包含敏感信息的场景,可有效增强系统的安全性,主要实现方式如图2所示:用户配置指定的格式,当输入的日志信息满足用户配置的格式时,则对相应的日志进行加密处理。
4.分类模块用于对输入的日志进行分类处理。客户端在发送日志时传入微服务名称、实例名称和日志等级,分类模块将微服务名称相同的日志标记同一个文件,同时在日志每行头部增加实例名称信息。
5.存储模块将步骤4中分类好的日志信息写入日志文件,同时对日志大小和时间进行限制。
6.检索模块用于快速查询日志内容,用户调用接口,传入关键字,检索模块返回包含关键字的日志信息。检索模块还可以通过配置,对每次传入的日志信息进行检索。
7.触发器模块用于调用外部系统,和步骤6中的检索模块配合使用。当满足检索条件时,可以通过调用外部系统完成日志监控,日志告警等功能,如图3所示。
8.housekeeping模块用于对日志文件检查,删除或者转储过时日志。同时对磁盘情况进行检测,及时扩容磁盘或对磁盘故障进行告警。
总结
利用SideCar模式构建日志管理系统,提升了日志管理系统的灵活性,支持多语言系统的日志管理。该方法适用于复杂分布式集群部署架构系统的日志管理,可以将分散的日志统一管理。并且采用异步调用的方式完成,不会对系统本身的运行速度造成影响。
针对日志管理系统,提供了加密、检索、存储、触发器等功能,可以通过编排完成复杂度更高的功能。
附图
图1、总架构设计图
图2、加密模块示意图
图3、触发器功能示意图。