The /run/fapolicyd/fapolicyd.state file contains the most
recent daemon state report requested through
fapolicyd-cli --check-status or periodic interval
reporting.
The state report answers whether the daemon is healthy and
configured as expected. Runtime counters, rule hit counts, cache
effectiveness metrics, attribute lookup tables, and queue/defer activity are
reported in /run/fapolicyd/fapolicyd.metrics. Each field is printed
as a name: value line. Section headers end in a colon.
Worker-specific health and queue drill-down fields are indented by two
spaces under the related section.
- Permissive
- Whether the daemon is running in permissive mode. In permissive mode,
policy denials are reported as denied decisions, but the response sent to
the kernel allows access.
- Integrity
- The configured file integrity mode used for trust checks.
- reset_strategy
- The active metrics reset strategy: never keeps metrics growing for
the daemon lifetime, auto resets timer-generated metrics reports,
and manual allows privileged signal-generated reset requests such
as fapolicyd-cli --reset-metrics.
- Config
generation
- The immutable decision configuration generation currently published by the
daemon. Each successful reload publishes a new generation for
decision-used fields such as permissive mode and integrity mode, so one
decision does not mix values from different reloads.
- Ruleset
generation
- The current in-memory ruleset generation. This value increments each time
a fully validated ruleset is published by the daemon.
- Trust database
generation
- The currently published trust database generation used by new decision
reads. This is a daemon-runtime generation that starts at 1 during
startup. The effective-since timestamp is the time the generation was
published.
- LMDB environment
generation
- The physical LMDB environment generation currently opened by the daemon.
This starts at 1 during startup and increments when fapolicyd publishes a
rebuilt LMDB environment during controlled compaction. A trust database
generation is a logical content epoch inside an environment; an LMDB
environment generation is the storage epoch containing the LMDB page map,
free list, and high-water state.
- Trust database
entries
- The number of records in the currently published trust database
generation.
- Timing collection
mode
- The configured timing collection control mode.
- Timing collection
armed
- Whether a manual timing run is currently active.
- Timing collection
last start time
- The wall-clock time of the last successful timing start request, or
never when timing has not been started.
- Timing collection
last stop time
- The wall-clock time of the last successful timing stop request, or
never when timing has not been stopped.
- Allowed
accesses
- The number of policy decisions that allowed access.
- Denied
accesses
- The number of policy decisions that denied access. In permissive mode
these decisions are still counted as denials even though the daemon
permits kernel access.
- Daemon PID
- The process ID of the daemon process that wrote the report.
- CPU cores
- The number of online processor cores reported by the system.
- decision_threads
- The configured decision worker count from fapolicyd.conf.
- Per worker
q_size
- The configured size of each decision worker's internal event queue.
- Per worker Subject defer
array size
- The number of preallocated entries available in each decision worker's
subject-slot defer array.
- Per worker Subject cache
size
- The configured number of entries in each decision worker's subject
cache.
- Per worker Object cache
size
- The configured number of entries in each decision worker's object
cache.
- Trust database max
pages
- The current maximum LMDB map page count for the trust database
environment. This reflects the map size currently opened by the daemon,
including any automatic resize applied for reload headroom.
- Trust database max
readers
- The configured LMDB reader-slot limit. This is sized for
decision_threads plus maintenance readers.
- Trust database pages
in use
- The number and percentage of LMDB pages currently used by the active trust
database contents. This is the active named-database footprint, not the
LMDB environment high-water mark.
- Trust database
allocated high-water pages
- The number and percentage of LMDB map pages that have been allocated in
the environment. This follows LMDB's file high-water mark and can be
higher than the active trust database footprint after drop/rebuild
reloads, because LMDB cannot reuse pages until transactions and freelist
metadata allow it. When db_max_size is set to auto ,
fapolicyd uses this value as reload-headroom pressure while active pages
show the steady-state trust database size.
- Retired trust
database generations
- The number of old trust generations waiting for readers to drain before
their named databases can be reclaimed.
- Oldest retired trust
database generation age
- The age in seconds of the oldest retired trust generation still waiting
for safe reclamation.
- Max trust database generation
reclaim delay
- The longest observed delay in seconds between retiring an old trust
generation and reclaiming its named database.
- Trust database resize
recommended
- Whether the current LMDB sizing state suggests increasing a manually
configured db_max_size . This field is printed only when
db_max_size is a numeric value. It is omitted when
db_max_size is set to auto because auto mode grows the map
itself before rebuilds.
- Trust database resize
reason
- Short explanation for the manual resize recommendation.
- Trust database resize
target
- The recommended minimum db_max_size in MiB. This field is printed
only when manual resize is recommended.
- Trust database
compaction recommended
- Whether the current LMDB sizing state suggests running controlled trust
database compaction. Compaction is recommended when the allocated LMDB
high-water mark is much larger than the active trust database footprint
and no retired trust generations are pinned.
- Trust database
compaction reason
- Short explanation for the recommendation. If retired generations are
pinned, the recommendation is no because readers must drain before
the environment can be safely replaced.
- Trust database
compaction target
- The current map-size target in MiB for a compact rebuilt environment. This
field is printed when compaction is recommended.
- Subject slots in
use
- The number and percentage of subject cache slots currently occupied.
- Object slots in
use
- The number and percentage of object cache slots currently occupied.
- glibc arena (total
memory) is
- The current total glibc heap arena size in KiB, followed by the value from
the previous report. This field is printed only when the daemon is built
with mallinfo2(3) support.
- glibc uordblks (in
use memory) is
- The current allocated heap memory in KiB, followed by the value from the
previous report. This field is printed only when mallinfo2(3)
support is available.
- glibc fordblks (total
free space) is
- The current free heap memory in KiB, followed by the value from the
previous report. This field is printed only when mallinfo2(3)
support is available.
Any non-zero counter in this section warrants investigation.
- Kernel queue
overflow
- The number of FAN_Q_OVERFLOW events reported by the kernel. A
non-zero value means kernel fanotify events were lost before the daemon
could process them.
- Filesystem
errors
- The number of FAN_FS_ERROR events reported by the kernel. These are
filesystem health events, not policy decisions.
- Filesystem
error last status
- Parser status for the most recent FAN_FS_ERROR event: none ,
ok , missing_error_record , or malformed .
- Filesystem
error last seen
- The wall-clock time of the most recent FAN_FS_ERROR event, or
never when no filesystem error has been reported.
- Filesystem
error last errno
- The errno-style error code from the most recent parseable filesystem error
event.
- Filesystem
error last suppressed count
- The kernel-reported count of additional filesystem errors suppressed
behind the most recent error notification.
- Reply errors
- The number of failed or short writes when sending fanotify permission
responses back to the kernel.
- Decision worker N
health
- Compact health line for one decision worker. It includes a derived
state, heartbeat age, and current event age. The state is
idle, busy, or stalled. An idle worker reports
current_event=idle. Queue depth and oldest queued event age are
reported by the per-worker queue entries that follow.
- Decision worker
N current queue depth
- The number of fanotify permission events currently waiting in that
worker's queue.
- Decision worker
N max queue depth
- The highest queue depth observed for that worker since the last metrics
reset.
- Decision worker
N queue full count
- The number of failed enqueue attempts for that worker since the last
metrics reset.
- Decision worker
N oldest queued age
- The age of the oldest event currently waiting in that worker's queue. The
value is formatted with a human-readable unit such as ms or
s.
- Subject defer
fallbacks
- The number of times the defer array was full and fapolicyd fell back to
the historical subject cache eviction behavior.
- Early subject cache
evictions
- The number of subject cache entries evicted before process startup state
was complete.
- Subject BUILDING
tracer evictions
- The number of BUILDING subject cache entries evicted because the owning
process was traced and could hold the slot indefinitely.
- Subject BUILDING
stale evictions
- The number of BUILDING subject cache entries evicted because their startup
state stayed incomplete past the bounded stale window.
- Subject defer
oldest age
- The age of the oldest currently deferred subject event, formatted with a
human-readable unit such as ms or s.
- Failure action
queue_full (observe)
- Number of times the internal userspace event queue was full.
- Failure action
kernel_queue_overflow (observe)
- Number of kernel fanotify queue overflow events.
- Failure action
worker_stall (terminate)
- Number of decision worker stall detections.
- Failure action
rule_reload_failure (observe)
- Number of rule reload failures. A failed transactional reload preserves
the previous published policy when one exists.
- Failure action
trust_reload_failure (observe)
- Number of trust database reload failures.
- Failure action
response_write_failure (observe)
- Number of failed or incomplete fanotify response writes to the
kernel.
- Failure action
fanotify_filesystem_error (observe)
- Number of FAN_FS_ERROR filesystem health events reported by the
kernel.
- watching
mount
- One line is printed for each mount point currently marked for fanotify
monitoring.
Allowed accesses , Denied accesses , Config
generation , Ruleset generation , Trust database generation
, LMDB environment generation , Trust database entries ,
Decision worker N health , Decision worker N current queue depth
, Decision worker N max queue depth , Decision worker N queue
full count , Decision worker N oldest queued age , Subject
defer fallbacks , Early subject cache evictions , Subject
BUILDING tracer evictions , and Subject BUILDING stale evictions
intentionally appear in both state and metrics reports. In the state report
they provide health and activity context; in the metrics report they
describe the current report context and counter window.
Metrics resets affect counters in the metrics report. Static
configuration, current utilization snapshots, watched mounts, and health
indicators are not reset by fapolicyd-cli --reset-metrics.
- /run/fapolicyd/fapolicyd.state
- Runtime state report file.
- /run/fapolicyd/fapolicyd.metrics
- Runtime metrics report file.
- /run/fapolicyd/fapolicyd.timing
- Manual decision timing report written when a privileged stop request ends
an armed timing run, when a stop request finds timing unarmed, or when
timing collection stops to avoid counter overflow.