# 《Seckill秒杀系统》第106章:日志治理概述、原则与架构

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:掌握日志可视化的基本概念与落地原则,从理论层面了解日志治理的重要性,并能够灵活将实现方案应用到自身实际项目中。

大家好,我是冰河~~

日志对于系统的建设是非常重要的,我们可以通过日志分析出系统的执行流程、性能瓶颈,并且能够快速定位出系统的故障所在。如果我们只是能够从命令行查看日志的话,也是非常不方便的,此时,我们需要对系统的日志进行治理。

# 一、前言

每个系统都会或多或少的记录一些日志信息,这些日志不仅能够记录了系统运行过程中的执行流程,更是在系统出现故障时,我们能够快速定位问题和排查故障的依据,通过日志,我们还能够快速了解到整个系统的性能瓶颈,从而更加高效和有针对性的优化系统,并提升系统的性能。可以这么说,如果我们能够非常方便的观测到日志,那么对于我们后期维护系统是非常方便的。

# 二、本章诉求

了解日志治理的三大组成与日志原则,在此基础上进一步掌握日志治理的架构,结合这些基本知识掌握秒杀系统中的日志治理,并结合自身实际情况将其灵活应用到自身实际项目中。

# 三、日志治理三大组成

其实,对于日志治理来说,有三大组成部分,分别是:指标(Metrics)日志(Logging)跟踪(Tracing),如图106-1所示。


彻底理解和掌握日志的三大组成部分,有助于我们更好的实现日志治理。

# 3.1 指标

指标可以用作监控的基础,比如当前系统的QPS、TPS、TTL等指标,内存、CPU、磁盘的占用率等等,可以都称之为指标数据。总之,指标就是在某段时间内统计出来的结果数值或者度量系统运行情况的度量值。

# 3.2 日志

系统输出的日志信息,可以分为系统日志和业务日志,日志治理的基础就来源于输出的日志信息。如果系统在立项时,在系统架构层面就约束好日志的输出格式,那后续就非常便于日志处理系统的自动索引和查询。这里,建议大家试用结构化的方式读取日志,例如JSON格式等等。

# 3.3 跟踪

如果我们部署的只是单体应用系统,那我们查看日志可以直接通过命令行,或者可视化界面就行了。但是一旦升级为分布式或微服务应用,系统中使用了各种中间件时,我们需要对日志进行跨服务的跟踪,深入了解请求与响应的信息,并能够快速观测到系统出现的异常和错误信息,并定位到系统的性能瓶颈。

# 四、日志治理基本原则

如果是单体应用,日志治理就非常简单。如果是分布式或者微服务应用,可能会部署成数十台、数百台的服务实例,如果在这些服务中通过排查日志定位到指定的错误日志或者关联各个服务的日志进行查询,那就非常困难了。所以,在日志治理上,我们要遵循一定的原则,如图106-2所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码