#!/bin/bash
# iostat, /proc/diskstats
#
# continuos monitoring
# Yet another VM resources monitoring tool

MONITOR_LOG_FILE=/var/log/vmutil/vmresmond.log

# Check if necessary commands are installed
#for cmd in iostat iotop df du vmstat sar netstat hdparm; do
#    if ! command -v "$cmd">/dev/null 2>&1; then
#        echo "Error: $cmd is not installed."
#        exit 1
#    fi
#done

(
    WRAPPER="/usr/bin/nice -n 10 /usr/bin/ionice -c 3"
    echo
    echo "Date:"
    date
    
    echo
    echo "_mrk_ $curcnt pu `cat /proc/uptime`"
    
    echo
    echo "Uptime: `uptime`"
    
    echo
    echo "/proc/meminfo:"
    cat /proc/meminfo
    
    echo
    echo "/proc/loadavg:"
    cat /proc/loadavg
    
    echo
    echo "ps aux:"
    $WARPPER ps wwax -o user,ppid,pid,psr,%cpu,%mem,vsz,rss,stat,nice,start,time,cmd --sort=-%cpu
    
    echo
    echo "vmstat:"
    vmstat -wt 1 2
    echo
    echo "Disk Usage:"
    df -h
    
    echo
    echo "Disk Throughput (IOPS):"
    iostat -x 1 1
    
    echo
    echo "I/O Wait Time:"
    echo "`vmstat 1 1 | awk 'NR==3 {print $16}'`%"
    
    echo
    echo "Disk Latency:"
    iostat -x 1 1 | awk 'NR>3 {print $1, $10}'
    
    echo
    echo "Read/Write Operations per second:"
    iostat -d 1 1
    
    echo
    echo "File System Errors:"
    dmesg | grep -i error
    
    echo
    echo "Per-Process I/O Statistics:"
    /usr/sbin/iotop -b -n 1 | head -n 20
    
    echo
    echo "Network Throughput:"
    sar -n DEV 1 1
    
    echo
    echo "Network latency:"
    defgw_ip=`ip route | awk '/default/ { print $3 }'`
    echo "`ping -c 4 $defgw_ip | tail -n 1 | awk -F '/' '{print $5}'` ms"
    
    echo
    echo "Buffer Cache Statistics:"
    vmstat -s | grep "cache"
    
    echo
    echo "S.M.A.R.T Data:"
    /usr/sbin/smartctl -a /dev/sda
    
    echo
    echo "hdparm -Tt:"
    /usr/sbin/hdparm -Tt /dev/sda


) 1>>$MONITOR_LOG_FILE 2>&1

