2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/syncthing/strelaysrv_

146 lines
3.7 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env bash
: <<=cut
=head1 NAME
strelaysrv_ - Plugin to monitor Syncthing relay server
=head1 DESCRIPTION
This plugin gathers metrics from a Syncthing relay server.
This plugin requires the jq utility : https://stedolan.github.io/jq/
This plugin requires the curl utility : https://curl.haxx.se/
Available plugins :
strelaysrv_goroutine #
strelaysrv_num #
strelaysrv_proxied #
strelaysrv_transfer #
strelaysrv_uptime #
=head1 CONFIGURATION
To make the plugin connect to the Syncthing relay server one has to use this type of
configuration
[strelaysrv_*]
env.syncthing_relaysrv_host 127.0.0.1
env.syncthing_relaysrv_port 22070
=head1 AUTHOR
Pierre-Alain TORET <pierre-alain.toret@protonmail.com>
=head1 LICENSE
MIT
=cut
function num {
case $1 in
config)
cat <<'EOM'
graph_title Syncthing relay numbers
graph_category network
graph_vlabel numbers
strelaysrv_num_sessions.label sessions
strelaysrv_num_connections.label connections
strelaysrv_num_pending.label pending session keys
strelaysrv_num_proxies.label proxies
EOM
exit 0;;
*)
NS=$($CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.numActiveSessions ')
NC=$($CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.numConnections ')
NK=$($CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.numPendingSessionKeys ')
NP=$($CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.numProxies ')
printf "strelaysrv_num_sessions.value $NS\nstrelaysrv_num_connections.value $NC\nstrelaysrv_num_pending.value $NK\nstrelaysrv_num_proxies.value $NP\n"
esac
}
function uptime {
case $1 in
config)
cat <<'EOM'
graph_title Syncthing relay uptime
graph_vlabel uptime in seconds
graph_category network
strelaysrv_uptime.label uptime
EOM
exit 0;;
*)
printf "strelaysrv_uptime.value "
$CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.uptimeSeconds'
esac
}
function goroutine {
case $1 in
config)
cat <<'EOM'
graph_title Syncthing relay go routines
graph_vlabel number of go routines
graph_category network
strelaysrv_goroutine.label routines
EOM
exit 0;;
*)
printf "strelaysrv_goroutine.value "
$CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.goNumRoutine'
esac
}
function proxied {
case $1 in
config)
cat <<'EOM'
graph_title Syncthing relay total proxied bits
graph_category network
graph_vlabel bits
graph_args --base 1000
strelaysrv_proxied.label bits
strelaysrv_proxied.cdef strelaysrv_proxied,8,*
EOM
exit 0;;
*)
printf "strelaysrv_proxied.value "
$CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.bytesProxied '
esac
}
function transfer {
case $1 in
config)
cat <<'EOM'
graph_title Syncthing relay transfer rate
graph_category network
graph_vlabel bps
graph_args --base 1000
strelaysrv_transfer.label bps
strelaysrv_transfer.cdef strelaysrv_transfer,1000,*
EOM
exit 0;;
*)
printf "strelaysrv_transfer.value "
$CURL -s http://$syncthing_relaysrv_host:$syncthing_relaysrv_port/status | $JQ '.kbps10s1m5m15m30m60m[2] '
esac
}
cd $(dirname $0)
CURL=$(which curl)
JQ=$(which jq)
case $(basename $0) in
strelaysrv_num)
num $1
exit 0;;
strelaysrv_uptime)
uptime $1
exit 0;;
strelaysrv_goroutine)
goroutine $1
exit 0;;
strelaysrv_proxied)
proxied $1
exit 0;;
strelaysrv_transfer)
transfer $1
exit 0;;
esac