CasperSecurity
| Current Path : /usr/local/bin/ |
|
|
| Current File : //usr/local/bin/server_health_check.sh |
#!/bin/bash
# =================================================================
# --- SERVER HEALTH CHECK SCRIPT ---
# =================================================================
# --- CONFIGURATION - CHANGE THESE VALUES! ---
# Set the email address to send the report to.
#EMAIL_TO="kabindersingh@yobytech.com"
EMAIL_TO=(
"kabindersingh@yobytech.com"
"support.manager@yobytech.com"
"ashok.sarangi@yobytech.com"
)
# Set the warning thresholds.
DISK_THRESHOLD=85 # Warn if disk usage is over 85%
LOAD_THRESHOLD=5 # Warn if 1-minute load average is over 5.0
MEMORY_THRESHOLD=85 # Warn if RAM usage is over 85%
# --- END OF CONFIGURATION ---
# --- DO NOT EDIT BELOW THIS LINE ---
HOSTNAME=$(hostname)
TODAY=$(date +"%Y-%m-%d %H:%M:%S")
SUBJECT="[Health Report] - Server: ${HOSTNAME} - ${TODAY}"
REPORT=""
# Function to add a check to the report
add_to_report() {
LABEL=$1
VALUE=$2
STATUS=$3
REPORT+=$(printf "%-25s %-20s %s\n" "${LABEL}" "${VALUE}" "${STATUS}")
}
# --- GATHERING DATA ---
# 1. System Load
LOAD_AVG=$(cut -d' ' -f1 /proc/loadavg)
LOAD_STATUS="OK"
if (( $(echo "${LOAD_AVG} > ${LOAD_THRESHOLD}" | bc -l) )); then
LOAD_STATUS="!! CRITICAL !!"
fi
# 2. Disk Usage (Root Partition)
DISK_USAGE=$(df -h / | tail -n 1 | awk '{print $5}' | sed 's/%//')
DISK_STATUS="OK"
if [ "${DISK_USAGE}" -gt "${DISK_THRESHOLD}" ]; then
DISK_STATUS="!! CRITICAL !!"
fi
# 3. Memory Usage
MEMORY_USAGE=$(free -m | awk '/Mem:/ {printf "%.0f", $3/$2 * 100.0}')
MEMORY_STATUS="OK"
if [ "${MEMORY_USAGE}" -gt "${MEMORY_THRESHOLD}" ]; then
MEMORY_STATUS="!! CRITICAL !!"
fi
# 4. Apache Service Status
if systemctl is-active --quiet apache2; then
APACHE_STATUS="Running"
APACHE_HEALTH="OK"
else
APACHE_STATUS="NOT RUNNING"
APACHE_HEALTH="!! CRITICAL !!"
fi
# 5. MySQL Service Status
if systemctl is-active --quiet mysql; then
MYSQL_STATUS="Running"
MYSQL_HEALTH="OK"
else
MYSQL_STATUS="NOT RUNNING"
MYSQL_HEALTH="!! CRITICAL !!"
fi
# --- BUILDING THE REPORT ---
REPORT="Health Check Report for ${HOSTNAME} on ${TODAY}\n"
REPORT+="==============================================================\n"
REPORT+=$(printf "%-25s %-20s %s\n" "METRIC" "VALUE" "STATUS")
REPORT+="--------------------------------------------------------------\n"
add_to_report "System Load (1 min):" "${LOAD_AVG}" "${LOAD_STATUS}"
add_to_report "Disk Usage (/):" "${DISK_USAGE}%" "${DISK_STATUS}"
add_to_report "Memory Usage:" "${MEMORY_USAGE}%" "${MEMORY_STATUS}"
add_to_report "Apache Service:" "${APACHE_STATUS}" "${APACHE_HEALTH}"
add_to_report "MySQL Service:" "${MYSQL_STATUS}" "${MYSQL_HEALTH}"
REPORT+="==============================================================\n"
# --- SENDING THE EMAIL ---
echo -e "${REPORT}" | mail -s "${SUBJECT}" "${EMAIL_TO[@]}"
exit 0