1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 10:39:53 +00:00

First version of the resolvectl munin plugin (#1450)

* First version of the resolvectl munin plugin

* Fixed autoconf check

---------

Co-authored-by: Scott Hollenbeck <sah@hollenmail.com>
This commit is contained in:
Scott Hollenbeck 2024-09-09 17:05:45 -04:00 committed by GitHub
parent 1dc2844cbb
commit c063669369
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

123
plugins/resolvectl/resolvectl Executable file
View file

@ -0,0 +1,123 @@
#!/bin/sh
# -*- sh -*-
set -e
: << =cut
=head1 NAME
resolvectl - Plugin to monitor resolvectl statistics.
=head1 APPLICABLE SYSTEMS
Any server running systemd-resolved
=head1 CONFIGURATION
[resolvectl]
user root
=head1 NOTES
Uses the command "resolvectl statistics"
=head1 AUTHOR
Scott Hollenbeck <sah6284@gmail.com>
=head1 LICENSE
GPLv2
=head1 VERSION
1.0
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
. "$MUNIN_LIBDIR/plugins/plugin.sh"
if [ "$1" = "autoconf" ]; then
resolvectl statistics >/dev/null 2>&1
ret=$?
if [ "$ret" -eq 0 ]; then
echo yes
exit 0
else
if [ "$ret" -eq 1 ]; then
echo "no (could not run \"resolvectl\")"
exit 0
else
echo "no (unknown resolvectl return value "$ret")"
exit 0
fi
fi
fi
if [ "$1" = "config" ]; then
echo 'graph_title resolvectl statistics'
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel count'
echo 'graph_category dns'
echo 'current-transactions.label current transactions'
echo 'current-transactions.type DERIVE'
echo 'current-transactions.min 0'
echo 'total-transactions.label total transactions'
echo 'total-transactions.type DERIVE'
echo 'total-transactions.min 0'
echo 'cache-size.label cache size'
echo 'cache-size.type DERIVE'
echo 'cache-size.min 0'
echo 'cache-hits.label cache hits'
echo 'cache-hits.type DERIVE'
echo 'cache-hits.min 0'
echo 'cache-misses.label cache misses'
echo 'cache-misses.type DERIVE'
echo 'cache-misses.min 0'
echo 'total-timeouts.label total timeouts'
echo 'total-timeouts.type DERIVE'
echo 'total-timeouts.min 0'
echo 'total-timeouts-stale.label total timeouts stale'
echo 'total-timeouts-stale.type DERIVE'
echo 'total-timeouts-stale.min 0'
echo 'total-failures.label total failures'
echo 'total-failures.type DERIVE'
echo 'total-failures.min 0'
echo 'total-failures-stale.label total failures stale'
echo 'total-failures-stale.type DERIVE'
echo 'total-failures-stale.min 0'
echo 'dnssec-secure.label dnssec secure'
echo 'dnssec-secure.type DERIVE'
echo 'dnssec-secure.min 0'
echo 'dnssec-insecure.label dnssec insecure'
echo 'dnssec-insecure.type DERIVE'
echo 'dnssec-insecure.min 0'
echo 'dnssec-bogus.label dnssec bogus'
echo 'dnssec-bogus.type DERIVE'
echo 'dnssec-bogus.min 0'
echo 'dnssec-indeterminate.label dnssec indeterminate'
echo 'dnssec-indeterminate.type DERIVE'
echo 'dnssec-indeterminate.min 0'
exit 0
fi
resolvectl statistics | awk '/Current Transactions/{print "current-transactions.value " $NF};\
/Total Transactions/{print "total-transactions.value " $NF};\
/Current Cache Size/{print "cache-size.value " $NF};\
/Cache Hits/{print "cache-hits.value " $NF};\
/Cache Misses/{print "cache-misses.value " $NF};\
/Total Timeouts:/{print "total-timeouts.value " $NF};\
/Total Timeouts \(Stale Data Served/{print "total-timeouts-stale.value " $NF};\
/Total Failure Responses:/{print "total-failures.value " $NF};\
/Total Failure Responses \(Stale Data Served/{print "total-failures-stale.value " $NF};\
/Secure/{print "dnssec-secure.value " $NF};\
/Insecure/{print "dnssec-insecure.value " $NF};\
/Bogus/{print "dnssec-bogus.value " $NF};\
/Indeterminate/{print "dnssec-indeterminate.value " $NF};'