Wednesday, November 14, 2007

jabberd2 components memory load stats using rrdtool

First we need to create rrd database:
jabber-load-create.sh
#!/bin/bash /usr/bin/rrdtool create jabber-load.rrd -s 300 \ DS:smmem:GAUGE:600:U:U \ DS:smhomebsdmem:GAUGE:600:U:U \ DS:c2smem:GAUGE:600:U:U \ DS:routermem:GAUGE:600:U:U \ DS:resolvermem:GAUGE:600:U:U \ DS:s2smem:GAUGE:600:U:U \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400 \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400 \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400 \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400 \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400 \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400


Script to getting statistic from *nix system.
jabber-load.sh
#!/bin/bash

smmem=`ps ux | grep sm | grep -v grep | grep xml |grep -v sm.homebsd.xml | awk '{print $4}'`
smhomebsdmem=`ps ux | grep sm | grep -v grep | grep xml| grep -v sm.xml| awk '{print $4}'`
c2smem=`ps ux | grep c2s | grep -v grep | grep xml| awk '{print $4}'`
routermem=`ps ux | grep router | grep -v grep | grep xml | awk '{print $4}'`
resolvermem=`ps ux | grep resolver | grep -v grep | grep xml | awk '{print $4}'`
s2smem=`ps ux | grep s2s | grep -v grep | grep xml | awk '{print $4}'`


echo "$smmem"
echo "$smhomebsdmem"
echo "$c2smem"
echo "$routermem"
echo "$resolvermem"
echo "$s2smem"

Script to making update to rrd database and creating graphs
jabber-load-update.sh (parametrs)
#!/bin/bash
RRD="/usr/bin/rrdtool"
DT="/root/stats/jabber-memory/jabber-load.sh"
DB="/root/stats/jabber-memory/jabber-load.rrd"
COMMENT="Generated on `date "+%d %m %y %H\:%M %Z"`"
IMAGE="/home/httpd/html/jabber/stats/jabber-memory-load-$1.png"
TITLE="Jabber component memory load - $1"
VALUES=`$DT | while read x; do echo -n ":$x"; done`
$RRD update $DB N$VALUES
$RRD graph $IMAGE -s -1"$1" -e now -a PNG \
-t "$TITLE" \
-v "%" \
DEF:smmem=$DB:smmem:AVERAGE \
DEF:smhomebsdmem=$DB:smhomebsdmem:AVERAGE \
DEF:c2smem=$DB:c2smem:AVERAGE \
DEF:routermem=$DB:routermem:AVERAGE \
DEF:resolvermem=$DB:resolvermem:AVERAGE \
DEF:s2smem=$DB:s2smem:AVERAGE \
COMMENT:" now avg. max. min."\\n \
LINE1:smmem#ff0000:"smmem" \
GPRINT:smmem:LAST:" %5.1lf" \
GPRINT:smmem:AVERAGE:"%5.1lf" \
GPRINT:smmem:MAX:"%5.1lf" \
GPRINT:smmem:MIN:"%5.1lf"\\n \
LINE1:smhomebsdmem#ff00ff:"smhomebsdmem" \
GPRINT:smhomebsdmem:LAST:"%5.1lf" \
GPRINT:smhomebsdmem:AVERAGE:"%5.1lf" \
GPRINT:smhomebsdmem:MAX:"%5.1lf" \
GPRINT:smhomebsdmem:MIN:"%5.1lf"\\n \
LINE1:c2smem#0000ff:"c2smem" \
GPRINT:c2smem:LAST:" %5.1lf" \
GPRINT:c2smem:AVERAGE:"%5.1lf" \
GPRINT:c2smem:MAX:"%5.1lf" \
GPRINT:c2smem:MIN:"%5.1lf"\\n \
LINE1:routermem#00ffff:"routermem" \
GPRINT:routermem:LAST:" %5.1lf" \
GPRINT:routermem:AVERAGE:"%5.1lf" \
GPRINT:routermem:MAX:"%5.1lf" \
GPRINT:routermem:MIN:"%5.1lf"\\n \
LINE1:resolvermem#00ff00:"resolvermem" \
GPRINT:resolvermem:LAST:" %5.1lf" \
GPRINT:resolvermem:AVERAGE:"%5.1lf" \
GPRINT:resolvermem:MAX:"%5.1lf" \
GPRINT:resolvermem:MIN:"%5.1lf"\\n \
LINE1:s2smem#ffff00:"s2smem" \
GPRINT:s2smem:LAST:" %5.1lf" \
GPRINT:s2smem:AVERAGE:"%5.1lf" \
GPRINT:s2smem:MAX:"%5.1lf" \
GPRINT:s2smem:MIN:"%5.1lf"\\n \
COMMENT:"$COMMENT"
using: jabber-load-update.sh (parametrs: hour, day, week, etc - period of time)

And script to creating graphs
jabber-load-graph.sh
#!/bin/bash /root/stats/jabber-memory/jabber-load-update.sh hour > /dev/null 2>&1 /root/stats/jabber-memory/jabber-load-update.sh day > /dev/null 2>&1 /root/stats/jabber-memory/jabber-load-update.sh week > /dev/null 2>&1 /root/stats/jabber-memory/jabber-load-update.sh month > /dev/null 2>&1 /root/stats/jabber-memory/jabber-load-update.sh year > /dev/null 2>&1
Example graphs: