#!/bin/sh : << =cut =head1 NAME file_length_ - Plugin to monitor the length of specified files Useful for things such as lists (white, black, user, ...). The type of metric defaults to GAUGE, but it can be configured to, say, DERIVE, which is useful for monitoring the rate of message in error logs. =head1 CONFIGURATION [file_length_IDENTIFIER] env.files FILEPATHGLOB1 FILEPATHGLOB2 ... env.category system env.title OPTIONAL_TITLE env.logarithmic 1 env.type GAUGE =head1 AUTHOR Olivier Mehani (based on disk/log_sizes) =head1 LICENSE SPDX-License-Identifier: GPL-2.0-only =head1 MAGIC MARKERS #%# family=manual =cut # needs shellcheck -x /usr/share/munin/plugins/plugin.sh # shellcheck source=/usr/share/munin/plugins/plugin.sh . "${MUNIN_LIBDIR}/plugins/plugin.sh" NAME=$(echo "${0}" | sed 's/.*_//') TITLE=${title:-File lengths for ${NAME}} CATEGORY=${category:-system} FILES=${files:-/var/log/messages} # we want globbing to happen here # shellcheck disable=SC2116 disable=SC2086 FILES=$(echo ${FILES}) TYPE=${type:-GAUGE} if [ "${1}" = "config" ] ; then # shellcheck disable=SC2154 if [ "${logarithmic}" = "1" ]; then graph_args="-o" else graph_args="-l 0" fi cat <&1| grep GNU) for F in ${FILES}; do MF=$(echo "${F}" | sed 's/[-\/\.]/_/g') echo "${MF}.value $(wc -l < "${F}")" if [ -n "${HAS_GNU_STAT}" ]; then echo "${MF}.extinfo $(stat --printf="%sB\n" "${F}")" fi done fi