可观测性为MICROSERVICES

微服务可观察性问题

微服务是现代开发模型的一部分,该模型侧重于小型、松散耦合、独立部署的服务,而不是单一的代码。像Netflix、Twitter和亚马逊这样的公司是这种方法的先驱交通流在一个AWS AZ内的Netflix服务之间)。

微服务很难调试,因为行为可能是紧急的,系统某个部分的小故障或故障可能导致大规模中断。为了调试单个请求,我们可能不得不跨越许多服务和网络边界。我们不能仅仅通过日志文件进行grep,或者依赖于存储聚合指标。我们需要能够提出问题,并将数据分解到单个请求、用户或端点等级别。

我们构建Honeycomb就是为了回答这些问题——处理微服务、无服务器、分布式系统、多语言持久性、容器、CI/ cd——并构建对系统和软件实际工作方式的理解。你不能调试你不知道的东西。

现在开始

Netflix微服务流量图


可观测性:结构化事件

要做什么

构建可观察性到你microservices:

  • 仪器代码冗长地。一切都源于此。用尽可能多的上下文和细节包装每个网络或服务调用。
  • 在整个堆栈中为每个服务和每个数据请求保持唯一的请求标识符(如果没有其他的话,将它放在db注释字段中)。
  • 触发具有丰富上下文的事件,包括高基数数据UUIDuser_idevent_id、shopping_cart_id等等。像这样!
  • 你的数据结构。
  • 不要等到你能完美地测量所有东西。从边缘开始,然后测量每一个疼痛点。随着时间的推移,您将逐步实现完整的检测覆盖(如测试的代码覆盖)。
  • 不要忘记从数据库和客户的角度收集事件:他们通常会不同意我们内部关于时间和错误的观点——这是有用的信息。

可观察性需要丰富的检测,不是轮询和监视阈值或定义的健康检查,而是随便问个问题关于你的软件如何工作。一个可观察的系统是一个你可以完全询问的系统。