eBPF系列之:DeepFlow 扩展协议解析实践(MongoDB协议与Kafka协议)
概述:
MongoDB
目前使用广泛,但是缺乏有效的可观测能力。
DeepFlow
在可观测能力上是很优秀的解决方案,但是却缺少了对 MongoDB
协议的支持。
该文是为 DeepFlow
扩展了 MongoDB
协议解析,增强 MongoDB
生态的可观测能力,简要描述了从协议文档分析到在 DeepFlow
内实现代码解析的过程拆解。
MongoDB
目前使用广泛,但是缺乏有效的可观测能力。
DeepFlow
在可观测能力上是很优秀的解决方案,但是却缺少了对 MongoDB
协议的支持。
该文是为 DeepFlow
扩展了 MongoDB
协议解析,增强 MongoDB
生态的可观测能力,简要描述了从协议文档分析到在 DeepFlow
内实现代码解析的过程拆解。
VictoriaMetrics项目中的流聚合能力是从1.86版本开始整合到vmagent的,具体可参考: https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3460 从源码分析来看,流集合能力如图:
部署过程和指令参考: pixie install
Pixie Edge Module 边缘模块(PEM): Pixie’s agent, installed per node. PEMs use eBPF to collect data, which is stored locally on the node. Pixie的代理,安装在每个节点上。PEM使用eBPF收集数据,这些数据存储在节点本地。
Prometheus
是一个开源的监控与时间序列数据库系统,在近年来得到了越来越广泛的应用。
官方的架构图如图所示:
本系列文章会以Prometheus
的在一个企业里的部署架构演进过程中逐步理解和深入各种组件和概念。
先通过下图简单了解这个演进发展史
|
|
|
|
|
|
|
|
4.8.6-x86_64-linode78 | 4.9.15-x86_64-linode78 | 非linode的官方4.10内核(generic) | |
---|---|---|---|
没有启动BBR正常情况 | 3.27MB/s | 3.36MB/s | 没有测试 |
启动BBR正常情况 | 没有测试 | 3.45MB/s | 2.31MB/s |
启动BBR丢包1% | 3.19MB/s | 没有测试 | 没有测试 |
启动BBR丢包10% | 没有测试 | 3.21MB/s | 2.81MB/s |
启动BBR丢包30% | 97.30kB/s(在20分钟内没有传输完成中断得到的最后结果) | 1.35MB/s | 1.15MB/s |
|
|
|
|
|
|
参考 Hypriot 的博客,我买了1块Rasp2代板和2块Rasp3代板。
其中2代默认安装了 Hypriot 的系统。3代板如果您有兴趣可以自己参考 《Building a 64bit Docker OS for the Raspberry Pi 3》 这篇文章编译一套64bit的系统。也可以直接下载作者的 已编译好镜像地址 中压缩包。
我用树莓派搭建docker集群环境,参考 Hypriot 的博客
安装docker
选择Hypriot(截止到2017年3月版本是docker 1.11.1)