fail2ban data collector
This commit is contained in:
parent
6fbe1418c2
commit
c45be03895
1 changed files with 32 additions and 0 deletions
32
fail2ban.sh
Executable file
32
fail2ban.sh
Executable file
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash
|
||||
|
||||
# add to sudoers:
|
||||
# daemon ALL=(root) NOEXEC: NOPASSWD: /usr/bin/fail2ban-client status, /usr/bin/fail2ban-client status *
|
||||
|
||||
source /usr/local/lib/collectd/_functions.sh
|
||||
|
||||
function extract_fail2ban_value {
|
||||
grep "${1}" <<< "${2}" | cut -d":" -f2 | xargs
|
||||
}
|
||||
|
||||
plugin="fail2ban"
|
||||
while true; do
|
||||
JAILS="$(sudo /usr/bin/fail2ban-client status 2>/dev/null | grep 'Jail list' | cut -d":" -f2 | tr ',' "\n" | xargs)"
|
||||
|
||||
for j in $JAILS; do
|
||||
instance="$(echo "${j}" | tr '-' '_')"
|
||||
status="$(sudo /usr/bin/fail2ban-client status "${j}" 2>/dev/null)"
|
||||
|
||||
declare -A data
|
||||
data[total_failed]=$(extract_fail2ban_value "Total failed" "${status}")
|
||||
data[currently_failed]=$(extract_fail2ban_value "Currently failed" "${status}")
|
||||
data[total_banned]=$(extract_fail2ban_value "Total banned" "${status}")
|
||||
data[currently_banned]=$(extract_fail2ban_value "Currently banned" "${status}")
|
||||
|
||||
for key in "${!data[@]}"; do
|
||||
echo "PUTVAL $HOSTNAME/${plugin}-${instance}/gauge-${key} interval=$INTERVAL N:${data[$key]}"
|
||||
done
|
||||
|
||||
done
|
||||
sleep "$INTERVAL"
|
||||
done
|
Loading…
Reference in a new issue