可观测性

可观测性

首先可观测性的三个维度,logging metrics tracing
应用中是有自己的日志系统的,那么为了统计metrics,同一份数据需要记录两次吗?
如何划分这个界线?毫无疑问,Metrcis和Logging是有数据重叠的。我们可以认为Metrics是对可观测性指标的一种度量,例如请求数,函数调用次数等,但是对于Metrcis来说,它有着自己独特的属性【聚合】。另外,我们知道我们记录日志(Logging)是以事件为元数据,即记录当前发生了什么,这是Logging的关注属性。
在构想产品全链路追踪系统时,类似的问题再一次出现,我在记录Tracing数据的时候,或多多少会有Logging的数据,在Tracing中我认为重要的是链路数据指标属性,例如调用了哪些函数栈,该请求处理时间是多少等等,同样我们会在函数中记录得到了哪些请求,即Logging,但Tracing也有着自己独特的属性——请求范围。

关于监控指标的计算与实时统计,目前想到的两种方案

  • 一种是硬编码,侵入性的打点
    这种易于扩展,定制结构化的逻辑

  • 一种是根据日志来收集信息
    这种要求有规范化的日志格式,约束起来容易出问题

我觉得常规监控组件应该提供便利的SDK来进行指标的计算,底层是不是用打日志的方式统计实现的就不是那么重要了。

在过去,一个物理机器的状态确实可以通过几个监控指标描述,但是随着我们的系统越来越复杂,我们的观测对象正渐渐的从「Infrastructure」转到「应用」,观察行为本身从「Monitoring(监控)」到「Observability(观测)」。虽然看上去这两者只是文字上的差别,但是请仔细思考背后的含义。

参考