监控日志是程序员在观察程序运行稳定性以及维护软件的时候会经常用到的一个工具,而今天我们就通过案例分析来了解一下,监控功能与日志功能的特点。
一、监控
Monitoring(监控)举例来说就是:定期体检。
使用监控系统把需要关注的指标采集起来,形成报告,并对需要关注的异常数据进行分析形成告警。 特点是:低频,定期
定量这也是Prometheus的架构做得非常简单的原因,Monitoring的需求并没有包含非常高的并发量和通讯量。反过来说:高并发、大数据量的需求并不适用于Monitoring这个点。 二、链路追踪
Tracing(链路追踪)举例来说就是:对某一项工作的定期汇报。某个工作开始做了A,制作A事件的报告,收集起来,然后这个工作还有B、C、D等条目,一个个处理,然后都汇总进报告,终的结果就是一个Tracing。大数据日志分析
特点是:
高频,巨量,有固定格式
因为Tracing是针对某一个事件(一般来说就是一个API),而这个API可能会和很多组件进行沟通,后续的所有的组件沟通无论是内部还是外部的IO,都算作这个API调用的Tracing的一部分。
可以想见在一个业务繁忙的系统中,API调用的数量已经是天文数字,而其衍生出来的Tracing记录更是不得了的量。其特点就是高频、巨量,一个API会衍生出大量的子调用。
三、日志
Logging(日志)举例来说就是:废品回收站。各种各样的物品都会汇总进入到配品回收站里,
然后经过分门别类归纳整理,成为各种可回收资源分别回收到商家那里。一般来说我们在大型系统中提到Logging说的都不是简单的日志,而是日志聚合系统。
从本质上来说,Monitoring和Tracing都是Logging,Logging是这三者中覆盖面大的超集,而前两者则是其一部分的子集。Logging麻烦的是,开发者也不会完全知道后记录进入到日志系统里的一共会有哪些东西,只有在使用(检索)的时候才可能需要汇总查询总量中的一部分。