#!/bin/bash ############################################################# #### Fail2Ban Metrics install Script for Prometheus #### #### Centos/Redhat and Debian/Ubuntu Servers. #### #### #### #### Author: Phil Connor 08/27/2023 #### #### Contact: contact@mylinux.work #### #### Version 1.92.011924 #### #### #### #### To use this script chmod it to 755 #### #### or simply type bash #### ############################################################# if ! crontab -l | grep -q "fail2ban_metrics.sh"; then echo -e "$(crontab -u root -l)\n*/5 * * * * /usr/local/bin/fail2ban_metrics.sh > /var/lib/node_exporter/fail2ban_metrics.prom 2>&1" | crontab -u root - fi install_fail2_metrics() { { { echo 'jails=0' echo '' # shellcheck disable=SC2016,SC2028 echo 'for jail in $(fail2ban-client status | grep '\''Jail list:'\'' | sed '\''s/.*Jail list:[\t ]*//;s/,//g'\'')' echo ' do' # shellcheck disable=SC2004,SC2016,SC2030 echo ' jails=$(($jails + 1))' # shellcheck disable=SC2016 echo ' fail2ban-client status "$jail" | awk -F: '\'' ' # shellcheck disable=SC2016 echo ' $1 ~ /Currently failed/ {' # shellcheck disable=SC2016,SC2154 echo ' print "fail2ban_failed_current{jail=\"'\''"$jail"'\''\"} " $2;' echo ' }' # shellcheck disable=SC2016 echo ' $1 ~ /Total failed/ {' # shellcheck disable=SC2016 echo ' print "fail2ban_failed_total{jail=\"'\''"$jail"'\''\"} " $2;' echo ' }' # shellcheck disable=SC2016 echo ' $1 ~ /Currently banned/ {' # shellcheck disable=SC2016 echo ' print "fail2ban_banned_current{jail=\"'\''"$jail"'\''\"} " $2;' echo ' }' # shellcheck disable=SC2016 echo ' $1 ~ /Total banned/ {' # shellcheck disable=SC2016 echo ' print "fail2ban_banned_total{jail=\"'\''"$jail"'\''\"} " $2;' echo ' }'\'' ' echo ' done | sort | awk '\'' ' echo '' echo 'BEGIN {failc=1; failt=1; banc=1; bant=1}' echo '/^fail2ban_failed_current/ { if (failc) {' echo ' print "# HELP fail2ban_failed_current Current number of failures.";' echo ' print "# TYPE fail2ban_failed_current gauge";' echo ' failc=0;' echo ' } }' echo '/^fail2ban_failed_total/ { if (failt) {' echo ' print "# HELP fail2ban_failed_total Total number of failures.";' echo ' print "# TYPE fail2ban_failed_total counter";' echo ' failt=0;' echo ' } }' echo '/^fail2ban_banned_current/ { if (banc) {' echo ' print "# HELP fail2ban_banned_current Current number banned.";' echo ' print "# TYPE fail2ban_banned_current gauge";' echo ' banc=0;' echo ' } }' echo '/^fail2ban_banned_total/ { if (bant) {' echo ' print "# HELP fail2ban_banned_total Total number banned.";' echo ' print "# TYPE fail2ban_banned_total counter";' echo ' bant=0;' echo ' } }' # shellcheck disable=SC2016 echo '{ print $0 }'\'' ' echo '' echo 'cat < /usr/local/bin/fail2ban_metrics.sh chmod 755 /usr/local/bin/fail2ban_metrics.sh } } install_fail2_metrics