high resolution resource monitoring
mkdir /var/log/resource-mon
# logrotate & startup for /usr/local/bin/resource-mon #off# @reboot root /usr/local/bin/resource-mon */5 * * * * root /usr/local/bin/resource-mon 35 00 01 * * root find /var/log/resource-mon -name "????-??" -mmin +30 -print0 | xargs -0r xz 35 00 * * * root find /var/log/resource-mon -name "????-??-??" -mmin +30 -print0 | xargs -0r xz 35 * * * * root find /var/log/resource-mon -name "????-??-??T??" -mmin +30 -print0 | xargs -0r xz
#!/bin/bash mkdir -p /var/log/resource-mon ( echo "<s t=\"$(date +%s)\">" echo "<df>" df -kP echo "</df>" echo "</s>" ) >> /var/log/resource-mon/$( date +%Y-%m )
#!/bin/bash mkdir -p /var/log/resource-mon OC1=0 OC2=0 OC3=0 OC4=0 while true ; do DATE=$( date +%s ) LOAD=$( cat /proc/loadavg ) DISKSTATS=$( cat /proc/diskstats ) eval $( awk '$1 == "br0:" { print "C1="$2,"C2="$3,"C3="$10,"C4="$11 }' /proc/net/dev ) AQ=$( a q ) DC1=$(( $C1 - $OC1 )) DC2=$(( $C2 - $OC2 )) DC3=$(( $C3 - $OC3 )) DC4=$(( $C4 - $OC4 )) # catch div by zero: if [ "$DC2" == 0 ]; then RDC12="?" else RDC12=$(( $DC1 / $DC2 )) fi if [ "$DC4" == 0 ]; then RDC34="?" else RDC34=$(( $DC3 / $DC4 )) fi ( echo "<s t=\"$DATE\">" echo "<rb>$DC1</rb><rp>$DC2</rp><rbpc>$RDC12</rbpc>" echo "<tb>$DC3</tb><tp>$DC4</tp><tbpc>$RDC34</tbpc>" echo "<sb>$(( $DC1 + $DC3 ))</sb><sp>$(( $DC2 + $DC4 ))</sp><l>$LOAD</l>" echo "<ds>" echo "$DISKSTATS" echo "</ds>" echo "<aq>" echo "$AQ" echo "</aq>" echo "</s>" ) >> /var/log/resource-mon/$( date +%FT%H ) #echo $DATE R: $DC1 $DC2 $RDC12 T: $DC3 $DC4 $RDC34 S: $(( $DC1 + $DC3 )) $(( $DC2 + $DC4 )) L: $LOAD OC1=$C1 OC2=$C2 OC3=$C3 OC4=$C4 sleep 1 done
chmod 755 /usr/local/bin/resource-mon bash -n /usr/local/bin/resource-mon &