从源码到部署:gala-filetrace完整编译安装教程(支持多版本内核)
2026/7/13 17:08:00 网站建设 项目流程

从源码到部署: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_SP3aarch64/x86✅ 完全支持无需内核补丁
openEuler 2403_SP1aarch64/x86✅ 完全支持需要内核helper_func
openEuler 2503aarch64/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.cfiletrace.bpf.o
  • 骨架头文件生成:bpftool gen skeleton
  • C++源代码编译:filetrace.cppexporter.cpppost.cpplogger.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"]要监控的配置文件列表
publishfalse是否推送到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

编译完成后,重启系统选择新内核即可。

🚦 启动与验证

手动启动方式

# 直接运行程序 filetrace

systemd服务启动

# 启动服务 sudo systemctl start gala-filetrace # 设置开机自启 sudo systemctl enable gala-filetrace # 查看服务状态 sudo systemctl status gala-filetrace

验证监控功能

  1. 查看日志输出

    sudo tail -f /var/log/filetrace.log
  2. 访问Prometheus指标: 打开浏览器访问http://<服务器IP>:9090/Metrics,查看监控指标

  3. 测试配置文件监控

    # 修改被监控的配置文件 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-devel

BPF程序加载失败

如果BPF程序无法加载,检查内核配置:

# 确认BPF支持已启用 cat /boot/config-$(uname -r) | grep BPF

确保以下选项为y

  • CONFIG_BPF=y
  • CONFIG_BPF_SYSCALL=y
  • CONFIG_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的完整编译安装流程。总结几个关键要点:

  1. 环境检查先行:确认系统版本和内核版本,决定是否需要内核升级
  2. 依赖安装要完整:特别是prometheus-cpp库的安装
  3. 编译方式灵活选择:根据需求选择直接编译或RPM打包
  4. 内核补丁按需应用:只有内核6.6.0+才需要应用fd2path补丁
  5. 配置要合理:根据实际监控需求调整配置文件
  6. 服务管理用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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询