Skip to content

Commit

Permalink
feat: add eBPF plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
ForFoen committed Jun 11, 2024
1 parent 4de08ca commit cee5c12
Show file tree
Hide file tree
Showing 17 changed files with 5,208 additions and 4 deletions.
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

0 comments on commit cee5c12

Please sign in to comment.