64 lines
3.9 KiB
Django/Jinja
64 lines
3.9 KiB
Django/Jinja
#!/bin/bash
|
|
|
|
# Monitoring script
|
|
|
|
# Secrets
|
|
username="{{ alert_username }}"
|
|
password="{{ alert_password }}"
|
|
VAULT="{{ alert_vault }}"
|
|
|
|
# Servers
|
|
servers=({{ alert_list_server | join (' ') }})
|
|
local_ip=$(hostname -I | awk '{print $1}')
|
|
|
|
# SSL
|
|
site="{{ alert_server_ssl }}"
|
|
|
|
# Vérifier s'il y a un paramètre
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage : $0 [storage|load|ping|health|ssl|backup_git|backup_vault|cpu]"
|
|
exit 1
|
|
fi
|
|
|
|
# Récupérer le paramètre
|
|
parametre="$1"
|
|
|
|
# Vérifier la valeur du paramètre et afficher le résultat correspondant
|
|
if [ "$parametre" = "storage" ]; then
|
|
[ $(df -h / | awk 'NR==2 {sub(/%/, "", $(NF-1)); print $(NF-1)}') -gt 80 ] && curl -u "$username:$password" -H "Title: Full Storage" -H "ta:card_index_dividers" -d "90% used on `hostname`" https://alert.jingoh.fr/{{ alerts_storage }}
|
|
elif [ "$parametre" = "load" ]; then
|
|
[ $(uptime | awk -F'load average: ' '{print $2}' | awk '{print $1}' | cut -d , -f1) '>' $(nproc) ] && curl -u "$username:$password" -H "Title: Load" -H "ta:battery" -d "`hostname` Load with `uptime`" https://alert.jingoh.fr/{{ alerts_load }}
|
|
elif [ "$parametre" = "ping" ]; then
|
|
for ip in "${servers[@]}"
|
|
do
|
|
if [ "$ip" != "$local_ip" ]; then
|
|
ping -c 1 "$ip" || curl -u "$username:$password" -H "Title: Ping Server" -H "ta:sos" -d "Server ping failed from `hostname` to $ip" https://alert.jingoh.fr/{{ alerts_ping }}
|
|
fi
|
|
done
|
|
elif [ "$parametre" = "health" ]; then
|
|
[ $(curl -s -o /dev/null -w "%{http_code}" https://gitea.jingoh.fr) -gt 400 ] && curl -u "$username:$password" -H "Title: Service gitea" -H "ta:bangbang" -d "No response From gitea.jingoh.fr" https://alert.jingoh.fr/{{ alerts_health }}
|
|
[ $(curl -s -o /dev/null -w "%{http_code}" https://vault.jingoh.fr) -gt 400 ] && curl -u "$username:$password" -H "Title: Service vault" -H "ta:bangbang" -d "No response From vault.jingoh.fr" https://alert.jingoh.fr/{{ alerts_health }}
|
|
[ $(curl -s -o /dev/null -w "%{http_code}" https://homepage.jingoh.fr) -gt 400 ] && curl -u "$username:$password" -H "Title: Service homepage" -H "ta:bangbang" -d "No response From homepage.jingoh.fr" https://alert.jingoh.fr/{{ alerts_health }}
|
|
elif [ "$parametre" = "ssl" ]; then
|
|
expiration_timestamp=$(date -d "$(echo | openssl s_client -servername $site -connect $site:443 2>/dev/null | openssl x509 -noout -enddate | cut -d "=" -f 2)" +%s)
|
|
current_timestamp=$(date +%s)
|
|
difference=$((expiration_timestamp - current_timestamp))
|
|
threshold=$((20 * 24 * 3600)) # 20 jours en secondes
|
|
if [ $difference -lt $threshold ]; then
|
|
curl -u "$username:$password" -H "Title: HTTPS Certificats" -H "ta:closed_lock_with_key" -d "*.jingoh.fr Less than 20 days" https://alert.jingoh.fr/{{ alerts_ssl }}
|
|
fi
|
|
elif [ "$parametre" = "backup_git" ]; then
|
|
docker exec -u git -w /data/ gitea gitea dump -c /data/gitea/conf/app.ini
|
|
mv /opt/dockerapps/appdata/gitea/gitea/gitea-dump-*.zip /opt/dockerapps/backup/
|
|
docker exec gitea-db pg_dump -U root gitea > gitea-db-pg.sql
|
|
mv ./gitea-db-pg.sql /opt/dockerapps/backup/
|
|
curl -u "$username:$password" -H "Title: Backup gitea" -H "ta:inbox_tray" -d "Local Backup gitea done !" https://alert.jingoh.fr/{{ alerts_backup_gitea }}
|
|
elif [ "$parametre" = "backup_vault" ]; then
|
|
docker run --rm --volumes-from=vault -e UID=0 -e BACKUP_DIR=/data/backup -e TIMESTAMP=true -e ENCRYPTION_PASSWORD="$VAULT" bruceforce/vaultwarden-backup manual
|
|
curl -u "$username:$password" -H "Title: Backup vault" -H "ta:inbox_tray" -d "Local Backup vault done !" https://alert.jingoh.fr/{{ alerts_backup_vault }}
|
|
elif [ "$parametre" = "cpu" ]; then
|
|
[ "$(echo "$(ps -eo %cpu --sort=-%cpu | awk 'NR>1 { sum += $1 } END { print sum }') > $(nproc) * 50" | bc)" -eq 1 ] && curl -u "$username:$password" -H "Title: CPU `nproc` cores" -H "ta:warning" -d "High usage `ps -eo %cpu --sort=-%cpu | awk 'NR>1 { sum += $1 } END { print sum }'`" https://alert.jingoh.fr/{{ alerts_cpu }}
|
|
else
|
|
echo "Paramètre invalide : Utilisez [storage|load|ping|health|ssl|backup_git|backup_vault|cpu]"
|
|
fi
|