filetrace doctor, which checks the kernel, every probe and the running agent’s event pipeline in one report, then find the symptom below.
doctor exits with 0 for READY, 3 for NEEDS PRIVILEGES, 5 for UNAVAILABLE and 9 for DEGRADED (some probes are missing, or the agent is losing events). Its FEATURES section marks each feature [OK], [WARN] (in part), [OFF] (turned off) or [NONE] (not available), with the reason.
The agent is not running
4. Start the service, or run the agent in the foreground to see why it stops:
--socket or $FILETRACE_SOCKET, or set [agent] socket in the configuration file that both read.
The systemd unit does not retry after an exit with code 2, 3, 5 or 6. Check journalctl -u filetrace-agent (or /var/log/filetrace-agent.log under OpenRC and SysV init) for the reason.
The service does not start: no BTF
The systemd unit starts only when/sys/kernel/btf/vmlinux exists, and the OpenRC script refuses to start without it:
CONFIG_DEBUG_INFO_BTF, as the kernels of current major distributions are. Collection needs Linux 6.1 or later.
doctor reports NEEDS PRIVILEGES
Loading the probes needs privileges that a regular user does not have;doctor lists CAP_BPF and CAP_PERFMON among its checks. Run doctor, agent run, and watch or events --follow without an agent, with sudo. The systemd unit gives the agent CAP_BPF, CAP_PERFMON, CAP_SYS_ADMIN and CAP_SYS_PTRACE.
A probe does not attach
When a probe is not[OK] in the PROBES section, doctor ends with DEGRADED and names it. Kernel functions are traced through BPF trampolines where the kernel supports them and through kprobes otherwise. Check the other set:
probes = "kprobe" in [agent] or --probes kprobe. Kernel instrumentation describes the differences between the sets.
Permission denied or no answer as a regular user
The agent answers only root and the user it runs as, and closes other connections. Run the commands withsudo when the agent runs as root, as the packaged service does.
Exit code 9: events were lost
Exit code9 means the answer may be incomplete because events were lost inside the queried time range. The output is still printed. filetrace stats and the LOST counter of watch show how much was lost, and the Prometheus counter filetrace_events_dropped_total says where, by filetrace_loss_kind:
A transfer during which events were lost is marked with
* after its confidence in tables and with "incomplete": true in JSON. See Overhead and sizing.
A file you expected is not listed
Work through these causes in order:- The agent started later. History starts when the agent starts and is kept in memory only. Every report says from when it reaches.
- The history forgot it. Every table is bounded and forgets its least recently updated entries when full. Raise the
[limits]of busy tables. - It is filtered out. Check
[filters] exclude_pathsandexclude_processesinfiletrace config show, and the options of your command. - It was below the reporting thresholds. A read-write association is reported once it covers at least
inferred_min_bytes(1 KB) andinferred_min_percent(5%) of what was read. Withconfidence_threshold = "exact", only sendfile transfers are reported. - The way it was sent is not observed. Files read with
readv, io_uring or a memory mapping, files read by one thread and sent by another, and files passed through a pipe are not associated with the send.filetrace transfers --confidence unknownshows the bytes the process sent without a file. - The receive rule ended the association. A thread that receives between reading a file and sending is not associated with the file. A file read entirely before a fresh TLS connection is opened is not associated, because the handshake’s receive ends the association.
filetrace capabilities lists every feature this machine supports, in full or in part, with the reason.
An INFERRED attribution looks wrong
INFERRED means that the same thread read the file and then sent on the socket within the correlation window, with no receive in between. It can be wrong when a thread reads one file and then sends unrelated data of a similar size. Shorten[correlation] window to reduce such matches, or use --confidence exact to list only transfers the kernel performed itself. File attribution and confidence explains the rules.
Device and inode look wrong in a container
Inside a container on overlayfs, device and inode are those of the overlay mount. On btrfs, files in different subvolumes can share an inode number.The agent did not restart after an upgrade
A package upgrade restarts a running agent only when the configuration file is valid for the new version. Runfiletrace config validate, fix what it reports, and restart the service.
A method filter is refused
--method splice, --method mmap and --method io_uring are accepted but refused with exit code 5, because this build does not observe those methods. It does not answer with an empty list.