Linux server health/process check

All the details about the server health, process, resource utilization can be find using this single bash script.

Advantages:

  1. Easy to get complete server information in a single click.
  2. The script is simple to edit and add services to.
  3. Shows details about the Process running, disk space, downtime, memory details, high process lists and lot more.

Let’s start!!

1) Create the “healthcheck” script file and add the following codes to it.

# vi healthcheck

#! /bin/bash
#color notes
NC='\033[0m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
cyan='\033[0;36m'
yellow='\033[0;33m'
#Sectioning .........
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
echo "Server details:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"

#fetching basic specs from the server(user,ip,os)
user=`whoami`
echo -e "${cyan}User:${NC} $user"
hostname=`hostname`
echo -e "${cyan}hostname:${NC} $hostname"
ip=`hostname -I`
echo -e "${cyan}IP address:${NC} $ip"
os=`cat /etc/os-release | grep 'NAME\|VERSION' | grep -v 'VERSION_ID' | grep -v 'PRETTY_NAME' | grep NAME`
echo -e "${cyan}OS:${NC} $os"

#Sectioning.....
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
echo "Service status:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
sleep 1

#checking tomcat status
echo -e "${yellow}1) Tomcat${NC}"
#grepping tomcat status from ps aux
pp=`ps aux | grep tomcat | grep "[D]java.util"`
if [[ $pp =~ "-Xms512M" ]];then
 echo -e "   Status: ${GREEN}UP${NC}"

else
 echo -e "   Status: ${RED}DOWN${NC}"

fi
echo ""
#function to check apache is running or not!
function apache(){
echo -e "${yellow}2) Apache-httpd${NC}"
#grepping apache status from ps aux
httpd=`ps aux | grep httpd | grep apache`
if [[ $httpd =~ "apache" ]];then
 echo -e "   Status: ${GREEN}UP${NC}"

else
 echo -e "   Status: ${RED}DOWN${NC}"

fi

}

#function to check elastic is running or not
function elastic(){
echo -e "${yellow}3) Elasticsearch${NC}"
#grepping elasticsearch status from ps aux
elastic=`ps aux | grep elasticsearch`
if [[ $elastic =~ "elastic+" ]];then
  echo -e "   Status: ${GREEN}UP${NC}"
else
 echo -e "    Status: ${RED}DOWN${NC}"

fi
#function to check mysql is running or not
}
function mysql(){
echo -e "${yellow}4) Mysql${NC}"
#grepping mysql status from ps aux
mysql=`ps aux | grep mysqld`
if [[ $mysql =~ "mysqld" ]];then
 echo -e "   Status: ${GREEN}UP${NC}"
else
 echo -e "   Status: ${RED}DOWN${NC}"

fi
}


function docker(){
echo -e "${yellow}5) Docker${NC}"
#grepping docker status from ps aux
docker=`systemctl status docker | grep dead`
if [[ $docker =~ "dead" ]];then
 echo -e "   Status: ${GREEN}UP${NC}"
else
 echo -e "   Status: ${RED}DOWN${NC}"

fi
}

#calling functions
apache
echo ""
elastic
echo ""
mysql
echo ""
docker
echo ""
#Sectioning............
#Fetching mem and cpu informations
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
echo "Memory Details:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
sleep 1
#view mem info
free -h
#get uptime details
uptime=$(uptime | awk '{print $3,$4}' | cut -f1 -d,)
echo -e "${cyan}System Uptime:${NC} :$uptime"
#Fetching the load average
loadaverage=$(top -n 1 -b | grep "load average:" | awk '{print $10 $11 $12}')
echo -e "${cyan}Load average:${NC}: $loadaverage"
echo -e "${cyan}The top 10 services with high resource usage are listed below.${NC}"
#Get top services with high resource utilization
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head


#sectioning...........
#Fetching server space details!
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
echo "Server space Details:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${NC}"
#View disk space details
df -h


echo "----------------------------------------------------------------------------------------------------------------"

2) By copying the file to the sbin directory and giving it execute permission, we can turn the script into a global command.

# cp healthcheck /usr/sbin/

# chmod +x /usr/sbin/healthcheck

3) Now you can call the script from anywhere in the shell

# healthcheck

checkout the script output

Reference 

  • https://dev.to/vishak369/linux-server-healthprocess-check-20co
  • https://github.com/abdalluhmostafa/linux-health-check
  • https://github.com/CanciuCostin/linux-security-healthcheck
Print Friendly, PDF & Email
%d bloggers like this: