kubebpf 是基于 ebpf 技术在 kubernetes 环境中实践可观测性建设的项目,提供对上层业务零侵扰的方式采集业务的调用日志,服务的 R.E.D 指标等可观测性数据,采用 influxdb 对数据进行持久化,采用 grafana 进行可视化,支持一键安装,可以快速将 ebpf 能力在你的 kubernetes 环境中进行落地。用于采集 ebpf 数据的 agent 支持扩展,你可以开发自己的 ebpf 程序来采集需要的数据,并且可以将数据上报到其他系统中。

- HTTP流量分析, 基于 BPF_PROG_TYPE_SOCKET_FILTER 分析每一次的 HTTP 流量,并且跟 kubernetes 元数据关联,还原出每个 pod 的 http 请求,包含入方向以及出方向。
- R.E.D 指标统计,基于每个 pod 的 http 流量,计算出每个 pod 的 QPS,Error Rate,Latency等性能指标
- 全局拓扑,基于http流量,绘制出整个 kubernetes 环境中的调用拓扑。
- DNS 流量分析
- Mysql 流量分析
- 进程CPU火焰图
- ...更多
- 操作系统内核版本 >= 3.19。
- Kubernetes版本 >= 1.16。
- 为了防止监控数据将磁盘打满,因此限制了influxdb的bucket数据保存时间为2天,可以根据具体情况进行调制配置。
- influxdb默认为单点部署,不建议生产环境使用,你可以根据自身场景进行扩展将数据接入自己的环境中。
- agent 通过 daemonset 部署在每一个节点上,通过 ebpf 采集可观测性数据,并将其写入到 influxdb中。
- influxdb 持久化存储。
- grafana 可视化组件。
安装目录
cd install由于grafana跟influxdb均需要持久化存储,因为需要事先确定存储的位置,通过配置文件来设置。
vim config.ini
# 如下是一个配置示例, 需要事先在节点上创建出对应的目录
[global]
NAMESPACE=kubebpf
[influxdb]
;influxdb requires persistent storage. please create a directory on the node
INFLUXDB_HOST=cn-hangzhou-1
INFLUXDB_PV_PATH=/data/pv-kubebpf-influxdb
[grafana]
;grafana requires persistent storage. please create a directory on the node
GRAFANA_HOST=cn-hangzhou-1
GRAFANA_PV_PATH=/data/pv-kubebpf-grafana最后执行安装脚本
sh install.sh#卸载
sh uninstall.sh编译agent
make
#会生成agent的二进制文件,以及在target目录下生成每一个插件的 ebpf 编译之后 .o文件。 镜像构建
make imagegrafana镜像构建
# grafana 采用 provisioning 来配置 datasource 跟 dashboard, 对dashboard的修改需要重新构建grafana镜像。
cd install/grafana/image
docker build .- ebpf a revolutionary Linux kernel technology.
- cilium eBPF-based Networking, Security, and Observability.
- influxdb Scalable datastore for metrics, events, and real-time analytics.
- deepflow Application Observability using eBPF.
- pixie Instant Kubernetes-Native Application Observability.
- grafana The open and composable observability and data visualization platform.
- telegraf The plugin-driven server agent for collecting & reporting metrics.
- owlk8s A K8s ClusterIP HTTP monitoring library based on eBPF.
KubeProber 遵循 Apache 2.0 许可证。有关详细信息请参见 LICENSE 文件。
