====== resourcemon ====== high resolution resource monitoring ===== objective ===== * collect information about used resources, several sources at a time * compile these into an xml structure * deliver for further processing * postprocess * plot graphs ===== xml ===== * overall: * the container element per data set is * the container element carries an attribute "t" which contains a unix timestamp * data tags: * disk usage, output of "df -kP" * load, /proc/loadavg * network: /proc/net/dev * received bytes * received packets * received avg. bytes per packet * transmitted bytes * transmitted packets * transmitted avg. bytes per packet * total bytes * total packets * disk i/o * disk stats, /proc/diskstats, see https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats * application: * "asbman -i asbroker1 -q" ===== output ===== * directory: /var/log/resource-mon * file names: * YYYY-MM * YYYY-MM-DD ===== deployment ===== mkdir /var/log/resource-mon * cron job # 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 * simple filesystem monitoring #!/bin/bash mkdir -p /var/log/resource-mon ( echo "" echo "" df -kP echo "" echo "" ) >> /var/log/resource-mon/$( date +%Y-%m ) * extensive load / network & disk i/o / application performance mapping #!/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 "" echo "$DC1$DC2$RDC12" echo "$DC3$DC4$RDC34" echo "$(( $DC1 + $DC3 ))$(( $DC2 + $DC4 ))$LOAD" echo "" echo "$DISKSTATS" echo "" echo "" echo "$AQ" echo "" echo "" ) >> /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 &