collectd-prv converts stdout from a process into collectd notifications, optionally acting like a pressure relief valve during event floods.
- script
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
# plugin = tail
# type = syslog
# limit = 30 lines/second
tail -F $1 | collectd-prv --service="tail/syslog" --limit=30
LoadPlugin exec
<Plugin exec>
Exec "nobody:nobody" "collectd-tail" "/var/log/syslog"
</Plugin>
make
# Recommended: build a static executable using musl
./musl-make clean all
# select a different method for process restriction
RESTRICT_PROCESS=null
# musl: enabling seccomp process restriction might require downloading a
# copy of linux kernel headers
export MUSL_INCLUDE=/tmp
git clone https://github.com/sabotage-linux/kernel-headers.git $MUSL_INCLUDE/kernel-headers
./musl-make
-s, --service plugin/type : collectd service (default: stdout/prv)
-H, --hostname name : collectd hostname (max: 16 bytes) (default: gethostname())
-l, --limit number : message rate limit (default: 0 (no limit))
-w, --window seconds : message rate window (default: 1 second)
-W, --write-error exit|drop|block : behaviour if write buffer is full
-M, --max-event-length number : max message fragment length (default: 255 - 10)
-I, --max-event-id number : max message fragment header id (default: 99)
-v, --verbose : verbose mode
-h, --help : help