从gitlab上clone本项目,注意,需要添加--recursive
以clone子模块
git clone --recursive https://gitlab.eduxiji.net/zhangdiandian/project788067-89436.git
运行编译命令
sudo make install
编译完成后的所有可执行文件会在build目录下,eunomia可执行文件位于./build/bin/Debug/目录下,测试代码位于./build/test/目录下。使用
sudo ./eunomia run process
即可开启eunomia的process
具体的命令行操作方法可以使用
sudo ./eunomia --help
进行查看
各项命令测试结果如下:
-
process模块测试
-
tcp模块测试
-
syscall模块测试
-
files模块测试
-
opensnoop模块测试
-
mountsnoop模块测试
-
sigsnoop模块测试
-
tcpconnlat模块测试
-
tcprtt模块测试
-
capable模块测试
-
oomkill模块测试
Grafana是一个开源的可视化和分析平台。允许查询、可视化、告警和监控的不同数据,无论数据存储在哪里。简单地说支持多种数据源,提供多种面板、插件来快速将复杂的数据转换为漂亮的图形和可视化的工具,另监控可自定义告警监控规则。Prometheus是高扩展性的监控和报警系统。它采用拉取策略获取指标数据,并规定了获取数据的API,用户可以通过exporter收集系统数据。
Eunomia能够将自定义的BPF跟踪数据导出到prometheus,它基于Prometheus-CPP这个SDK实现了prometheus获取数据的API,prometheus可以通过这些API主动拉取到自定义的BPF跟踪数据。具体来说,我们只需要在对应的tracker中嵌入BPF代码,运行Eunomia就可以实现导出BPF跟踪数据,而这些数据是可以被prometheus主动拉取到的,进而实现BPF跟踪数据的存储、处理和可视化展示。
Prometheus信息可视化测试:
- 配置prometheus添加eunomia数据源
job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
job_name: "eunomia_node"
static_configs:
- targets: ["localhost:8528"]
-
grafana
我们在 github 上面部署了 github actions,包含自动集成、自动构建、自动测试等功能: