从源码到部署:gala-filetrace完整编译安装教程(支持多版本内核)
【免费下载链接】gala-filetraceReal-time monitoring component of configuration files based on eBPF项目地址: https://gitcode.com/openeuler/gala-filetrace
前往项目官网免费下载:https://ar.openeuler.org/ar/
想要在openEuler系统中实时监控配置文件变更吗?gala-filetrace正是您需要的终极解决方案!这款基于eBPF技术的实时监控组件,能够精确追踪配置文件的每一次修改,为您的系统安全保驾护航。在本篇完整指南中,我将为您详细介绍如何从源码编译到部署运行gala-filetrace,即使面对不同内核版本也能轻松应对。
📋 准备工作与环境检查
系统要求与内核版本适配
gala-filetrace支持多种openEuler版本和架构,在开始安装前,请确认您的系统环境:
| 系统版本 | 架构 | 适配状态 | 特殊说明 |
|---|---|---|---|
| openEuler 2203_SP3 | aarch64/x86 | ✅ 完全支持 | 无需内核补丁 |
| openEuler 2403_SP1 | aarch64/x86 | ✅ 完全支持 | 需要内核helper_func |
| openEuler 2503 | aarch64/x86 | ✅ 完全支持 | 需要内核helper_func |
检查当前内核版本
uname -r如果您的内核版本为6.6.0或更高,可能需要应用内核补丁。别担心,我们会在后续章节详细说明内核升级步骤。
🔧 依赖安装全攻略
基础依赖安装(仓库存在时)
对于openEuler 2203_SP3系统,直接使用yum安装所有依赖:
sudo yum install bpftrace libcurl-devel libbpf-devel cpp-httplib-devel \ zlib-devel nlohmann-json-devel bpftool clang llvm -y重要提示:在openEuler 2203 LTS中,cpp-httplib-devel需要替换为cpp-httplib,同时确保libbpf版本在0.8以上。
Prometheus-cpp源码安装(仓库不存在时)
如果系统中没有prometheus-cpp库,需要从源码编译安装:
git clone https://github.com/jupp0r/prometheus-cpp.git cd prometheus-cpp git submodule init && git submodule update mkdir build && cd build cmake .. -DBUILD_SHARED_LIBS=ON -DENABLE_PULL=ON -DENABLE_PUSH=OFF make -j$(nproc) && sudo make install安装完成后,库文件默认位于/usr/local/include/目录。
上图展示了gala-filetrace如何通过eBPF探针获取文件名,这是监控配置文件变更的核心机制
🚀 三种编译方式详解
方法一:直接编译(推荐)
这是最简单的编译方式,适合快速部署:
# 安装所有依赖 make deps # 标准编译 make # 调试模式编译(启用bpf_printk) make DEBUG=1编译过程会自动处理所有依赖关系,生成可执行文件filetrace。
方法二:RPM包构建
如果需要将gala-filetrace打包成RPM进行分发,可以使用以下方法:
# 下载源码包 wget -O ~/rpmbuild/SOURCES/master.zip https://raw.atomgit.com/openeuler/gala-filetrace/archive/refs/heads/master.zip # 或者克隆仓库 git clone https://gitcode.com/openeuler/gala-filetrace.git # 构建RPM包 rpmbuild -ba config/gala-filetrace.spec构建成功后,RPM包会生成在/root/rpmbuild/RPMS/<arch>/目录下。
方法三:手动编译(高级用户)
如果您想深入了解编译过程,可以查看Makefile文件,了解每个编译步骤:
- BPF程序编译:
filetrace.bpf.c→filetrace.bpf.o - 骨架头文件生成:
bpftool gen skeleton - C++源代码编译:
filetrace.cpp、exporter.cpp、post.cpp、logger.cpp - 最终链接:生成
filetrace可执行文件
📦 安装与配置指南
编译安装方式
# 默认安装到系统目录 sudo make install # 自定义安装路径 sudo make install DESTDIR=/your/custom/path默认安装位置包括:
/usr/bin/filetrace- 主程序/etc/gala-filetrace/gala-filetrace.json- 配置文件/usr/lib/systemd/system/gala-filetrace.service- systemd服务文件
RPM安装方式
如果您选择了RPM包构建,安装更加简单:
cd ~/rpmbuild/RPMS/<arch> sudo rpm -ivh gala-filetrace-<version>-<release>.<arch>.rpm配置文件详解
gala-filetrace的配置文件位于config/gala-filetrace.json,主要配置项包括:
| 配置项 | 默认值 | 说明 |
|---|---|---|
log_level | "info" | 日志级别(debug/info/warn/error) |
config_list | ["/etc/hosts"] | 要监控的配置文件列表 |
publish | false | 是否推送到ragdoll |
exporter_address | "0.0.0.0:9090" | Prometheus监控地址 |
ragdoll_api | "http://localhost:8080/conftrace/data" | Ragdoll API地址 |
您可以根据需要修改config_list,添加您关心的配置文件路径。
🧩 内核升级与补丁应用
为什么需要内核升级?
在内核6.6.0及以上版本中,无法直接从task_struct中获取进程的fd列表。gala-filetrace需要通过在内核中增加fd2pathhelper函数接口来实现文件路径获取。
内核源码获取与准备
# 下载内核源码包 sudo yum download kernel-source-6.6.0-72.6.0.56.oe2503.x86_64 # 安装内核源码 sudo rpm -ivh kernel-source-6.6.0-72.6.0.56.oe2503.x86_64* # 复制当前内核配置 cp /boot/config-$(uname -r) .config应用内核补丁
gala-filetrace项目提供了必要的内核补丁,位于patch/目录:
# 应用补丁文件 patch -p1 < /path/to/bpf-add-new-helper-fd2path.patch编译与安装新内核
# 编译内核 make O=out # 安装内核模块 make O=out modules_install # 安装内核映像 make O=out install编译完成后,重启系统选择新内核即可。
🚦 启动与验证
手动启动方式
# 直接运行程序 filetracesystemd服务启动
# 启动服务 sudo systemctl start gala-filetrace # 设置开机自启 sudo systemctl enable gala-filetrace # 查看服务状态 sudo systemctl status gala-filetrace验证监控功能
查看日志输出:
sudo tail -f /var/log/filetrace.log访问Prometheus指标: 打开浏览器访问
http://<服务器IP>:9090/Metrics,查看监控指标测试配置文件监控:
# 修改被监控的配置文件 sudo echo "test" >> /etc/hosts观察日志中是否记录到文件变更事件
🔧 常见问题与解决方案
权限错误处理
如果遇到以下错误:
permission error while running as root; try raising 'ulimit -l'? current value: 64.0 KiB.解决方法:
# 增加内存锁定限制 ulimit -l 819200依赖库版本问题
如果编译时提示libbpf版本过低:
# 检查当前libbpf版本 rpm -q libbpf-devel # 升级libbpf sudo yum update libbpf-develBPF程序加载失败
如果BPF程序无法加载,检查内核配置:
# 确认BPF支持已启用 cat /boot/config-$(uname -r) | grep BPF确保以下选项为y:
CONFIG_BPF=yCONFIG_BPF_SYSCALL=yCONFIG_BPF_JIT=y
📊 监控功能扩展
自定义监控文件列表
编辑配置文件,添加您关心的配置文件:
"config_list": [ "/etc/hosts", "/etc/passwd", "/etc/ssh/sshd_config", "/etc/sysctl.conf", "/etc/resolv.conf" ]集成Prometheus监控
gala-filetrace内置了Prometheus exporter,您可以直接配置Prometheus抓取:
# prometheus.yml 配置示例 scrape_configs: - job_name: 'filetrace' static_configs: - targets: ['localhost:9090']对接gala-ragdoll
如果您有gala-ragdoll环境,可以启用数据推送:
{ "publish": true, "ragdoll_api": "http://ragdoll-server:8080/conftrace/data" }🎯 总结与最佳实践
通过本教程,您已经掌握了gala-filetrace的完整编译安装流程。总结几个关键要点:
- 环境检查先行:确认系统版本和内核版本,决定是否需要内核升级
- 依赖安装要完整:特别是prometheus-cpp库的安装
- 编译方式灵活选择:根据需求选择直接编译或RPM打包
- 内核补丁按需应用:只有内核6.6.0+才需要应用fd2path补丁
- 配置要合理:根据实际监控需求调整配置文件
- 服务管理用systemd:便于监控和故障排查
gala-filetrace作为openEuler生态中的重要监控组件,为系统配置文件提供了强大的实时监控能力。无论是安全审计、配置变更追踪还是运维监控,它都能提供可靠的技术支持。
现在就开始使用gala-filetrace,为您的系统配置文件加上一双"火眼金睛"吧!👀
【免费下载链接】gala-filetraceReal-time monitoring component of configuration files based on eBPF项目地址: https://gitcode.com/openeuler/gala-filetrace
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考