mirror of
https://github.com/librenms/librenms-agent.git
synced 2024-05-09 09:54:52 +00:00
* convert the snmp scripts using tmp files over to use mktemp * reverse this... joy... not a temp file but cache file ;( * moved cache file from under /tmp to /var/cache/librenms * fix mysql tmp usage
166 lines
4.3 KiB
Bash
166 lines
4.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
API_AUTH_USER="admin"
|
|
API_AUTH_PASS=""
|
|
API_URL=""
|
|
API_STATS="jsonstat?command=stats"
|
|
TMP_FILE=`/usr/bin/mktemp`
|
|
|
|
#/ Description: BASH script to get PowerDNS dnsdist stats
|
|
#/ Examples: ./powerdns-dnsdist
|
|
#/ Options:
|
|
#/ --help: Display this help message
|
|
#/ --debug: Brief check of system env and script vars
|
|
|
|
usage() {
|
|
grep '^#/' "$0" | cut -c4- ;
|
|
exit 0 ;
|
|
}
|
|
|
|
debug() {
|
|
if [ -z "$API_AUTH_USER" ]; then
|
|
echo '[error] var API_AUTH_USER is not set'
|
|
else
|
|
echo '[ok] var API_AUTH_USER is set'
|
|
fi
|
|
|
|
if [ -z "$API_AUTH_PASS" ]; then
|
|
echo '[error] var API_AUTH_PASS is not set'
|
|
else
|
|
echo '[ok] var API_AUTH_PASS is set'
|
|
fi
|
|
|
|
if [ -z "$API_URL" ]; then
|
|
echo '[error] var API_URL is not set'
|
|
else
|
|
echo '[ok] var API_URL is set'
|
|
fi
|
|
|
|
if [ -z "$API_STATS" ]; then
|
|
echo '[error] var API_STATS is not set'
|
|
else
|
|
echo '[ok] var API_STATS is set'
|
|
fi
|
|
|
|
if ! [ -x "$(command -v curl)" ]; then
|
|
echo '[error] bin curl not available, please install it'
|
|
else
|
|
echo '[ok] bin curl'
|
|
fi
|
|
|
|
if ! [ -x "$(command -v jq)" ]; then
|
|
echo '[error] bin jq not available, please install it'
|
|
else
|
|
echo '[ok] bin jq'
|
|
fi
|
|
|
|
if ! [ -x "$(command -v cat)" ]; then
|
|
echo '[error] bin cat not available, please install it'
|
|
else
|
|
echo '[ok] bin cat'
|
|
fi
|
|
}
|
|
|
|
exportdata() {
|
|
# get current data
|
|
curl -s -u$API_AUTH_USER:$API_AUTH_PASS $API_URL$API_STATS | jq '.' > $TMP_FILE
|
|
|
|
# generate export values
|
|
JSON_VALUES=$(cat $TMP_FILE)
|
|
|
|
STAT_CACHE_HIT=$(echo $JSON_VALUES | jq '."cache-hits"')
|
|
echo $STAT_CACHE_HIT
|
|
|
|
STAT_CACHE_MISS=$(echo $JSON_VALUES | jq '."cache-misses"')
|
|
echo $STAT_CACHE_MISS
|
|
|
|
STAT_DOWNSTREAM_ERR=$(echo $JSON_VALUES | jq '."downstream-send-errors"')
|
|
echo $STAT_DOWNSTREAM_ERR
|
|
|
|
STAT_DOWNSTREAM_TIMEOUT=$(echo $JSON_VALUES | jq '."downstream-timeouts"')
|
|
echo $STAT_DOWNSTREAM_TIMEOUT
|
|
|
|
STAT_DYNAMIC_BLOCK_SIZE=$(echo $JSON_VALUES | jq '."dyn-block-nmg-size"')
|
|
echo $STAT_DYNAMIC_BLOCK_SIZE
|
|
|
|
STAT_DYNAMIC_BLOCK=$(echo $JSON_VALUES | jq '."dyn-blocked"')
|
|
echo $STAT_DYNAMIC_BLOCK
|
|
|
|
STAT_QUERIES_COUNT=$(echo $JSON_VALUES | jq '.queries')
|
|
echo $STAT_QUERIES_COUNT
|
|
|
|
STAT_QUERIES_RECURSIVE=$(echo $JSON_VALUES | jq '.rdqueries')
|
|
echo $STAT_QUERIES_RECURSIVE
|
|
|
|
STAT_QUERIES_EMPTY=$(echo $JSON_VALUES | jq '."empty-queries"')
|
|
echo $STAT_QUERIES_EMPTY
|
|
|
|
STAT_QUERIES_DROP_NO_POLICY=$(echo $JSON_VALUES | jq '."no-policy"')
|
|
echo $STAT_QUERIES_DROP_NO_POLICY
|
|
|
|
STAT_QUERIES_DROP_NC=$(echo $JSON_VALUES | jq '."noncompliant-queries"')
|
|
echo $STAT_QUERIES_DROP_NC
|
|
|
|
STAT_QUERIES_DROP_NC_ANSWER=$(echo $JSON_VALUES | jq '."noncompliant-responses"')
|
|
echo $STAT_QUERIES_DROP_NC_ANSWER
|
|
|
|
STAT_QUERIES_SELF_ANSWER=$(echo $JSON_VALUES | jq '."self-answered"')
|
|
echo $STAT_QUERIES_SELF_ANSWER
|
|
|
|
STAT_QUERIES_SERVFAIL=$(echo $JSON_VALUES | jq '."servfail-responses"')
|
|
echo $STAT_QUERIES_SERVFAIL
|
|
|
|
STAT_QUERIES_FAILURE=$(echo $JSON_VALUES | jq '."trunc-failures"')
|
|
echo $STAT_QUERIES_FAILURE
|
|
|
|
STAT_QUERIES_ACL_DROPS=$(echo $JSON_VALUES | jq '."acl-drops"')
|
|
echo $STAT_QUERIES_ACL_DROPS
|
|
|
|
STAT_RULE_DROP=$(echo $JSON_VALUES | jq '."rule-drop"')
|
|
echo $STAT_RULE_DROP
|
|
|
|
STAT_RULE_NXDOMAIN=$(echo $JSON_VALUES | jq '."rule-nxdomain"')
|
|
echo $STAT_RULE_NXDOMAIN
|
|
|
|
STAT_RULE_REFUSED=$(echo $JSON_VALUES | jq '."rule-refused"')
|
|
echo $STAT_RULE_REFUSED
|
|
|
|
STAT_LATENCY_AVG_100=$(echo $JSON_VALUES | jq '."latency-avg100"')
|
|
echo $STAT_LATENCY_AVG_100
|
|
|
|
STAT_LATENCY_AVG_1000=$(echo $JSON_VALUES | jq '."latency-avg1000"')
|
|
echo $STAT_LATENCY_AVG_1000
|
|
|
|
STAT_LATENCY_AVG_10000=$(echo $JSON_VALUES | jq '."latency-avg10000"')
|
|
echo $STAT_LATENCY_AVG_10000
|
|
|
|
STAT_LATENCY_AVG_1000000=$(echo $JSON_VALUES | jq '."latency-avg1000000"')
|
|
echo $STAT_LATENCY_AVG_1000000
|
|
|
|
STAT_LATENCY_SLOW=$(echo $JSON_VALUES | jq '."latency-slow"')
|
|
echo $STAT_LATENCY_SLOW
|
|
|
|
STAT_LATENCY_0_1=$(echo $JSON_VALUES | jq '."latency0-1"')
|
|
echo $STAT_LATENCY_0_1
|
|
|
|
STAT_LATENCY_1_10=$(echo $JSON_VALUES | jq '."latency1-10"')
|
|
echo $STAT_LATENCY_1_10
|
|
|
|
STAT_LATENCY_10_50=$(echo $JSON_VALUES | jq '."latency10-50"')
|
|
echo $STAT_LATENCY_10_50
|
|
|
|
STAT_LATENCY_50_100=$(echo $JSON_VALUES | jq '."latency50-100"')
|
|
echo $STAT_LATENCY_50_100
|
|
|
|
STAT_LATENCY_100_1000=$(echo $JSON_VALUES | jq '."latency100-1000"')
|
|
echo $STAT_LATENCY_100_1000
|
|
}
|
|
|
|
if [ -z $* ]; then
|
|
exportdata
|
|
fi
|
|
expr "$*" : ".*--help" > /dev/null && usage
|
|
expr "$*" : ".*--debug" > /dev/null && debug
|