eunomia-bpf / bpftime

Userspace eBPF runtime for Observability, Network & General Extensions Framework
https://eunomia.dev/bpftime/
MIT License
788 stars 74 forks source link

fix: log runtime output to env var "BPFTIME_LOG_OUTPUT" #301

Closed Kailian-Jacy closed 1 month ago

Kailian-Jacy commented 4 months ago

Description

A draft version of logging. It implements:

Used file but not named pipe. bpftime server should be similar to docker daemon, managing "services" of injected ebpf programs. The log should be persistent, reusable.

Now usage:

kailian@ubt23:~/bpftime$ sudo BPFTIME_LOG_OUTPUT=skeleton_logging.out /home/kailian/.bpftime/bpftime -i /home/kailian/.bpftime load ./example/opensnoop/opensnoop\
PID    COMM              FD ERR PATH
^CINFO [40749]: Global shm destructed

kailian@ubt23:~/bpftime$ cat skeleton_logging.out
[2024-06-02 10:12:32][info][40749] manager constructed
[2024-06-02 10:12:32][info][40749] Initialize syscall server
[2024-06-02 10:12:32][info][40749] Global shm constructed. shm_open_type 0 for bpftime_maps_shm
[2024-06-02 10:12:32][info][40749] Global shm initialized
[2024-06-02 10:12:32][info][40749] Enabling helper groups ufunc, kernel, shm_map by default
[2024-06-02 10:12:32][info][40749] bpftime-syscall-server started

I may add these feature in this PR, hoping suggestions or confirmation from you:

resolves # 279

Type of change

How Has This Been Tested?

sudo BPFTIME_LOG_OUTPUT=skeleton_logging.out /home/kailian/.bpftime/bpftime -i /home/kailian/.bpftime load ./example/opensnoop/opensnoop
sudo BPFTIME_LOG_OUTPUT=skeleton_logging.out /home/kailian/.bpftime/bpftime -i /home/kailian/.bpftime start  ./example/opensnoop/victim
sudo BPFTIME_LOG_OUTPUT=skeleton_logging.out /home/kailian/.bpftime/bpftime -i /home/kailian/.bpftime start  -s ./example/opensnoop/victim
sudo BPFTIME_LOG_OUTPUT=victim_out.log ./example/opensnoop/victim
sudo BPFTIME_LOG_OUTPUT=skeleton_logging.out /home/kailian/.bpftime/bpftime -i /home/kailian/.bpftime attach `pidof victim`

Test Configuration:

Checklist

yunwei37 commented 1 month ago

Also:

  1. Fix compile for build without libbpf in Linux
  2. Add option build test in CI