ViperProbe: Using eBPF Metrics to Improve Microservice Observability

主要是两篇论文的汇总 《ViperProbe: Using eBPF Metrics to Improve Microservice Observability》 和 《ViperProbe: Rethinking Microservice Observability with eBPF》

ViperProbe,一个基于eBPF的微服务收集框架。 在副本集群上进行测试,收集metrics。通过eBPF实现动态调整(怎么动态调整没说)。

主要的insight是,虽然微服务种类繁多,但其下的基础设施框架(如服务框架)却在系统间引入了显著的统一性。 具体来说,许多微服务的部署都采用了微服务设计模式。 这些组件的静态和共享性质使它们更适合于离线分析,从而减少了在线技术的复杂性和开销。

Design

论文的主要贡献是两部分

  • 离线确定critical metrics
  • 在线调整

Critical Metrics

识别Critical Metrics有两个关键的挑战

  • 识别metrics的搜索算法:文中用的k-shape
  • 一种能使这种搜索算法生效的离线框架:在文章的初步原型中,使用完整生产网络的副本进行测试

Dynamic Metrics Implementation

在eBFP上建立ViperProbe是因为它的表现力、深度、可配置性以及比Dtrace更广泛的支持。

Implementation

Container Centric Design

  • ViperProbe Workers read out eBPF maps and translate PID namespaces to container ID’s using /proc before pushing the data to Kafka
  • ViperProbe eBPF programs read a config, using the current PID namespace as the key, from shared maps and then either return if disabled, sample if sampled, or run normally

Sampling

给了几种sampling实现方法的介绍。