Skip to content

feat: add eBPF plugin #964

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion agent/metrics_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
_ "flashcat.cloud/categraf/inputs/diskio"
_ "flashcat.cloud/categraf/inputs/dns_query"
_ "flashcat.cloud/categraf/inputs/docker"
_ "flashcat.cloud/categraf/inputs/eBPF"
_ "flashcat.cloud/categraf/inputs/elasticsearch"
_ "flashcat.cloud/categraf/inputs/exec"
_ "flashcat.cloud/categraf/inputs/filecount"
Expand All @@ -37,6 +38,7 @@ import (
_ "flashcat.cloud/categraf/inputs/http_response"
_ "flashcat.cloud/categraf/inputs/influxdb"
_ "flashcat.cloud/categraf/inputs/ipmi"
_ "flashcat.cloud/categraf/inputs/iptables"
_ "flashcat.cloud/categraf/inputs/ipvs"
_ "flashcat.cloud/categraf/inputs/jenkins"
_ "flashcat.cloud/categraf/inputs/jolokia_agent"
Expand Down Expand Up @@ -92,7 +94,6 @@ import (
_ "flashcat.cloud/categraf/inputs/whois"
_ "flashcat.cloud/categraf/inputs/xskyapi"
_ "flashcat.cloud/categraf/inputs/zookeeper"
_ "flashcat.cloud/categraf/inputs/iptables"
)

type MetricsAgent struct {
Expand Down
7 changes: 7 additions & 0 deletions conf/input.eBPF/eBPF.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# # collect interval
# interval = 15
[[instances]]
interface = "ens38"

[[instances]]
interface = "ens33"
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ require (
github.com/clbanning/mxj/v2 v2.5.5 // indirect
github.com/dennwc/ioctl v1.0.0 // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/frankban/quicktest v1.14.3 // indirect
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
github.com/goccy/go-json v0.10.2 // indirect
Expand Down Expand Up @@ -138,6 +137,7 @@ require (
github.com/bits-and-blooms/bitset v1.13.0
github.com/blang/semver/v4 v4.0.0
github.com/bmatcuk/doublestar/v3 v3.0.0
github.com/cilium/ebpf v0.12.3
github.com/coreos/go-systemd/v22 v22.5.0
github.com/dennwc/btrfs v0.0.0-20230312211831-a1f570bd01a1
github.com/ema/qdisc v1.0.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -299,8 +299,8 @@ github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHqu
github.com/frankban/quicktest v1.11.0/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s=
github.com/frankban/quicktest v1.11.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s=
github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/freedomkk-qfeng/go-fastping v0.0.0-20160109021039-d7bb493dee3e h1:g8x+P3+xjxt7c53bucQW0ymvj+whjKfCLZH+99UMLS0=
github.com/freedomkk-qfeng/go-fastping v0.0.0-20160109021039-d7bb493dee3e/go.mod h1:UcrAEbxjAhuq5beDj0conKRHGUhBPLkFt8aUmN/jrHY=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
Expand Down
21 changes: 21 additions & 0 deletions inputs/eBPF/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# eBPF

利用ebpf和xdp技术进行网络数据采集

目前插件逻辑为在XDP挂载点采集RoCE网络数据,仅需设置网卡名称
后续可自定义更强大的功能
## 环境要求
本插件利用cilium提供的eBPF-go库,需要先配置eBPF环境,详细请参考[教程](https://ebpf-go.dev/guides/getting-started/),在Linux内核版本较低的机器上可能无法部署

在部署后可通过以下指令生成脚手架代码
```
go generate inputs/eBPF/eBPF.go

Compiled /home/xxx/categraf/inputs/eBPF/bpf_bpfel.o
Stripped /home/xxx/categraf/inputs/eBPF/bpf_bpfel.o
Wrote /home/xxx/categraf/inputs/eBPF/bpf_bpfel.go
Compiled /home/xxx/categraf/inputs/eBPF/bpf_bpfeb.o
Stripped /home/xxx/categraf/inputs/eBPF/bpf_bpfeb.o
Wrote /home/xxx/categraf/inputs/eBPF/bpf_bpfeb.go
```
利用以上脚手架代码进行eBPF相关操作
124 changes: 124 additions & 0 deletions inputs/eBPF/bpf_bpfeb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added inputs/eBPF/bpf_bpfeb.o
Binary file not shown.
124 changes: 124 additions & 0 deletions inputs/eBPF/bpf_bpfel.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added inputs/eBPF/bpf_bpfel.o
Binary file not shown.
Loading