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 &