# gala-filetrace **Repository Path**: openeuler/gala-filetrace ## Basic Information - **Project Name**: gala-filetrace - **Description**: Real-time monitoring component of configuration files based on eBPF - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2025-08-12 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: sig-ops ## README # 1.gala-filetrace gala-filetrace是A-OPS中一个功能组件,主要用于对openEuler系统中配置文件实时监控,也可以监控信息推送到gala-ragdoll。 支持监控以下命令和系统调用: * 命令:vim/vi、sed、echo、cp、move * 系统调用:write --- # 2.实现架构 # 3.编译和运行 目前适配支持的openEuler版本: | 系统版本 | 架构 | 适配 |说明 | | :--- | :----: | ---: | ---: | | openEuler 2203_SP3 | aarch64 | OK |无 | | openEuler 2203_SP3 | x86 | OK |无 | | openEuler 2403_SP1 | aarch64 | OK |需要在内核新增一个helper_func | | openEuler 2403_SP1 | x86 | OK |需要在内核新增一个helper_func | | openEuler 2503 | aarch64 | OK |需要在内核新增一个helper_func | | openEuler 2503 | x86 | OK |需要在内核新增一个helper_func | --- 关于增加的helper_func接口fd2path具体实现,具体方法参照:4.内核升级。 ## 3.1 依赖安装 ### 3.1.1 依赖安装(仓库存在) | 系统版本 | 依赖安装 | | :--- | :----: | | openEuler 2203_SP3 | # yum install bpftrace libcurl-devel libbpf-devel cpp-httplib-devel zlib-devel nlohmann-json-devel bpftool clang llvm cpp-httplib-devel | --- 注意:openeuler 2203 lts 中cpp-httplib-devel替换为cpp-httplib;libbpf版本0.8以上 --- ### 3.1.2 依赖安装(仓库不存在) * 源码安装 ```bash # 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 && sudo make install ``` --- 注意:源码安装的prometheus-cpp库默认安装位置/usr/local/include/ --- * RPM包安装 ```bash #run cmake # cmake -B_build -DCPACK_GENERATOR=RPM -DBUILD_SHARED_LIBS=ON # or OFF for static libraries #build and package # cmake --build _build --target package --parallel $(nproc) /root/prometheus-cpp/_build/prometheus-cpp--..rpm ``` ## 3.2 编译 ### 3.2.1 直接编译 ```bash #编译之前安装依赖包 # make deps # make #debug add bpf_printk cat /sys/kernel/debug/tracing/trace_pipe # make DEBUG=1 ``` ### 3.2.1 rpm 构建 ```bash # wget -O ~/rpmbuild/SOURCES/master.zip https://gitee.com/openEuler/gala-filetrace/repository/archive/master.zip # git clone https://gitee.com/openeuler/gala-filetrace.git # rpmbuild -ba config/gala-filetrace.spec ``` 构建成功后,在/root/rpmbuild/RPMS/\目录下存在gala-filetrace的rpm包。 ## 3.3 安装 ### 3.3.1 编译安装 ```bash #default install # make install #Custom installation dir # make install DESTDIR=/your/install/path ``` ### 3.3.2 rpm 安装 ```bash cd ~/rpmbuild/RPMS/ rpm -ivh gala-filetrace--..rpm ``` ## 3.4 启动 * 通过命令启动 ```bash # filetrace ``` * 通过 systemd 服务启动 ```bash # systemctl start gala-filetrace ``` ## 3.5 配置说明 配置说明: | 配置项 | 值 | 说明 | | :--- | :----: | ---: | | host_id | string | 主机UUID | domain_name | string | 主机所在域/数据中心 | | ragdoll_api | string | ragdoll 地址 | | publish | bool | 是否推送到ragdoll | | exporter_address |string | Prometheus Node Exporter监听地址 | | 浏览器访问http://IP:9090/Metrics,可以查看监控指标。 # 4.内核升级 在内核6.6.0中,无法从task_struct中获取进程中fd列表了。所以只能通过在内核中增加接口来实现。 下图是从ebpf探针中获取文件名称的方法: 以下升级内核参照示例,具体需要根据实际环境执行。 ## 4.1 kernel源码安装 ```bash # yum download kernel-source-6.6.0-72.6.0.56.oe2503.x86_64 # rpm -ivh kernel-source-6.6.0-72.6.0.56.oe2503.x86_64* # cp /boot/config-6.6.0-72.6.0.56.oe2503.x86_64 .config ``` ### 应用patch ```bash # patch -p1 < /path/to/my_patch.patch ``` ## 4.2 编译 ```bash # make O=out ``` ## 4.3 安装模块 ```bash # make O=out modules_install ``` 默认安装到/lib/modules/ ## 4.4 安装内核映像 ```bash # make O=out install ``` 安装 vmlinuz、System.map、config 等到 /boot/ # 5.QA ## 1.dmesg中出现以下日志 ```text permission error while running as root; try raising 'ulimit -l'? current value: 64.0 KiB. ``` 解决方法: ```bash # ulimit -l 819200 ```