Revision history for OSLV-Monitor

1.0.7   2026-10-14/17:00
        - both: compute rates over the time since the previous run, saved in the
          cache, instead of assuming 300 seconds
        - cgroups: read nonvoluntary_ctxt_switches, so involuntary context
          switches are no longer always 0
        - cgroups: only total ps stats for included names
        - cgroups: merge the IPs and paths of containers in the same podman pod
        - cgroups: map docker IDs to names for the cgroupfs driver
        - cgroups: find the bridge interface for docker networks
        - cgroups: report IPv6 container addresses and look up their gateway
          interface, using ip -j with the args checked before reaching the shell
        - cgroups: name non-podman machine.slice units m_$type_$machine instead of
          reading all of machine.slice, which double counted podman containers
        - remove the unused ip_to_if and the IO::Interface::Simple dependency
        - FreeBSD: report ps output that fails to decode as a error
        - oslv_monitor: write the json and snmp files atomically and exit 1 if
          either fails
        - oslv_monitor: implement -c and add --backend
        - add the lock option and -l, to skip a run while another holds the
          lock instead of clobbering its cache
        - oslv_monitor: exit 0 for -h and -v, and 1 for unknown flags
        - oslv_monitor: use the OSLV::Monitor version
        - require List::Util 1.45 for uniq and drop the unused Math::BigInt
        - fix the documented include default
        - document new and include, and the internal cgroups subs
        - cgroups: usable dies if cgroup v2 is not mounted at /sys/fs/cgroup
        - cgroups: always include cache_failure, matching FreeBSD
        - FreeBSD: drop the duplicate pid from the ps columns

1.0.6   2026-08-04/13:15
        - cgroups: get the cgroup from /proc/<pid>/cgroup as ps truncates the
          cgroup column to 27 characters, mangling names and breaking stat reads
        - cgroups: sum the stats of all cgroups mapping to the same name
        - cgroups: read stats from the cgroup dir the name is for, as cgroup v2
          stats include those of all descendants
        - cgroups: name nested service cgroups after the service
        - cgroups: cache raw counters per cgroup dir instead of per name
        - cgroups: record context switches per oslvm, not just in the totals
        - cgroups: skip the root cgroup
        - cgroups: add tests for the backend

1.0.5   2026-07-24/20:00
        - cgroups: fix io.stat parsing so IO stats are recorded
        - cgroups: emit throttled/burst/force_idle-time, percpu, thp_swpout, and zswpwb stats
        - cgroups: fix container IP mapping key and cache-save error message
        - cgroups: populate path with container rootfs, falling back to the roots
          seen by the procs in the cgroup, matching jail path semantics
        - cgroups: treat nr_periods, nr_throttled, and nr_bursts as counters so
          they are rates like throttled-time and burst-time, matching what the
          LibreNMS graphs expect
        - both: when a counter is seen for the first time, return 0 instead of the
          accumulated total over 300 if what it is for is older than the polling
          interval, preventing spikes when something old is first seen... procs
          younger than the polling interval are still processed as fresh counters
          so short lived procs don't go uncounted
        - cgroups: don't zero the cached raw counter value when discarding a
          garbage value, preventing a inflated delta on the following run
        - cgroups: remove unused raw usec names from the counters list
        - FreeBSD: fix MM:SS CPU time parsing
        - FreeBSD: guard against counter rollback
        - FreeBSD: populate jail path
        - both: self-heal a corrupt/truncated cache instead of erroring every run
        - both: write the cache atomically to avoid truncated cache files
        - fix leaked $@ that turned a handled cache error into "Failed to run backend"
        - do not include idle

1.0.4   2026-05-09/14:30
        - fix handling of include/exclude stuff for FreeBSD
        - add OSLV_MONITOR_DEBUG env
        - note JSON::XS

1.0.3   2026-04-28/14:00
        - fix handling of Docker, translatting annoying random string names to something meaningful

1.0.2   2024-10-15/17:30
        - add zero stats if the cache is new to prevent spikes at start

1.0.1   2024-10-15/16:30
        - drop cgroupns use

1.0.0   2024-10-14/15:30
        - Rename a few cgroup stats to match FreeBSD.
        - Add etimes for cgroups.
        - Add .data.has .
        - Add context switches for cgroups .

0.1.0   2024-09-30/16:00
        - Add -b for setting output/cache base path
        - More FreeBSD fixes.

0.0.2   2024-09-25/14:00
        - Various fixes for on FreeBSD when jailname and hostname for the jail differ.

0.0.1   2024-09-10/16:00
        - First version, released on an unsuspecting world. :3
