主要是两篇论文的汇总 《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实现方法的介绍。