云原生应用平台日志管理系统与实践
高丽红 马建骁
西安中兴新软件有限责任公司 陕西省西安市 710114
1 引言
近年来,以容器、微服务、自动化运维和弹性基础设施为核心的云原生应用架构[1],正逐步取代传统的单体式和虚拟机架构,并成为大型互联网企业、金融、政务、制造等行业数字化转型的重要基石。
然而,微服务和容器化后,实例的生命周期更短暂、节点更动态,服务数量数倍上升,应用、系统及中间件日志格式各异,语义标准繁杂,阻碍了日志数据的汇聚、整合、分析与展示。
本文提出的云原生平台日志管理系统,在保障高性能与高扩展性的同时,强化安全合规能力,可实现日志全生命周期的统一管理。
2 系统模型
本文详细描述了一种覆盖日志生成、收集、存储、采集、分析和可视化[2]的全生命周期视角的云原生平台日志管理系统。
2.1 日志生成
依据日志生成的场景,日志记录可分为如下几类:
1)系统日志:用于记录系统环境或系统运行相关的信息,例如系统的启动、运行/异常/挂死、退出等相关的日志。
2)应用日志:每个微服务运行过程中记录的自身的运行日志,记录业务逻辑、错误信息和重要事件。
3)操作日志:记录运营管理平台的访问信息,包括请求时间、请求来源、响应时间和响应结果等。
4)安全日志:安全事件的信息,如:身份验证失败、权限违规等。
首先要统一日志生成的记录格式,以便聚合与分析。日志记录格式示例如下:
timestamp:"2025-01-01T12:34:56.123456Z "; /*时间戳*/level:"INFO"; /* 日志等级:Debug,Info,Warn,Error,Fatal*/service:"user-service" ; /* 日 志 类 型 :System,user-service,Operation,Security*/file:"service_sym";/*日志所在文件*/line: "7818" ; /* 日志所在行号*/message:"Filecreated successfully";/*日志内容 */ userId:"1"; /* 区分存储系统、位置等 */
2.2 日志收集
日志收集是日志管理的关键环节,目前广泛应用的日志收集方式包括:
1)集中式日志收集:在每个服务中部署的日志代理,将日志实时发送到日志服务器。这种方式较容易受链路状态影响,适用于本地没有存储设备,需要借助远端存储的场景。
2)Sidecar 模式:在每个容器中运行日志收集器,独立于应用服务。这种模式可以轻松扩展日志收集能力,而不影响主服务的运行,也不会受住服务运行状态的影响。但随着服务数量的增加,管理大量微服务的日志可能会变得复杂或难以统一。另外,本方式增加了额外的容器,导致额外的资源开销,增加系统复杂性,以及潜在网络延迟等。
3)API 日志接口:通过编程接口将应用程序生成的日志信息发送到集中式日志管理系统。本方式具备良好的实时性和更高的灵活性。
2.3 日志存储
日志存储过程的关键步骤:
1)日志校验:存储日志之前先对接收到的日志进行格式验证,确保数据的完整性和正确性。另外,需要对日志中的敏感信息进行脱敏处理,确保用户隐私不被泄露。
2)日志缓存:通过临时存储接收来自不同微服务的日志信息。日志数据被生成后,首先被发送到缓存中而不是直接写入到持久存储(如日志文件或数据库)。以提高写入效率,减少对存储系统的压力。
3)日志写入:当日志缓存达到预定的容量限制或预设的时间间隔时,系统将日志数据写入到持久存储中。在写入过程中,要捕获可能发生的错误,即确保系统能够处理如文件系统满、权限问题等异常情况。
4)轮转与压缩:为节省存储空间和提升传输效率,写入日志后实施轮转 记 录 与 压 缩 。 日 志 文 件 采 用 时 间 戳 或 序 列 号 命 名 , 例 如app-log-2025-01-01-01.log,当达到限定的文件大小时,日志会被轮换记录到下一个日志文件中。已记录满的日志文件被高效的压缩,压缩成功后再删除压缩前的文件。用于轮转与压缩的日志记录文件的数量根据记录日志生成的速度确定。如:10,10,10 模式。即,10 个文件用于循环被写入日志,10 个文件循环被压缩,10 个文件被循环被传送至日志管理平台。
2.4 日志采集
日志采集可分为如下两类应用场景:
1)一键采集:在日志管理平台选择需要采集的日志内容,系统将选定的日志信息实时传送到日志管理平台。
2)定时采集:在日志管理平台配置日志采集间隔,系统按照采集间隔将选定的日志记录上传到日志管理平台或指定服务器。
2.5 日志分析与可视化
日志被上传到日志管理平台后,将被重新整合,以便于分析和呈现。常见的日志分析步骤包括:
1)聚合分析:将同类日志进行聚合,识别趋势和异常。对于小规模的日志数据,推荐使用类似 Excel 工具的处理分析,如:数据筛选、排序、统计计算、图表生成等。对于大规模的日志数据,可通过内嵌工具管理插件完成对日志管理平台数据的搜索、分析和可视化等。
2)实时监控:通过可视化工具将从日志中提取的数据直观地呈现动态变化。也可以通过工具对日志字段进行解析,连通实时数据流,及时检测分析异常情况,通过邮件、短信等形成报警机制,确保及时通知运维人员。
3 实践案例分析
3.1 某通信公司日志管理平台
采用统一的日志管理框架,由日志管理模块和运行支撑系统协同完成日志管理。由运行支撑系统提供统一的 API 接口,本地有存储设备时,直接将各组件或容器生成的日志进行缓存并写入文件;本地没有存储设备时,通过日志代理传送给远端进行缓存和存储。日志管理模块负责日志存储空间中日志文件的轮转、压缩,以及上传至日志管理平台。
3.2 平台成效
日志采集命中率 98% ,关键时刻日志无丢失;
故障溯源效率提升 4 倍,分钟级发现异常和定位问题;
异常告警误报率下降 80% ,极大减轻自动化运维报警压力成本优化显著,单位存储运营成本相对同比下降 25% 。
4 未来趋势与展望
随着专业领域大模型的不断完善,利用机器学习技术,通过对日志进行智能分析,可提前预测潜在的故障并提出优化建议。日志指标与调用链,支撑业务健康度和性能等可进行全景化展示。
5 结论
本文描述的云原生应用平台日志管理系统,可支持跨不同云环境下日志的生成、收集、存储、采集和可视化分析,有效提高日志管理效果和效率。正如云原生应用所展现的灵活性与弹性,未来的日志管理也必将不断调整与演进,以适应不断变化的技术和业务需求。
参考文献
[1]田辉,马茜.云原生技术研究[J].中国信息界,2024,No.362(02).
[2]李丹.云原生架构的监控与日志管理.科技世界,2024(18).