soscmd/soscmd-stats
2023-06-03 11:28:50 +02:00

125 lines
7.5 KiB
Bash
Executable file

#!/bin/bash
# shellcheck disable=SC2009 disable=SC2086
export "LINEREP=\033[F"
export "LINESPACE= "
export "COLOR_RED=\e[0;31m"
export "COLOR_GREEN=\e[0;32m"
export "COLOR_YELLOW=\e[0;33m"
export "COLOR_BLUE=\e[0;34m"
export "COLOR_PURPLE=\e[0;35m"
export "COLOR_CYAN=\e[0;36m"
export "COLOR_RESET=\e[0m"
function ntb(){
case "$1" in
"1") echo "true" ;;
"2") echo "false" ;;
*) echo "error in conversion ($1)" ;;
esac
}
function isonline(){
case "$1" in
"0") echo "${COLOR_GREEN}online${COLOR_RESET} " ;;
"1") echo "${COLOR_RED}offline${COLOR_RESET}" ;;
*) echo "error in conversion ($1)" ;;
esac
}
echo -e "${COLOR_CYAN}Server statistics report"
echo -e "${COLOR_PURPLE}:: Computing memory usage${LINESPACE}"
export "MEM_TOTAL=$(free -m|awk '/^Speicher:/{print $2}')"
export "MEM_USED=$(free -m|awk '/^Speicher:/{print $3}')"
export "MEM_FREE=$(free -m|awk '/^Speicher:/{print $4}')"
export "MEM_AVAILABLE=$(free -m|awk '/^Speicher:/{print $7}')"
echo -e "${LINEREP}${COLOR_PURPLE}:: Computing swap usage${LINESPACE}"
export "SWAP_TOTAL=$(free -m|awk '/^Swap:/{print $2}')"
export "SWAP_USED=$(free -m|awk '/^Swap:/{print $3}')"
export "SWAP_FREE=$(free -m|awk '/^Swap:/{print $4}')"
echo -e "${LINEREP}${COLOR_PURPLE}:: Computing processor usage${LINESPACE}"
export "CPU_USAGE=$(vmstat 1 2 | awk 'END { print 100 - $15 }')"
echo -e "${LINEREP}${COLOR_PURPLE}:: Computing disk usage${LINESPACE}"
export "DISK_PERCENT=$(df -h|grep '/dev/mapper/cryptlvm'|head -1|awk '{printf $5}')"
export "DISK_FREE=$(df -h|grep '/dev/mapper/cryptlvm'|head -1|awk '{printf $4}')"
export "DISK_USED=$(df -h|grep '/dev/mapper/cryptlvm'|head -1|awk '{printf $3}')"
export "DISK_TOTAL=$(df -h|grep '/dev/mapper/cryptlvm'|head -1|awk '{printf $2}')"
echo -e "${LINEREP}${COLOR_PURPLE}:: Computing running services${LINESPACE}"
export "SERVICES_MASTODON_PUMA=$(ps -eo args|grep puma|grep "\\[live\\]"&>/dev/null;echo $?)"
export "SERVICES_MASTODON_STREAMING=$(ps -eo args|grep node|grep mastodon&>/dev/null;echo $?)"
export "SERVICES_MASTODON_SIDEKIQ=$(ps -eo args|grep sidekiq|grep ' live '&>/dev/null;echo $?)"
export "SERVICES_HTTPD=$(ps -eo args|grep httpd|grep ' -k '&>/dev/null;echo $?)"
export "SERVICES_DOCKER=$(ps -eo args|grep dockerd|grep '\--containerd'&>/dev/null;echo $?)"
export "SERVICES_MARIADB=$(ps -eo args|grep '/usr/bin'|grep mariadbd&>/dev/null;echo $?)"
export "SERVICES_PHP82=$(ps -eo args|grep php-fpm|grep php82&>/dev/null;echo $?)"
export "SERVICES_PHP81=$(ps -eo args|grep php-fpm|grep php81&>/dev/null;echo $?)"
export "SERVICES_PHP74=$(ps -eo args|grep php-fpm|grep php74&>/dev/null;echo $?)"
export "SERVICES_FAIL2BAN=$(ps -eo args|grep fail2ban-server|grep python3&>/dev/null;echo $?)"
export "SERVICES_PARTYSHARE=$(ps -eo args|grep partyshare|grep python3&>/dev/null;echo $?)"
export "SERVICES_FORGEJO=$(ps -eo args|grep forgejo|grep 'web -c'&>/dev/null;echo $?)"
export "SERVICES_FEDIRELAY=$(ps -eo args|grep activityrelay|grep python&>/dev/null;echo $?)"
export "SERVICES_TRACCAR=$(ps -eo args|grep traccar|grep java&>/dev/null;echo $?)"
export "SERVICES_SOSSCHEDULE=$(ps -eo args|grep sosschedule|grep bash&>/dev/null;echo $?)"
export "SERVICES_SYNCTHING=$(ps -eo args|grep syncthing|grep serve&>/dev/null;echo $?)"
export "SERVICES_WINGS=$(ps -eo args|grep wings|grep '/usr/local/bin'&>/dev/null;echo $?)"
export "SERVICES_PTEROQ=$(ps -eo args|grep 'artisan queue:work'|grep php&>/dev/null;echo $?)"
export "SERVICES_UPTIMEKUMA=$(docker ps|grep uptime-kuma&>/dev/null;echo $?)"
export "SERVICES_ADMINER=$(docker ps|grep adminer&>/dev/null;echo $?)"
export "SERVICES_POSTGRES=$(docker ps|grep postgres&>/dev/null;echo $?)"
export "SERVICES_MAILSERVER=$(docker ps|grep mailserver&>/dev/null;echo $?)"
echo -e "${LINEREP}${COLOR_PURPLE}:: Processing data${LINESPACE}"
export "SERVICES_MASTODON_PUMA=$(isonline $SERVICES_MASTODON_PUMA)"
export "SERVICES_MASTODON_STREAMING=$(isonline $SERVICES_MASTODON_STREAMING)"
export "SERVICES_MASTODON_SIDEKIQ=$(isonline $SERVICES_MASTODON_SIDEKIQ)"
export "SERVICES_HTTPD=$(isonline $SERVICES_HTTPD)"
export "SERVICES_DOCKER=$(isonline $SERVICES_DOCKER)"
export "SERVICES_MARIADB=$(isonline $SERVICES_MARIADB)"
export "SERVICES_PHP82=$(isonline $SERVICES_PHP82)"
export "SERVICES_PHP81=$(isonline $SERVICES_PHP81)"
export "SERVICES_PHP74=$(isonline $SERVICES_PHP74)"
export "SERVICES_FAIL2BAN=$(isonline $SERVICES_FAIL2BAN)"
export "SERVICES_PARTYSHARE=$(isonline $SERVICES_PARTYSHARE)"
export "SERVICES_FORGEJO=$(isonline $SERVICES_FORGEJO)"
export "SERVICES_FEDIRELAY=$(isonline $SERVICES_FEDIRELAY)"
export "SERVICES_TRACCAR=$(isonline $SERVICES_TRACCAR)"
export "SERVICES_SOSSCHEDULE=$(isonline $SERVICES_SOSSCHEDULE)"
export "SERVICES_SYNCTHING=$(isonline $SERVICES_SYNCTHING)"
export "SERVICES_WINGS=$(isonline $SERVICES_WINGS)"
export "SERVICES_PTEROQ=$(isonline $SERVICES_PTEROQ)"
export "SERVICES_UPTIMEKUMA=$(isonline $SERVICES_UPTIMEKUMA)"
export "SERVICES_ADMINER=$(isonline $SERVICES_ADMINER)"
export "SERVICES_POSTGRES=$(isonline $SERVICES_POSTGRES)"
export "SERVICES_MAILSERVER=$(isonline $SERVICES_MAILSERVER)"
export "GENERATED=$(date '+%T %d.%m.%Y')"
echo -e "${LINEREP}${COLOR_BLUE}Report generated: ${COLOR_YELLOW}$GENERATED"
echo -e "${COLOR_RESET}${COLOR_BLUE}Memory:${COLOR_RESET} Total ${COLOR_YELLOW}${MEM_TOTAL}MiB"
echo -e "${COLOR_RESET} Used ${COLOR_YELLOW}${MEM_USED}MiB"
echo -e "${COLOR_RESET} Available ${COLOR_YELLOW}${MEM_AVAILABLE}MiB"
echo -e "${COLOR_RESET} Free ${COLOR_YELLOW}${MEM_FREE}MiB"
echo -e "${COLOR_RESET}${COLOR_BLUE}Swap:${COLOR_RESET} Total ${COLOR_YELLOW}${SWAP_TOTAL}MiB"
echo -e "${COLOR_RESET} Used ${COLOR_YELLOW}${SWAP_USED}MiB"
echo -e "${COLOR_RESET} Free ${COLOR_YELLOW}${SWAP_FREE}MiB"
echo -e "${COLOR_RESET}${COLOR_BLUE}CPU:${COLOR_RESET} Usage ${COLOR_YELLOW}${CPU_USAGE}%"
echo -e "${COLOR_RESET}${COLOR_BLUE}Disk:${COLOR_RESET} any% ${COLOR_YELLOW}$DISK_PERCENT"
echo -e "${COLOR_RESET} Total ${COLOR_YELLOW}${DISK_TOTAL}iB"
echo -e "${COLOR_RESET} Used ${COLOR_YELLOW}${DISK_USED}iB"
echo -e "${COLOR_RESET} Free ${COLOR_YELLOW}${DISK_FREE}iB"
echo -e "${COLOR_RESET}${COLOR_BLUE}Services:${COLOR_RESET} $SERVICES_DOCKER Docker"
echo -e "${COLOR_RESET} $SERVICES_FAIL2BAN fail2ban"
echo -e "${COLOR_RESET} $SERVICES_SOSSCHEDULE sosschedule"
echo -e "${COLOR_RESET} $SERVICES_SYNCTHING Syncthing"
echo -e "${COLOR_RESET} $SERVICES_MARIADB MariaDB"
echo -e "${COLOR_RESET} $SERVICES_POSTGRES PostgreSQL"
echo -e "${COLOR_RESET} $SERVICES_PHP82 PHP82 FPM"
echo -e "${COLOR_RESET} $SERVICES_PHP81 PHP81 FPM"
echo -e "${COLOR_RESET} $SERVICES_PHP74 PHP74 FPM"
echo -e "${COLOR_RESET} $SERVICES_WINGS Wings"
echo -e "${COLOR_RESET} $SERVICES_PTEROQ Pteroq"
echo -e "${COLOR_RESET} $SERVICES_ADMINER Adminer"
echo -e "${COLOR_RESET} $SERVICES_HTTPD Apache"
echo -e "${COLOR_RESET} $SERVICES_MAILSERVER Mailserver"
echo -e "${COLOR_RESET} $SERVICES_UPTIMEKUMA Uptime Kuma"
echo -e "${COLOR_RESET} $SERVICES_FORGEJO Forgejo"
echo -e "${COLOR_RESET} $SERVICES_MASTODON_PUMA Mastodon (Puma)"
echo -e "${COLOR_RESET} $SERVICES_MASTODON_STREAMING Mastodon (Streaming)"
echo -e "${COLOR_RESET} $SERVICES_MASTODON_SIDEKIQ Mastodon (Sidekiq)"
echo -e "${COLOR_RESET} $SERVICES_FEDIRELAY FediRelay"
echo -e "${COLOR_RESET} $SERVICES_PARTYSHARE Partyshare"
echo -e "${COLOR_RESET} $SERVICES_TRACCAR Traccar"