Skip to content

sixther-dc/kubebpf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

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

功能特性

  • 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默认为单点部署,不建议生产环境使用,你可以根据自身场景进行扩展将数据接入自己的环境中。

设计说明

文档

架构图

Architecture

  • 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 image

grafana镜像构建

# 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 文件。

About

A Kubernetes-Native Application based on eBPF.

Resources

License

Stars

Watchers

Forks

Packages

No packages published