diff options
Diffstat (limited to 'abs/mv-core')
32 files changed, 5215 insertions, 0 deletions
diff --git a/abs/mv-core/hobbitmon/PKGBUILD b/abs/mv-core/hobbitmon/PKGBUILD new file mode 100755 index 0000000..592392d --- /dev/null +++ b/abs/mv-core/hobbitmon/PKGBUILD @@ -0,0 +1,84 @@ +pkgname=hobbitserver +provides=hobbit +pkgver=4.2.0 +pkgrel=98 +pkgdesc="Hobbit is a system for monitoring servers and networks. " +license="GPL" +arch=('i686') + +url="http://hobbitmon.sourceforge.net/" +source=(http://voxel.dl.sourceforge.net/sourceforge/hobbitmon/hobbit-4.2.0.tar.gz hobbitadd.py hobbitcheck.sh hobbitgraph.cfg.diff hobbitserver.cfg.diff hobbitlaunch.cfg.diff clientlaunch.cfg.diff hobbitstorage.py hbnotes.py hobbit-myth-orphan.sh hobbit-clients.cfg hbfunc.py be.png tuner.png tv.png hobbit-mem-myth.sh hobbit_notify.sh hobbit-alerts.cfg hobbit_myth_data.py) +depends="rrdtool fping pcre python graphviz" +install=hobbit.install + +build() { +cd $startdir/src/hobbit-$pkgver +ENABLESSL=n \ +ENABLELDAP=n \ +ENABLELDAPSSL=n \ +BBUSER=nobody \ +BBTOPDIR=/data/srv/hobbit \ +BBVAR=/data/srv/hobbit/var \ +BBHOSTURL=/hobbit \ +CGIDIR=/data/srv/httpd/htdocs/hobbit/hobbit-cgi \ +BBCGIURL=/hobbit/hobbit-cgi \ +SECURECGIDIR=/data/srv/httpd/htdocs/hobbit/hobbit-seccgi \ +SECUREBBCGIURL=/hobbit/hobbit-seccgi \ +HTTPDGID=nobody \ +BBLOGDIR=/var/log/hobbit \ +BBHOSTNAME=localhost \ +BBHOSTIP=127.0.0.1 \ +MANROOT=/usr/share/man \ +BARS=all \ +USENEWHIST=y \ +PIXELCOUNT=960 \ +INSTALLBINDIR=/data/srv/hobbit/server/bin \ +INSTALLETCDIR=/data/srv/hobbit/etc \ +INSTALLWEBDIR=/data/srv/hobbit/web \ +INSTALLEXTDIR=/data/srv/hobbit/server/ext \ +INSTALLTMPDIR=/data/srv/hobbit/tmp \ +INSTALLWWWDIR=/data/srv/httpd/htdocs/hobbit/ \ +USERFPING=/usr/sbin/fping \ +./configure + make PKGBUILD=1|| return 1 + make PKGBUILD=1 INSTALLROOT=$startdir/pkg install + +cd $startdir/src +cp $startdir/src/hobbitadd.py $startdir/pkg/data/srv/hobbit/server/bin/ +install -D -m755 $startdir/src/hobbitstorage.py $startdir/pkg/data/srv/hobbit/server/ext/hobbitstorage.py +install -D -m755 $startdir/src/hobbit-myth-orphan.sh $startdir/pkg/data/srv/hobbit/server/ext/hobbit-myth-orphan.sh +install -D -m755 $startdir/src/hbfunc.py $startdir/pkg/data/srv/hobbit/server/ext/hbfunc.py +install -D -m755 $startdir/src/hbnotes.py $startdir/pkg/data/srv/hobbit/server/ext/hbnotes.py + install -D -m755 $startdir/src/hobbit_myth_data.py $startdir/pkg/data/srv/hobbit/server/ext/hobbit_myth_data.py +install -D -m755 $startdir/src/hobbit-mem-myth.sh $startdir/pkg/data/srv/hobbit/server/ext/hobbit-mem-myth.sh +install -D -m755 hobbitcheck.sh $startdir/pkg/etc/cron.tenminutes/hobbitcheck.sh +install -m755 hobbit-clients.cfg $startdir/pkg/data/srv/hobbit/etc/hobbit-clients.cfg +install -m755 hobbit-alerts.cfg $startdir/pkg/data/srv/hobbit/etc/hobbit-alerts.cfg +install -m755 hobbit_notify.sh $startdir/pkg/data/srv/hobbit/server/bin/hobbit_notify.sh + +install -m755 $startdir/src/tv.png $startdir/pkg/data/srv/httpd/htdocs/hobbit/gifs/tv.png +install -m755 $startdir/src/tuner.png $startdir/pkg/data/srv/httpd/htdocs/hobbit/gifs/tuner.png +install -m755 $startdir/src/be.png $startdir/pkg/data/srv/httpd/htdocs/hobbit/gifs/be.png + + +#apply patches to conf file + +cd $startdir/pkg/data/srv/hobbit/etc +patch -p0 < $startdir/src/hobbitgraph.cfg.diff +patch -p0 < $startdir/src/hobbitserver.cfg.diff +patch -p0 < $startdir/src/hobbitlaunch.cfg.diff + + +cd - +cd $startdir/pkg/data/srv/hobbit/client/etc +patch -p0 < $startdir/src/clientlaunch.cfg.diff +cd - + + + +#create client package as well +install -D -m755 $startdir/src/hobbit-mem-myth.sh $startdir/pkg/data/srv/hobbit/client/ext/hobbit-mem-myth.sh +cp -rp /$startdir/pkg/data/srv/hobbit/client $startdir/../hobbit-client + +} + diff --git a/abs/mv-core/hobbitmon/be.png b/abs/mv-core/hobbitmon/be.png Binary files differnew file mode 100644 index 0000000..2267cab --- /dev/null +++ b/abs/mv-core/hobbitmon/be.png diff --git a/abs/mv-core/hobbitmon/clientlaunch.cfg.diff b/abs/mv-core/hobbitmon/clientlaunch.cfg.diff new file mode 100644 index 0000000..76bb678 --- /dev/null +++ b/abs/mv-core/hobbitmon/clientlaunch.cfg.diff @@ -0,0 +1,12 @@ +--- clientlaunch.cfg.orig 2008-01-08 09:24:06.000000000 -0600 ++++ clientlaunch.cfg 2008-01-08 10:17:26.000000000 -0600 +@@ -35,3 +35,9 @@ + LOGFILE $HOBBITCLIENTHOME/logs/hobbitclient.log + INTERVAL 5m + ++[memmyth] ++ ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg ++ CMD /data/srv/hobbit/client/ext/hobbit-mem-myth.sh ++ LOGFILE /data/srv/hobbit/client/mythmem.log ++ INTERVAL 5m ++ diff --git a/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg b/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg new file mode 100644 index 0000000..8457a8f --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg @@ -0,0 +1,43 @@ +# +# The clientlaunch.cfg file is loaded by "hobbitlaunch". +# It controls which of the Hobbit client-side modules to run, +# (both the main client "hobbitclient.sh" and any client-side +# extensions); how often, and with which parameters, options +# and environment variables. +# +# Note: On the Hobbit *server* itself, this file is normally +# NOT used. Instead, both the client- and server-tasks +# are controlled by the hobbitlaunch.cfg file. +# + +# msgcache is used for passive clients, that cannot connect +# directly to the Hobbit server. This is not the default +# setup, so this task is normally disabled. +[msgcache] + DISABLED + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD $HOBBITCLIENTHOME/bin/msgcache --no-daemon --pidfile=$HOBBITCLIENTHOME/logs/msgcache.pid + LOGFILE $HOBBITCLIENTHOME/logs/msgcache.log + +# The main client task +[client] + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD $HOBBITCLIENTHOME/bin/hobbitclient.sh + LOGFILE $HOBBITCLIENTHOME/logs/hobbitclient.log + INTERVAL 5m + +# ORCA data collector. This is an experimental add-on module, +# the data sent by this module are not processed by Hobbit 4.2. +[orcadata] + DISABLED + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD $HOBBITCLIENTHOME/bin/orcahobbit --orca=/usr/local/orca/orcallator + LOGFILE $HOBBITCLIENTHOME/logs/hobbitclient.log + INTERVAL 5m + +[memmyth] + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD /data/srv/hobbit/client/ext/hobbit-mem-myth.sh + LOGFILE /data/srv/hobbit/client/mythmem.log + INTERVAL 5m + diff --git a/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.diff b/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.diff new file mode 100644 index 0000000..76bb678 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.diff @@ -0,0 +1,12 @@ +--- clientlaunch.cfg.orig 2008-01-08 09:24:06.000000000 -0600 ++++ clientlaunch.cfg 2008-01-08 10:17:26.000000000 -0600 +@@ -35,3 +35,9 @@ + LOGFILE $HOBBITCLIENTHOME/logs/hobbitclient.log + INTERVAL 5m + ++[memmyth] ++ ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg ++ CMD /data/srv/hobbit/client/ext/hobbit-mem-myth.sh ++ LOGFILE /data/srv/hobbit/client/mythmem.log ++ INTERVAL 5m ++ diff --git a/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.orig b/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.orig new file mode 100644 index 0000000..cfda695 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.orig @@ -0,0 +1,37 @@ +# +# The clientlaunch.cfg file is loaded by "hobbitlaunch". +# It controls which of the Hobbit client-side modules to run, +# (both the main client "hobbitclient.sh" and any client-side +# extensions); how often, and with which parameters, options +# and environment variables. +# +# Note: On the Hobbit *server* itself, this file is normally +# NOT used. Instead, both the client- and server-tasks +# are controlled by the hobbitlaunch.cfg file. +# + +# msgcache is used for passive clients, that cannot connect +# directly to the Hobbit server. This is not the default +# setup, so this task is normally disabled. +[msgcache] + DISABLED + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD $HOBBITCLIENTHOME/bin/msgcache --no-daemon --pidfile=$HOBBITCLIENTHOME/logs/msgcache.pid + LOGFILE $HOBBITCLIENTHOME/logs/msgcache.log + +# The main client task +[client] + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD $HOBBITCLIENTHOME/bin/hobbitclient.sh + LOGFILE $HOBBITCLIENTHOME/logs/hobbitclient.log + INTERVAL 5m + +# ORCA data collector. This is an experimental add-on module, +# the data sent by this module are not processed by Hobbit 4.2. +[orcadata] + DISABLED + ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg + CMD $HOBBITCLIENTHOME/bin/orcahobbit --orca=/usr/local/orca/orcallator + LOGFILE $HOBBITCLIENTHOME/logs/hobbitclient.log + INTERVAL 5m + diff --git a/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg b/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg new file mode 100644 index 0000000..c11ee6c --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg @@ -0,0 +1,1173 @@ +# This file defines how RRD graphs are generated by the hobbitgraph CGI. +# +# Each section begins with a "[SERVICE]" indicator - this is the name passed +# to hobbitgraph.cgi?host=foo&service=SERVICE +# +# A graph has a TITLE and a YAXIS setting - these are texts shown as the +# title of the graph, and the YAXIS heading respectively. (The X-axis is +# always time-based). +# +# If a fixed set of RRD files are used for the graph, you just write those +# in the RRDtool definitions. +# +# For graphs that use multiple RRD files as input, you specify a filename +# pattern in the FNPATTERN statement, and optionally a pattern of files +# to exclude from the graph with EXFNPATTERN (see "[tcp]" for an example). +# When FNPATTERN is used, you can use "@RRDFN@" in the RRDtool definitions +# to pick up each filename. "@RRDIDX@" is an index (starting at 0) for each +# file in the set. "@RRDPARAM@" contains the first word extracted from the +# pattern of files (see e.g. "[memory]" how this is used). "@COLOR@" picks +# a new color for each graph automatically. +# +# The remainder of the lines in each definition are passed directly to the +# RRDtool rrd_graph() routine. +# +# Most of these RRD definitions are from the larrd-grapher.cgi from LARRD 0.43c. + +[la] + TITLE CPU Load + YAXIS Load + DEF:avg=la.rrd:la:AVERAGE + CDEF:la=avg,100,/ + AREA:la#00CC00:CPU Load Average + -u 1.0 + GPRINT:la:LAST: \: %5.1lf (cur) + GPRINT:la:MAX: \: %5.1lf (max) + GPRINT:la:MIN: \: %5.1lf (min) + GPRINT:la:AVERAGE: \: %5.1lf (avg)\n + +[la-multi] + TITLE Multi-host CPU Load + YAXIS Load + FNPATTERN la.rrd + DEF:avg@RRDIDX@=@RRDFN@:la:AVERAGE + CDEF:la@RRDIDX@=avg@RRDIDX@,100,/ + LINE2:la@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 1.0 + GPRINT:la@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:la@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:la@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:la@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[la1] + TITLE CPU Utilitization + YAXIS % Used + -u 100 + -r + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + CDEF:pbusy=100,cpu_idl,- + LINE2:pbusy#00CC00:% CPU busy + GPRINT:pbusy:LAST: \: %5.1lf (cur) + GPRINT:pbusy:MAX: \: %5.1lf (max) + GPRINT:pbusy:MIN: \: %5.1lf (min) + GPRINT:pbusy:AVERAGE: \: %5.1lf (avg)\n + +[la1-multi] + TITLE Multi-host CPU Utilitization + YAXIS % Used + FNPATTERN vmstat.rrd + -u 100 + -r + DEF:cpu_idl@RRDIDX@=@RRDFN@:cpu_idl:AVERAGE + CDEF:pbusy@RRDIDX@=100,cpu_idl@RRDIDX@,- + LINE2:pbusy@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:pbusy@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:pbusy@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:pbusy@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:pbusy@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[clock] + TITLE Clock offset + YAXIS Seconds + DEF:offset=clock.rrd:la:AVERAGE + LINE2:offset#00CC00:Seconds + GPRINT:offset:LAST: \: %5.1lf (cur) + GPRINT:offset:MAX: \: %5.1lf (max) + GPRINT:offset:MIN: \: %5.1lf (min) + GPRINT:offset:AVERAGE: \: %5.1lf (avg)\n + +[disk] + FNPATTERN disk(.*).rrd + TITLE Disk Utilization + YAXIS % Full + DEF:p@RRDIDX@=@RRDFN@:pct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[disk1] + FNPATTERN disk(.*).rrd + TITLE Disk Utilization + YAXIS Used + DEF:p@RRDIDX@=@RRDFN@:used:AVERAGE + CDEF:p@RRDIDX@t=p@RRDIDX@,1024,* + LINE2:p@RRDIDX@t#@COLOR@:@RRDPARAM@ + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf KB (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf KB (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf KB (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf KB (avg)\n + +# The qtree graphs are based on the qtree report from filerstats2bb.pl +# These handle NetApp storage devices. +[qtree] + FNPATTERN qtree(.+).rrd + TITLE Qtree Utilization + YAXIS % Full + DEF:p@RRDIDX@=@RRDFN@:pct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +# The qtree graphs are based on the inode report from filerstats2bb.pl +# These handle NetApp storage devices +# An enhanced disk script that just runs "df -i" could probably get the +# same data. +[inode] + FNPATTERN inode(.+).rrd + TITLE inode Utilization + YAXIS % Full + DEF:p@RRDIDX@=@RRDFN@:pct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[memory] + FNPATTERN memory.(.+).rrd + TITLE Memory Utilization + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[ram] + TITLE RAM Utilization + YAXIS % Used + DEF:p=memory.real.rrd:realmempct:AVERAGE + LINE2:p#0000FF:% RAM used + -u 100 + -b 1024 + GPRINT:p:LAST: \: %5.1lf (cur) + GPRINT:p:MAX: \: %5.1lf (max) + GPRINT:p:MIN: \: %5.1lf (min) + GPRINT:p:AVERAGE: \: %5.1lf (avg)\n + +[ram-multi] + TITLE Multi-host RAM Utilization + FNPATTERN memory.real.rrd + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[swap] + TITLE Swap Utilization + YAXIS % Used + DEF:p=memory.swap.rrd:realmempct:AVERAGE + LINE2:p#0000FF:% Swap used + -u 100 + -b 1024 + GPRINT:p:LAST: \: %5.1lf (cur) + GPRINT:p:MAX: \: %5.1lf (max) + GPRINT:p:MIN: \: %5.1lf (min) + GPRINT:p:AVERAGE: \: %5.1lf (avg)\n + +[swap-multi] + TITLE Multi-host Swap Utilization + FNPATTERN memory.swap.rrd + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[mem] + TITLE Actual Memory Utilization + YAXIS % Used + DEF:p=memory.actual.rrd:realmempct:AVERAGE + LINE2:p#0000FF:% Actual memory used + -u 100 + -b 1024 + GPRINT:p:LAST: \: %5.1lf (cur) + GPRINT:p:MAX: \: %5.1lf (max) + GPRINT:p:MIN: \: %5.1lf (min) + GPRINT:p:AVERAGE: \: %5.1lf (avg)\n + +[mem-multi] + TITLE Multi-host Actual Memory Utilization + FNPATTERN memory.actual.rrd + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[users] + TITLE Users and Processes + YAXIS # + DEF:p=procs.rrd:la:AVERAGE + DEF:u=users.rrd:la:AVERAGE + AREA:p#00CC00:Processes + LINE1:u#000099:Users + COMMENT:\n + GPRINT:p:LAST:Processes \: %5.1lf%s (cur) + GPRINT:p:MAX: \: %5.1lf%s (max) + GPRINT:p:MIN: \: %5.1lf%s (min) + GPRINT:p:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:u:LAST:Users \: %5.1lf%s (cur) + GPRINT:u:MAX: \: %5.1lf%s (max) + GPRINT:u:MIN: \: %5.1lf%s (min) + GPRINT:u:AVERAGE: \: %5.1lf%s (avg)\n + +[users-multi] + TITLE Multi-host users + FNPATTERN users.rrd + YAXIS # + DEF:u@RRDIDX@=@RRDFN@:la:AVERAGE + LINE2:u@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:u@RRDIDX@:LAST:Users \: %5.1lf%s (cur) + GPRINT:u@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:u@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:u@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[tcp] + # TCP tests - include all, except the HTTP tests as they tend to have + # much longer response times than the normal tcp tests. + FNPATTERN tcp.(.+).rrd + EXFNPATTERN tcp.http.(.+).rrd + TITLE TCP Connection Times + YAXIS Seconds + DEF:p@RRDIDX@=@RRDFN@:sec:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf%s (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[http] + FNPATTERN tcp.http.(.+).rrd + TITLE HTTP Response Times + YAXIS Seconds + DEF:p@RRDIDX@=@RRDFN@:sec:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf%s (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[conn-multi] + FNPATTERN tcp.conn.rrd + TITLE PING Round-trip time + YAXIS Seconds + DEF:p@RRDIDX@=@RRDFN@:sec:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf%s (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[ntpstat] + TITLE NTP accuracy + YAXIS Offset (ms) + DEF:u=ntpstat.rrd:offsetms:AVERAGE + LINE2:u#FF0000:Offset (ms) + COMMENT:\n + GPRINT:u:LAST: \: %5.2lf ms (cur)\n + GPRINT:u:MAX: \: %5.2lf ms (max)\n + GPRINT:u:MIN: \: %5.2lf ms (min)\n + GPRINT:u:AVERAGE: \: %5.2lf ms (avg)\n + +[vmstat] + TITLE CPU Utilization + YAXIS % Load + -u 100 + -r + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + DEF:cpu_usr=vmstat.rrd:cpu_usr:AVERAGE + DEF:cpu_sys=vmstat.rrd:cpu_sys:AVERAGE + AREA:cpu_sys#FF0000:System + STACK:cpu_usr#FFFF00:User + STACK:cpu_idl#00FF00:Idle + COMMENT:\n + GPRINT:cpu_sys:LAST:System \: %5.1lf (cur) + GPRINT:cpu_sys:MAX: \: %5.1lf (max) + GPRINT:cpu_sys:MIN: \: %5.1lf (min) + GPRINT:cpu_sys:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_usr:LAST:User \: %5.1lf (cur) + GPRINT:cpu_usr:MAX: \: %5.1lf (max) + GPRINT:cpu_usr:MIN: \: %5.1lf (min) + GPRINT:cpu_usr:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_idl:LAST:Idle \: %5.1lf (cur) + GPRINT:cpu_idl:MAX: \: %5.1lf (max) + GPRINT:cpu_idl:MIN: \: %5.1lf (min) + GPRINT:cpu_idl:AVERAGE: \: %5.1lf (avg)\n + +[vmstat1] + TITLE CPU Utilization + YAXIS % Load + -u 100 + -r + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + DEF:cpu_usr=vmstat.rrd:cpu_usr:AVERAGE + DEF:cpu_sys=vmstat.rrd:cpu_sys:AVERAGE + DEF:cpu_wait=vmstat.rrd:cpu_wait:AVERAGE + AREA:cpu_sys#FF0000:System + STACK:cpu_wait#774400:I/O wait + STACK:cpu_usr#FFFF00:User + STACK:cpu_idl#00FF00:Idle + COMMENT:\n + GPRINT:cpu_sys:LAST:System \: %5.1lf (cur) + GPRINT:cpu_sys:MAX: \: %5.1lf (max) + GPRINT:cpu_sys:MIN: \: %5.1lf (min) + GPRINT:cpu_sys:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_wait:LAST:I/O Wait\: %5.1lf (cur) + GPRINT:cpu_wait:MAX: \: %5.1lf (max) + GPRINT:cpu_wait:MIN: \: %5.1lf (min) + GPRINT:cpu_wait:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_usr:LAST:User \: %5.1lf (cur) + GPRINT:cpu_usr:MAX: \: %5.1lf (max) + GPRINT:cpu_usr:MIN: \: %5.1lf (min) + GPRINT:cpu_usr:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_idl:LAST:Idle \: %5.1lf (cur) + GPRINT:cpu_idl:MAX: \: %5.1lf (max) + GPRINT:cpu_idl:MIN: \: %5.1lf (min) + GPRINT:cpu_idl:AVERAGE: \: %5.1lf (avg)\n + +[vmstat2] + TITLE CPU Utilization + YAXIS % Load + -u 1.0 + DEF:avg=la.rrd:la:AVERAGE + CDEF:la=avg,100,/ + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + CDEF:cpu_idl2=cpu_idl,100,/ + DEF:cpu_usr=vmstat.rrd:cpu_usr:AVERAGE + CDEF:cpu_usr2=cpu_usr,100,/ + DEF:cpu_sys=vmstat.rrd:cpu_sys:AVERAGE + CDEF:cpu_sys2=cpu_sys,100,/ + AREA:cpu_sys2#FF0000:System + STACK:cpu_usr2#FFFF00:User + STACK:cpu_idl2#00FF00:Idle + LINE1:la#000099:CPU Load Average + COMMENT:\n + GPRINT:cpu_sys2:LAST:System \: %5.1lf (cur) + GPRINT:cpu_sys2:MAX: \: %5.1lf (max) + GPRINT:cpu_sys2:MIN: \: %5.1lf (min) + GPRINT:cpu_sys2:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_usr2:LAST:User \: %5.1lf (cur) + GPRINT:cpu_usr2:MAX: \: %5.1lf (max) + GPRINT:cpu_usr2:MIN: \: %5.1lf (min) + GPRINT:cpu_usr2:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_idl2:LAST:Idle \: %5.1lf (cur) + GPRINT:cpu_idl2:MAX: \: %5.1lf (max) + GPRINT:cpu_idl2:MIN: \: %5.1lf (min) + GPRINT:cpu_idl2:AVERAGE: \: %5.1lf (avg)\n + GPRINT:la:LAST:CPU Load Average \: %5.1lf (cur) + GPRINT:la:MAX: \: %5.1lf (max) + GPRINT:la:MIN: \: %5.1lf (min) + GPRINT:la:AVERAGE: \: %5.1lf (avg)\n + +[vmstat3] + TITLE Interrupts and Context Switches + YAXIS Average Events/sec + DEF:int=vmstat.rrd:cpu_int:AVERAGE + DEF:csw=vmstat.rrd:cpu_csw:AVERAGE + LINE2:int#0000ff:Interrupts + LINE2:csw#00FF00:Context Switches + COMMENT:\n + GPRINT:int:LAST:Interrupts \: %5.1lf%s (cur) + GPRINT:int:MAX: \: %5.1lf%s (max) + GPRINT:int:MIN: \: %5.1lf%s (min) + GPRINT:int:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:csw:LAST:Context Switches \: %5.1lf%s (cur) + GPRINT:csw:MAX: \: %5.1lf%s (max) + GPRINT:csw:MIN: \: %5.1lf%s (min) + GPRINT:csw:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat4] + TITLE Swap Activity + YAXIS Average kB/s + -b 1024 + DEF:si=vmstat.rrd:mem_si:AVERAGE + DEF:so=vmstat.rrd:mem_so:AVERAGE + LINE2:si#0000ff:Memory Swapped from Disk + LINE2:so#00FF00:Memory Swapped to Disk + COMMENT:\n + GPRINT:si:LAST:Memory Swapped from Disk \: %5.1lf (cur) + GPRINT:si:MAX: \: %5.1lf (max) + GPRINT:si:MIN: \: %5.1lf (min) + GPRINT:si:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:si:LAST:Memory Swapped to Disk \: %5.1lf (cur) + GPRINT:si:MAX: \: %5.1lf (max) + GPRINT:si:MIN: \: %5.1lf (min) + GPRINT:si:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat5] + TITLE Block I/O + YAXIS Average blocks/s + DEF:bi=vmstat.rrd:dsk_bi:AVERAGE + DEF:bo=vmstat.rrd:dsk_bo:AVERAGE + LINE2:bi#0000FF:Blocks sent to a block device + LINE2:bo#00FF00:Blocks received from a block device + COMMENT:\n + GPRINT:bi:LAST:Blocks sent to a block device \: %5.1lf (cur) + GPRINT:bi:MAX: \: %5.1lf (max) + GPRINT:bi:MIN: \: %5.1lf (min) + GPRINT:bi:AVERAGE: \: %5.1lf (avg)\n + GPRINT:bo:LAST:Blocks received from a block device \: %5.1lf (cur) + GPRINT:bo:MAX: \: %5.1lf (max) + GPRINT:bo:MIN: \: %5.1lf (min) + GPRINT:bo:AVERAGE: \: %5.1lf (avg)\n + +[vmstat6] + # This graph only works on some OS'es (Solaris) + TITLE Memory Utilization + YAXIS Size kB + -b 1024 + DEF:free=vmstat.rrd:mem_free:AVERAGE + CDEF:fr=free,1024,* + DEF:swap=vmstat.rrd:mem_swap:AVERAGE + CDEF:sw=swap,1024,* + LINE2:fr#0000ff:Size of the free list + LINE2:sw#00FF00:Swap space currently available + COMMENT:\n + GPRINT:fr:LAST:Size of the free list \: %5.1lf%s (cur) + GPRINT:fr:MAX: \: %5.1lf%s (max) + GPRINT:fr:MIN: \: %5.1lf%s (min) + GPRINT:fr:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:sw:LAST:Swap space currently available \: %5.1lf%s (cur) + GPRINT:sw:MAX: \: %5.1lf%s (max) + GPRINT:sw:MIN: \: %5.1lf%s (min) + GPRINT:sw:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat7] + # This graph only works on some OS'es (Solaris) + TITLE Memory Utilization + YAXIS Events/s + DEF:re=vmstat.rrd:mem_re:AVERAGE + DEF:mf=vmstat.rrd:mem_mf:AVERAGE + LINE2:re#0000ff:Page reclaims + LINE2:mf#00FF00:Minor faults + COMMENT:\n + GPRINT:re:LAST:Page reclaims \: %5.1lf%s (cur) + GPRINT:re:MAX: \: %5.1lf%s (max) + GPRINT:re:MIN: \: %5.1lf%s (min) + GPRINT:re:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:mf:LAST:Minor faults \: %5.1lf%s (cur) + GPRINT:mf:MAX: \: %5.1lf%s (max) + GPRINT:mf:MIN: \: %5.1lf%s (min) + GPRINT:mf:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat8] + # This graph only works on some OS'es (Solaris) + TITLE Paging Activity + YAXIS kB/s + -b 1024 + DEF:pi=vmstat.rrd:mem_pi:AVERAGE + CDEF:rpi=pi,1024,* + DEF:po=vmstat.rrd:mem_po:AVERAGE + CDEF:rpo=po,1024,* + LINE2:rpi#0000ff:Paged in + LINE2:rpo#00FF00:Paged out + COMMENT:\n + GPRINT:pi:LAST:Page Ins \: %5.1lf%s (cur) + GPRINT:pi:MAX: \: %5.1lf%s (max) + GPRINT:pi:MIN: \: %5.1lf%s (min) + GPRINT:pi:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:po:LAST:Page Outs \: %5.1lf%s (cur) + GPRINT:po:MAX: \: %5.1lf%s (max) + GPRINT:po:MIN: \: %5.1lf%s (min) + GPRINT:po:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat9] + # This graph only works on some OS'es (Solaris) + TITLE RAM Scan Rate + YAXIS Pages scanned/s + DEF:sr=vmstat.rrd:sr:AVERAGE + AREA:sr#00CC00:Scan Rate + -u 20 + GPRINT:sr:LAST: \: %5.1lf%s (cur) + GPRINT:sr:MAX: \: %5.1lf%s (max) + GPRINT:sr:MIN: \: %5.1lf%s (min) + GPRINT:sr:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat0] + # This graph only works on some OS'es (Solaris) + TITLE System Calls + YAXIS System Calls/s + DEF:cpu_syc=vmstat.rrd:cpu_syc:AVERAGE + AREA:cpu_syc#00CC00:System Calls + GPRINT:cpu_syc:LAST: \: %5.1lf%s (cur) + GPRINT:cpu_syc:MAX: \: %5.1lf%s (max) + GPRINT:cpu_syc:MIN: \: %5.1lf%s (min) + GPRINT:cpu_syc:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat] + TITLE TCP/IP statistics + YAXIS Packets/second + DEF:tcpInInorderPackets=netstat.rrd:tcpInInorderPackets:AVERAGE + DEF:tcpOutDataPackets=netstat.rrd:tcpOutDataPackets:AVERAGE + DEF:tcpRetransPackets=netstat.rrd:tcpRetransPackets:AVERAGE + LINE3:tcpInInorderPackets#00FF00:In + LINE1:tcpOutDataPackets#0000FF:Out + LINE2:tcpRetransPackets#FF0000:Retrans + COMMENT:\n + GPRINT:tcpInInorderPackets:LAST:In \: %5.1lf%s (cur) + GPRINT:tcpInInorderPackets:MAX: \: %5.1lf%s (max) + GPRINT:tcpInInorderPackets:MIN: \: %5.1lf%s (min) + GPRINT:tcpInInorderPackets:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpOutDataPackets:LAST:Out \: %5.1lf%s (cur) + GPRINT:tcpOutDataPackets:MAX: \: %5.1lf%s (max) + GPRINT:tcpOutDataPackets:MIN: \: %5.1lf%s (min) + GPRINT:tcpOutDataPackets:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpRetransPackets:LAST:Retrans \: %5.1lf%s (cur) + GPRINT:tcpRetransPackets:MAX: \: %5.1lf%s (max) + GPRINT:tcpRetransPackets:MIN: \: %5.1lf%s (min) + GPRINT:tcpRetransPackets:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat0] + TITLE TCP/IP statistics + YAXIS Bits/second + DEF:tcpInInorderBytes=netstat.rrd:tcpInInorderBytes:AVERAGE + DEF:tcpOutDataBytes=netstat.rrd:tcpOutDataBytes:AVERAGE + DEF:tcpRetransBytes=netstat.rrd:tcpRetransBytes:AVERAGE + CDEF:tcpInInorderBits=tcpInInorderBytes,8,* + CDEF:tcpOutDataBits=tcpOutDataBytes,8,* + CDEF:tcpRetransBits=tcpRetransBytes,8,* + LINE3:tcpInInorderBits#00FF00:In + LINE1:tcpOutDataBits#0000FF:Out + LINE2:tcpRetransBits#FF0000:Retrans + COMMENT:\n + GPRINT:tcpInInorderBits:LAST:In \: %5.1lf%s (cur) + GPRINT:tcpInInorderBits:MAX: \: %5.1lf%s (max) + GPRINT:tcpInInorderBits:MIN: \: %5.1lf%s (min) + GPRINT:tcpInInorderBits:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpOutDataBits:LAST:Out \: %5.1lf%s (cur) + GPRINT:tcpOutDataBits:MAX: \: %5.1lf%s (max) + GPRINT:tcpOutDataBits:MIN: \: %5.1lf%s (min) + GPRINT:tcpOutDataBits:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpRetransBits:LAST:Retrans \: %5.1lf%s (cur) + GPRINT:tcpRetransBits:MAX: \: %5.1lf%s (max) + GPRINT:tcpRetransBits:MIN: \: %5.1lf%s (min) + GPRINT:tcpRetransBits:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat1] + TITLE UDP Statistics + YAXIS # Datagrams + DEF:udpInDatagrams=netstat.rrd:udpInDatagrams:AVERAGE + DEF:udpOutDatagrams=netstat.rrd:udpOutDatagrams:AVERAGE + DEF:udpInErrors=netstat.rrd:udpInErrors:AVERAGE + LINE3:udpInDatagrams#00FF00:UDP In Datagrams + LINE1:udpOutDatagrams#0000FF:UDP Out Datagrams + LINE2:udpInErrors#FF0000:UDP In Errors + COMMENT:\n + GPRINT:udpInDatagrams:LAST:UDP In Datagrams \: %5.1lf%s (cur) + GPRINT:udpInDatagrams:MAX: \: %5.1lf%s (max) + GPRINT:udpInDatagrams:MIN: \: %5.1lf%s (min) + GPRINT:udpInDatagrams:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:udpOutDatagrams:LAST:UDP Out Datagrams \: %5.1lf%s (cur) + GPRINT:udpOutDatagrams:MAX: \: %5.1lf%s (max) + GPRINT:udpOutDatagrams:MIN: \: %5.1lf%s (min) + GPRINT:udpOutDatagrams:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:udpInErrors:LAST:UDP In Errors \: %5.1lf%s (cur) + GPRINT:udpInErrors:MAX: \: %5.1lf%s (max) + GPRINT:udpInErrors:MIN: \: %5.1lf%s (min) + GPRINT:udpInErrors:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat2] + TITLE TCP Statistics + YAXIS # Events + DEF:tcpActiveOpens=netstat.rrd:tcpActiveOpens:AVERAGE + DEF:tcpPassiveOpens=netstat.rrd:tcpPassiveOpens:AVERAGE + DEF:tcpAttemptFails=netstat.rrd:tcpAttemptFails:AVERAGE + DEF:tcpEstabResets=netstat.rrd:tcpEstabResets:AVERAGE + LINE2:tcpActiveOpens#0000FF:TCP Active Open + LINE2:tcpPassiveOpens#000088:TCP Passive Open + LINE2:tcpAttemptFails#FF0000:TCP Attempts Fail + LINE2:tcpEstabResets#88FF00:TCP Established Resets + COMMENT:\n + GPRINT:tcpActiveOpens:LAST:TCP Active Opens \: %5.1lf%s (cur) + GPRINT:tcpActiveOpens:MAX: \: %5.1lf%s (max) + GPRINT:tcpActiveOpens:MIN: \: %5.1lf%s (min) + GPRINT:tcpActiveOpens:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpPassiveOpens:LAST:TCP Passive Opens \: %5.1lf%s (cur) + GPRINT:tcpPassiveOpens:MAX: \: %5.1lf%s (max) + GPRINT:tcpPassiveOpens:MIN: \: %5.1lf%s (min) + GPRINT:tcpPassiveOpens:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpAttemptFails:LAST:TCP Failed Attempts \: %5.1lf%s (cur) + GPRINT:tcpAttemptFails:MAX: \: %5.1lf%s (max) + GPRINT:tcpAttemptFails:MIN: \: %5.1lf%s (min) + GPRINT:tcpAttemptFails:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpEstabResets:LAST:TCP Established Resets \: %5.1lf%s (cur) + GPRINT:tcpEstabResets:MAX: \: %5.1lf%s (max) + GPRINT:tcpEstabResets:MIN: \: %5.1lf%s (min) + GPRINT:tcpEstabResets:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat3] + TITLE Established TCP Connections + YAXIS # Connections + DEF:tcpCurrEstab=netstat.rrd:tcpCurrEstab:AVERAGE + LINE2:tcpCurrEstab#0000FF:TCP Established Connections + COMMENT:\n + GPRINT:tcpCurrEstab:LAST:TCP Established Connections \: %5.1lf%s (cur) + GPRINT:tcpCurrEstab:MAX: \: %5.1lf%s (max) + GPRINT:tcpCurrEstab:MIN: \: %5.1lf%s (min) + GPRINT:tcpCurrEstab:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat3-multi] + TITLE Multi-host TCP Connections + YAXIS # Connections + FNPATTERN netstat.rrd + DEF:tcpCurrEstab@RRDIDX@=@RRDFN@:tcpCurrEstab:AVERAGE + LINE2:tcpCurrEstab@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:tcpCurrEstab@RRDIDX@:LAST:# Est. \: %5.1lf%s (cur) + GPRINT:tcpCurrEstab@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:tcpCurrEstab@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:tcpCurrEstab@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[iostat] + TITLE I/O Utilization + YAXIS Stats + FNPATTERN iostat.(.+).rrd + DEF:p@RRDIDX@B=@RRDFN@:b:AVERAGE + DEF:p@RRDIDX@A=@RRDFN@:asvc_t:AVERAGE + DEF:p@RRDIDX@W=@RRDFN@:wsvc_t:AVERAGE + CDEF:p@RRDIDX@t=p@RRDIDX@B,5,GT,p@RRDIDX@B,UNKN,IF + LINE2:p@RRDIDX@t#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:p@RRDIDX@B:LAST:B \: %5.1lf (cur) + GPRINT:p@RRDIDX@B:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@B:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@B:AVERAGE: \: %5.1lf (avg)\n + GPRINT:p@RRDIDX@A:LAST:asvc_t \: %5.1lf (cur) + GPRINT:p@RRDIDX@A:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@A:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@A:AVERAGE: \: %5.1lf (avg)\n + GPRINT:p@RRDIDX@W:LAST:wsvc_t \: %5.1lf (cur) + GPRINT:p@RRDIDX@W:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@W:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@W:AVERAGE: \: %5.1lf (avg)\n + COMMENT:\n + +[apache] + TITLE Apache Utilization + YAXIS Activity + DEF:TA=apache.rrd:TA:AVERAGE + CDEF:TA1=TA,300,* + DEF:TKB=apache.rrd:TKB:AVERAGE + CDEF:TKB1=TKB,300,* + LINE2:TA1#0000FF:TA (# Accesses) + LINE2:TKB1#FF0000:TKB (kBytes Transferred) + COMMENT:\n + GPRINT:TA1:LAST:TA \: %5.1lf%s (cur) + GPRINT:TA1:MAX: \: %5.1lf%s (max) + GPRINT:TA1:MIN: \: %5.1lf%s (min) + GPRINT:TA1:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:TKB1:LAST:TKB \: %5.1lf%s (cur) + GPRINT:TKB1:MAX: \: %5.1lf%s (max) + GPRINT:TKB1:MIN: \: %5.1lf%s (min) + GPRINT:TKB1:AVERAGE: \: %5.1lf%s (avg)\n + +[apache1] + TITLE Apache Workers + YAXIS # Worker Threads/Processes + #DEF:BS=apache.rrd:BS:AVERAGE + #DEF:IS=apache.rrd:IS:AVERAGE + DEF:BW=apache.rrd:BW:AVERAGE + DEF:IW=apache.rrd:IW:AVERAGE + #LINE2:BS#00CC00:BS + #LINE2:IS#FF00FF:IS + LINE2:BW#555555:BW Busy Workers + LINE2:IW#880000:IW Idle Workers + COMMENT:\n + GPRINT:BW:LAST:BW \: %5.1lf%s (cur) + GPRINT:BW:MAX: \: %5.1lf%s (max) + GPRINT:BW:MIN: \: %5.1lf%s (min) + GPRINT:BW:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:IW:LAST:IW \: %5.1lf%s (cur) + GPRINT:IW:MAX: \: %5.1lf%s (max) + GPRINT:IW:MIN: \: %5.1lf%s (min) + GPRINT:IW:AVERAGE: \: %5.1lf%s (avg)\n + +[apache2] + TITLE Apache CPU Utilization + YAXIS CPU Load + DEF:CPU=apache.rrd:CPU:AVERAGE + LINE2:CPU#000088:CPU + COMMENT:\n + GPRINT:CPU:LAST:CPU \: %5.1lf (cur) + GPRINT:CPU:MAX: \: %5.1lf (max) + GPRINT:CPU:MIN: \: %5.1lf (min) + GPRINT:CPU:AVERAGE: \: %5.1lf (avg)\n + +[apache3] + TITLE Apache Requests/Second + YAXIS # Requests + DEF:RPS=apache.rrd:REQPERSEC:AVERAGE + LINE2:RPS#000088:RPS + COMMENT:\n + GPRINT:RPS:LAST:Requests per Second \: %5.1lf (cur) + GPRINT:RPS:MAX: \: %5.1lf (max) + GPRINT:RPS:MIN: \: %5.1lf (min) + GPRINT:RPS:AVERAGE: \: %5.1lf (avg)\n + +[apache3-multi] + TITLE Multi-Host Apache Requests/Second + FNPATTERN apache.rrd + YAXIS # Requests / seconds + # --slope-mode + DEF:RPS@RRDIDX@=@RRDFN@:REQPERSEC:AVERAGE + LINE2:RPS@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:RPS@RRDIDX@:LAST:Requests per Second \: %5.1lf (cur) + GPRINT:RPS@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:RPS@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:RPS@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[bea] + FNPATTERN bea.memory.(.+).rrd + TITLE BEA/Weblogic % Heap Free + YAXIS % Free + DEF:free@RRDIDX@=@RRDFN@:freeheap:AVERAGE + DEF:used@RRDIDX@=@RRDFN@:usedheap:AVERAGE + DEF:total@RRDIDX@=@RRDFN@:totalheap:AVERAGE + CDEF:mbfree@RRDIDX@=free@RRDIDX@,1048576,/ + CDEF:mbused@RRDIDX@=used@RRDIDX@,1048576,/ + CDEF:mbtotal@RRDIDX@=total@RRDIDX@,1048576,/ + CDEF:pctfree@RRDIDX@=mbfree@RRDIDX@,100,*,mbtotal@RRDIDX@,/ + LINE2:pctfree@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:mbused@RRDIDX@:LAST:Used \: %8.1lf MB (cur) + GPRINT:mbused@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbused@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbused@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + GPRINT:mbfree@RRDIDX@:LAST:Free \: %8.1lf MB (cur) + GPRINT:mbfree@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbfree@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbfree@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + +[bea2] + FNPATTERN bea.memory.(.+).rrd + TITLE BEA/Weblogic % Physical Memory Free + YAXIS % Free + DEF:free@RRDIDX@=@RRDFN@:freephysmem:AVERAGE + DEF:used@RRDIDX@=@RRDFN@:usedphysmem:AVERAGE + DEF:total@RRDIDX@=@RRDFN@:totalphysmem:AVERAGE + CDEF:mbfree@RRDIDX@=free@RRDIDX@,1048576,/ + CDEF:mbused@RRDIDX@=used@RRDIDX@,1048576,/ + CDEF:mbtotal@RRDIDX@=total@RRDIDX@,1048576,/ + CDEF:pctfree@RRDIDX@=mbfree@RRDIDX@,100,*,mbtotal@RRDIDX@,/ + LINE2:pctfree@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:mbused@RRDIDX@:LAST:Used \: %8.1lf MB (cur) + GPRINT:mbused@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbused@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbused@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + GPRINT:mbfree@RRDIDX@:LAST:Free \: %8.1lf MB (cur) + GPRINT:mbfree@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbfree@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbfree@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + +[bea3] + FNPATTERN bea.threads.(.+).weblogic.kernel.Default.rrd + TITLE BEA/Weblogic kernel.Default Idle Threads + YAXIS # Idle Threads + DEF:threads@RRDIDX@=@RRDFN@:currentidlecount:AVERAGE + LINE2:threads@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:threads@RRDIDX@:LAST:Free \: %4.2lf (cur) + GPRINT:threads@RRDIDX@:MAX: \: %4.2lf (max) + GPRINT:threads@RRDIDX@:MIN: \: %4.2lf (min) + GPRINT:threads@RRDIDX@:AVERAGE: \: %4.2lf (avg)\n + +[bea4] + FNPATTERN bea.threads.(.+).weblogic.kernel.Default.rrd + TITLE BEA/Weblogic kernel.Default Requests + YAXIS # Requests + DEF:reqs@RRDIDX@=@RRDFN@:totalcount:AVERAGE + LINE2:reqs@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:reqs@RRDIDX@:LAST:Free \: %4.2lf (cur) + GPRINT:reqs@RRDIDX@:MAX: \: %4.2lf (max) + GPRINT:reqs@RRDIDX@:MIN: \: %4.2lf (min) + GPRINT:reqs@RRDIDX@:AVERAGE: \: %4.2lf (avg)\n + +[bind] + TITLE BIND Utilization + YAXIS Stats + DEF:A=bind.rrd:A:AVERAGE + DEF:ANY=bind.rrd:ANY:AVERAGE + DEF:AXFR=bind.rrd:AXFR:AVERAGE + DEF:MX=bind.rrd:MX:AVERAGE + DEF:O=bind.rrd:O:AVERAGE + DEF:PTR=bind.rrd:PTR:AVERAGE + DEF:SOA=bind.rrd:SOA:AVERAGE + CDEF:A1=A,300,* + CDEF:ANY1=ANY,300,* + CDEF:AXFR1=AXFR,300,* + CDEF:MX1=MX,300,* + CDEF:O1=O,300,* + CDEF:PTR1=PTR,300,* + CDEF:SOA1=SOA,300,* + LINE2:A1#0000FF:A + LINE2:ANY1#FF0000:ANY + LINE2:AXFR1#00CC00:AXFR + LINE2:MX1#FF00FF:MX + LINE2:O1#555555:O + LINE2:PTR1#880000:PTR + LINE2:SOA1#000088:SOA + COMMENT:\n + GPRINT:A1:LAST:A \: %5.1lf (cur) + GPRINT:A1:MAX:A \: %5.1lf (max) + GPRINT:A1:MIN:A \: %5.1lf (min) + GPRINT:A1:AVERAGE:A \: %5.1lf (avg)\n + GPRINT:ANY1:LAST:ANY \: %5.1lf (cur) + GPRINT:ANY1:MAX:ANY \: %5.1lf (max) + GPRINT:ANY1:MIN:ANY \: %5.1lf (min) + GPRINT:ANY1:AVERAGE:ANY \: %5.1lf (avg)\n + GPRINT:AXFR1:LAST:AXFR \: %5.1lf (cur) + GPRINT:AXFR1:MAX:AXFR \: %5.1lf (max) + GPRINT:AXFR1:MIN:AXFR \: %5.1lf (min) + GPRINT:AXFR1:AVERAGE:AXFR \: %5.1lf (avg)\n + GPRINT:MX1:LAST:MX \: %5.1lf (cur) + GPRINT:MX1:MAX:MX \: %5.1lf (max) + GPRINT:MX1:MIN:MX \: %5.1lf (min) + GPRINT:MX1:AVERAGE:MX \: %5.1lf (avg)\n + GPRINT:O1:LAST:O \: %5.1lf (cur) + GPRINT:O1:MAX:O \: %5.1lf (max) + GPRINT:O1:MIN:O \: %5.1lf (min) + GPRINT:O1:AVERAGE:O \: %5.1lf (avg)\n + GPRINT:PTR1:LAST:PTR \: %5.1lf (cur) + GPRINT:PTR1:MAX:PTR \: %5.1lf (max) + GPRINT:PTR1:MIN:PTR \: %5.1lf (min) + GPRINT:PTR1:AVERAGE:PTR \: %5.1lf (avg)\n + GPRINT:SOA1:LAST:SOA \: %5.1lf (cur) + GPRINT:SOA1:MAX:SOA \: %5.1lf (max) + GPRINT:SOA1:MIN:SOA \: %5.1lf (min) + GPRINT:SOA1:AVERAGE:SOA \: %5.1lf (avg)\n + +[sendmail] + FNPATTERN sendmail.(.+).rrd + TITLE Sendmail Activity + YAXIS Messages + DEF:p@RRDIDX@IN=@RRDFN@:msgsfr:AVERAGE + DEF:p@RRDIDX@OUT=@RRDFN@:msgsto:AVERAGE + CDEF:p@RRDIDX@IN1=p@RRDIDX@IN,300,* + CDEF:p@RRDIDX@OUT1=p@RRDIDX@OUT,300,* + LINE1:p@RRDIDX@IN1#@COLOR@:@RRDPARAM@ IN + LINE2:p@RRDIDX@OUT1#@COLOR@:@RRDPARAM@ OUT + COMMENT:\n + GPRINT:p@RRDIDX@IN1:LAST:@RRDPARAM@ in %5.1lf (cur) + GPRINT:p@RRDIDX@IN1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@IN1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@IN1:AVERAGE: \: %5.1lf (avg) + COMMENT:\n + GPRINT:p@RRDIDX@OUT1:LAST:@RRDPARAM@ out %5.1lf (cur) + GPRINT:p@RRDIDX@OUT1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@OUT1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@OUT1:AVERAGE: \: %5.1lf (avg)\n + COMMENT:\n + +[sendmail1] + FNPATTERN sendmail.(.+).rrd + TITLE Sendmail Reject/Discards + YAXIS Messages + DEF:p@RRDIDX@IN=@RRDFN@:msgsrej:AVERAGE + DEF:p@RRDIDX@OUT=@RRDFN@:msgsdis:AVERAGE + CDEF:p@RRDIDX@IN1=p@RRDIDX@IN,300,* + CDEF:p@RRDIDX@OUT1=p@RRDIDX@OUT,300,* + LINE1:p@RRDIDX@IN1#@COLOR@:@RRDPARAM@ REJ + LINE2:p@RRDIDX@OUT1#@COLOR@:@RRDPARAM@ DIS + COMMENT:\n + GPRINT:p@RRDIDX@IN1:LAST:@RRDPARAM@ rej %5.1lf (cur) + GPRINT:p@RRDIDX@IN1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@IN1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@IN1:AVERAGE: \: %5.1lf (avg) + COMMENT:\n + GPRINT:p@RRDIDX@OUT1:LAST:@RRDPARAM@ dis %5.1lf (cur) + GPRINT:p@RRDIDX@OUT1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@OUT1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@OUT1:AVERAGE: \: %5.1lf (avg)\n + COMMENT:\n + +[mailq] + # This handles "mailq.rrd", "mailqin.rrd" and "mailqout.rrd" + FNPATTERN mailq(.+).rrd + TITLE Mail Queue Length + YAXIS Queue Length + DEF:mailq@RRDIDX@=@RRDFN@:mailq:AVERAGE + LINE2:mailq@RRDIDX@#@COLOR@:Queue Length @RRDPARAM@ + COMMENT:\n + GPRINT:mailq@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:mailq@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:mailq@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:mailq@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + + +[iishealth] + # Based on the "IIShealth.zip" tool from deadcat + FNPATTERN iishealth.(.+).rrd + TITLE IIS Utilization + YAXIS # + # Yes, they really do call it "realmempct". Cut'n'paste programming. + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[temperature] + FNPATTERN temperature.(.+).rrd + TITLE Temperature + YAXIS Celsius + DEF:p@RRDIDX@=@RRDFN@:temperature:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +# If you want your temperature graphs in Fahrenheit, +# comment out the [temperature] section above, and +# uncomment this definition. +# +#[temperature] +# FNPATTERN temperature.(.+).rrd +# TITLE Temperature +# YAXIS Fahrenheit +# DEF:p@RRDIDX@=@RRDFN@:temperature:AVERAGE +# CDEF:tempf@RRDIDX@=9,5,/,p@RRDIDX@,*,32,+ +# LINE2:tempf@RRDIDX@#@COLOR@:@RRDPARAM@ +# GPRINT:tempf@RRDIDX@:LAST: \: %5.1lf (cur) +# GPRINT:tempf@RRDIDX@:MAX: \: %5.1lf (max) +# GPRINT:tempf@RRDIDX@:MIN: \: %5.1lf (min) +# GPRINT:tempf@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[citrix] + TITLE Citrix Users + YAXIS # Users + DEF:u=citrix.rrd:users:AVERAGE + LINE2:u#FF0000:Users + COMMENT:\n + GPRINT:u:LAST: \: %5.1lf (cur) + GPRINT:u:MAX: \: %5.1lf (max) + GPRINT:u:MIN: \: %5.1lf (min) + GPRINT:u:AVERAGE: \: %5.1lf (avg)\n + +[bbgen] + TITLE bbgen Runtime + YAXIS Seconds + DEF:rt=bbgen.rrd:runtime:AVERAGE + AREA:rt#00CCCC:Run Time + COMMENT:\n + GPRINT:rt:LAST: \: %5.1lf (cur) + GPRINT:rt:MAX: \: %5.1lf (max) + GPRINT:rt:MIN: \: %5.1lf (min) + GPRINT:rt:AVERAGE: \: %5.1lf (avg)\n + +[bbtest] + TITLE bbtest Run Time + YAXIS Seconds + DEF:rt=bbtest.rrd:runtime:AVERAGE + AREA:rt#00CCCC:Run Time + COMMENT:\n + GPRINT:rt:LAST: \: %5.1lf (cur) + GPRINT:rt:MAX: \: %5.1lf (max) + GPRINT:rt:MIN: \: %5.1lf (min) + GPRINT:rt:AVERAGE: \: %5.1lf (avg)\n + +[bbproxy] + TITLE bbproxy Average Queue Time + YAXIS Seconds + DEF:rt=bbproxy.rrd:runtime:AVERAGE + LINE2:rt#00CCCC:Queue Time + COMMENT:\n + GPRINT:rt:LAST: \: %5.1lf (cur) + GPRINT:rt:MAX: \: %5.1lf (max) + GPRINT:rt:MIN: \: %5.1lf (min) + GPRINT:rt:AVERAGE: \: %5.1lf (avg)\n + +[hobbitd] + TITLE hobbitd Incoming Messages + YAXIS Messages + DEF:in=hobbitd.rrd:inmessages:AVERAGE + LINE2:in#00CCCC:Incoming messages + COMMENT:\n + GPRINT:in:LAST: \: %5.1lf (cur) + GPRINT:in:MAX: \: %5.1lf (max) + GPRINT:in:MIN: \: %5.1lf (min) + GPRINT:in:AVERAGE: \: %5.1lf (avg)\n + +[mrtg] + FNPATTERN mrtg.*\.(.+).rrd + TITLE Network Traffic (MRTG) + YAXIS Bits/second + DEF:inbytes@RRDIDX@=@RRDFN@:ds0:AVERAGE + CDEF:in@RRDIDX@=inbytes@RRDIDX@,8,* + DEF:outbytes@RRDIDX@=@RRDFN@:ds1:AVERAGE + CDEF:out@RRDIDX@=outbytes@RRDIDX@,8,* + LINE2:in@RRDIDX@#@COLOR@:@RRDPARAM@ inbound + GPRINT:in@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:in@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:in@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:in@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + LINE2:out@RRDIDX@#@COLOR@:@RRDPARAM@ outbound + GPRINT:out@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:out@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:out@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:out@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[mysqlslow] + DEF:slow=mysql.rrd:Slowqueries:AVERAGE + TITLE MySQL Slow Queries + YAXIS # + LINE2:slow#00CCCC:Slow Queries + COMMENT:\n + GPRINT:slow:LAST: \: %5.1lf (cur) + GPRINT:slow:MAX: \: %5.1lf (max) + GPRINT:slow:MIN: \: %5.1lf (min) + GPRINT:slow:AVERAGE: \: %5.1lf (avg)\n + +[mysqlthread] + DEF:threads=mysql.rrd:Threads:AVERAGE + TITLE MySQL Active Threads + YAXIS # + AREA:threads#00CCCC:Threads + COMMENT:\n + GPRINT:threads:LAST: \: %5.1lf (cur) + GPRINT:threads:MAX: \: %5.1lf (max) + GPRINT:threads:MIN: \: %5.1lf (min) + GPRINT:threads:AVERAGE: \: %5.1lf (avg)\n + +[ifstat] + FNPATTERN ifstat.(.+).rrd + TITLE Network Traffic + YAXIS Bits/second + DEF:inbytes@RRDIDX@=@RRDFN@:bytesReceived:AVERAGE + CDEF:in@RRDIDX@=inbytes@RRDIDX@,8,* + DEF:outbytes@RRDIDX@=@RRDFN@:bytesSent:AVERAGE + CDEF:out@RRDIDX@=outbytes@RRDIDX@,8,* + LINE2:in@RRDIDX@#@COLOR@:@RRDPARAM@ inbound + GPRINT:in@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:in@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:in@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:in@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + LINE2:out@RRDIDX@#@COLOR@:@RRDPARAM@ outbound + GPRINT:out@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:out@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:out@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:out@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[files] + FNPATTERN filesizes.(.+).rrd + TITLE File/Directory sizes + YAXIS KB + DEF:sz@RRDIDX@=@RRDFN@:size:AVERAGE + LINE2:sz@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:sz@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:sz@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:sz@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:sz@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[processes] + FNPATTERN processes.(.+).rrd + TITLE Process counts + YAXIS # + DEF:cnt@RRDIDX@=@RRDFN@:count:AVERAGE + LINE2:cnt@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:cnt@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:cnt@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:cnt@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:cnt@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[ports] + FNPATTERN ports.(.+).rrd + TITLE Network port counts + YAXIS # + DEF:cnt@RRDIDX@=@RRDFN@:count:AVERAGE + LINE2:cnt@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:cnt@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:cnt@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:cnt@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:cnt@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[lines] + FNPATTERN lines.(.+).rrd + TITLE Logfile linecounts + YAXIS # + DEF:cnt@RRDIDX@=@RRDFN@:count:AVERAGE + LINE2:cnt@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:cnt@RRDIDX@:LAST: %6.1lf (cur) \: + GPRINT:cnt@RRDIDX@:MAX: %6.1lf (max) \: + GPRINT:cnt@RRDIDX@:MIN: %6.1lf (min) \: + GPRINT:cnt@RRDIDX@:AVERAGE: %6.1lf (avg)\n + +[storage] + TITLE Storage Groups + YAXIS recordings + DEF:storage1=storage.rrd:rectvtotal:AVERAGE + LINE2:storage1#00CCCC:current recorded + + DEF:rectime=storage.rrd:rectvtime:AVERAGE + LINE2:rectime#000000:current recorded time + + DEF:livetime=storage.rrd:livetvtime:AVERAGE + LINE2:livetime#00CC11:current live time + + +[memmbe] + TITLE Memory usage for MythBackend + YAXIS mythbackend + DEF:vmsize=memmbe.rrd:VmSize:AVERAGE + LINE2:vmsize#00CCCC:vmsize + + DEF:vmpeak=memmbe.rrd:VmPeak:AVERAGE + LINE2:vmpeak#000000:vmpeak + + DEF:vmrss=memmbe.rrd:VmRSS:AVERAGE + LINE2:vmrss#00CC11:vmrss + +[memmfe] + TITLE Memory usage for MythFrontend + YAXIS mythfrontend + DEF:vmsize=memmfe.rrd:VmSize:AVERAGE + LINE2:vmsize#00CCCC:vmsize + + DEF:vmpeak=memmfe.rrd:VmPeak:AVERAGE + LINE2:vmpeak#000000:vmpeak + + DEF:vmrss=memmfe.rrd:VmRSS:AVERAGE + LINE2:vmrss#00CC11:vmrss diff --git a/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.diff b/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.diff new file mode 100644 index 0000000..1ca4caf --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.diff @@ -0,0 +1,42 @@ +--- hobbitgraph.cfg.orig 2008-01-08 09:24:59.000000000 -0600 ++++ hobbitgraph.cfg 2008-01-08 09:12:51.000000000 -0600 +@@ -1135,4 +1135,39 @@ + GPRINT:cnt@RRDIDX@:MIN: %6.1lf (min) \: + GPRINT:cnt@RRDIDX@:AVERAGE: %6.1lf (avg)\n + ++[storage] ++ TITLE Storage Groups ++ YAXIS recordings ++ DEF:storage1=storage.rrd:rectvtotal:AVERAGE ++ LINE2:storage1#00CCCC:current recorded + ++ DEF:rectime=storage.rrd:rectvtime:AVERAGE ++ LINE2:rectime#000000:current recorded time ++ ++ DEF:livetime=storage.rrd:livetvtime:AVERAGE ++ LINE2:livetime#00CC11:current live time ++ ++ ++[memmbe] ++ TITLE Memory usage for MythBackend ++ YAXIS mythbackend ++ DEF:vmsize=memmbe.rrd:VmSize:AVERAGE ++ LINE2:vmsize#00CCCC:vmsize ++ ++ DEF:vmpeak=memmbe.rrd:VmPeak:AVERAGE ++ LINE2:vmpeak#000000:vmpeak ++ ++ DEF:vmrss=memmbe.rrd:VmRSS:AVERAGE ++ LINE2:vmrss#00CC11:vmrss ++ ++[memmfe] ++ TITLE Memory usage for MythFrontend ++ YAXIS mythfrontend ++ DEF:vmsize=memmfe.rrd:VmSize:AVERAGE ++ LINE2:vmsize#00CCCC:vmsize ++ ++ DEF:vmpeak=memmfe.rrd:VmPeak:AVERAGE ++ LINE2:vmpeak#000000:vmpeak ++ ++ DEF:vmrss=memmfe.rrd:VmRSS:AVERAGE ++ LINE2:vmrss#00CC11:vmrss diff --git a/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.orig b/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.orig new file mode 100644 index 0000000..e60a2a5 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.orig @@ -0,0 +1,1138 @@ +# This file defines how RRD graphs are generated by the hobbitgraph CGI. +# +# Each section begins with a "[SERVICE]" indicator - this is the name passed +# to hobbitgraph.cgi?host=foo&service=SERVICE +# +# A graph has a TITLE and a YAXIS setting - these are texts shown as the +# title of the graph, and the YAXIS heading respectively. (The X-axis is +# always time-based). +# +# If a fixed set of RRD files are used for the graph, you just write those +# in the RRDtool definitions. +# +# For graphs that use multiple RRD files as input, you specify a filename +# pattern in the FNPATTERN statement, and optionally a pattern of files +# to exclude from the graph with EXFNPATTERN (see "[tcp]" for an example). +# When FNPATTERN is used, you can use "@RRDFN@" in the RRDtool definitions +# to pick up each filename. "@RRDIDX@" is an index (starting at 0) for each +# file in the set. "@RRDPARAM@" contains the first word extracted from the +# pattern of files (see e.g. "[memory]" how this is used). "@COLOR@" picks +# a new color for each graph automatically. +# +# The remainder of the lines in each definition are passed directly to the +# RRDtool rrd_graph() routine. +# +# Most of these RRD definitions are from the larrd-grapher.cgi from LARRD 0.43c. + +[la] + TITLE CPU Load + YAXIS Load + DEF:avg=la.rrd:la:AVERAGE + CDEF:la=avg,100,/ + AREA:la#00CC00:CPU Load Average + -u 1.0 + GPRINT:la:LAST: \: %5.1lf (cur) + GPRINT:la:MAX: \: %5.1lf (max) + GPRINT:la:MIN: \: %5.1lf (min) + GPRINT:la:AVERAGE: \: %5.1lf (avg)\n + +[la-multi] + TITLE Multi-host CPU Load + YAXIS Load + FNPATTERN la.rrd + DEF:avg@RRDIDX@=@RRDFN@:la:AVERAGE + CDEF:la@RRDIDX@=avg@RRDIDX@,100,/ + LINE2:la@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 1.0 + GPRINT:la@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:la@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:la@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:la@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[la1] + TITLE CPU Utilitization + YAXIS % Used + -u 100 + -r + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + CDEF:pbusy=100,cpu_idl,- + LINE2:pbusy#00CC00:% CPU busy + GPRINT:pbusy:LAST: \: %5.1lf (cur) + GPRINT:pbusy:MAX: \: %5.1lf (max) + GPRINT:pbusy:MIN: \: %5.1lf (min) + GPRINT:pbusy:AVERAGE: \: %5.1lf (avg)\n + +[la1-multi] + TITLE Multi-host CPU Utilitization + YAXIS % Used + FNPATTERN vmstat.rrd + -u 100 + -r + DEF:cpu_idl@RRDIDX@=@RRDFN@:cpu_idl:AVERAGE + CDEF:pbusy@RRDIDX@=100,cpu_idl@RRDIDX@,- + LINE2:pbusy@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:pbusy@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:pbusy@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:pbusy@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:pbusy@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[clock] + TITLE Clock offset + YAXIS Seconds + DEF:offset=clock.rrd:la:AVERAGE + LINE2:offset#00CC00:Seconds + GPRINT:offset:LAST: \: %5.1lf (cur) + GPRINT:offset:MAX: \: %5.1lf (max) + GPRINT:offset:MIN: \: %5.1lf (min) + GPRINT:offset:AVERAGE: \: %5.1lf (avg)\n + +[disk] + FNPATTERN disk(.*).rrd + TITLE Disk Utilization + YAXIS % Full + DEF:p@RRDIDX@=@RRDFN@:pct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[disk1] + FNPATTERN disk(.*).rrd + TITLE Disk Utilization + YAXIS Used + DEF:p@RRDIDX@=@RRDFN@:used:AVERAGE + CDEF:p@RRDIDX@t=p@RRDIDX@,1024,* + LINE2:p@RRDIDX@t#@COLOR@:@RRDPARAM@ + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf KB (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf KB (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf KB (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf KB (avg)\n + +# The qtree graphs are based on the qtree report from filerstats2bb.pl +# These handle NetApp storage devices. +[qtree] + FNPATTERN qtree(.+).rrd + TITLE Qtree Utilization + YAXIS % Full + DEF:p@RRDIDX@=@RRDFN@:pct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +# The qtree graphs are based on the inode report from filerstats2bb.pl +# These handle NetApp storage devices +# An enhanced disk script that just runs "df -i" could probably get the +# same data. +[inode] + FNPATTERN inode(.+).rrd + TITLE inode Utilization + YAXIS % Full + DEF:p@RRDIDX@=@RRDFN@:pct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -l 0 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[memory] + FNPATTERN memory.(.+).rrd + TITLE Memory Utilization + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[ram] + TITLE RAM Utilization + YAXIS % Used + DEF:p=memory.real.rrd:realmempct:AVERAGE + LINE2:p#0000FF:% RAM used + -u 100 + -b 1024 + GPRINT:p:LAST: \: %5.1lf (cur) + GPRINT:p:MAX: \: %5.1lf (max) + GPRINT:p:MIN: \: %5.1lf (min) + GPRINT:p:AVERAGE: \: %5.1lf (avg)\n + +[ram-multi] + TITLE Multi-host RAM Utilization + FNPATTERN memory.real.rrd + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[swap] + TITLE Swap Utilization + YAXIS % Used + DEF:p=memory.swap.rrd:realmempct:AVERAGE + LINE2:p#0000FF:% Swap used + -u 100 + -b 1024 + GPRINT:p:LAST: \: %5.1lf (cur) + GPRINT:p:MAX: \: %5.1lf (max) + GPRINT:p:MIN: \: %5.1lf (min) + GPRINT:p:AVERAGE: \: %5.1lf (avg)\n + +[swap-multi] + TITLE Multi-host Swap Utilization + FNPATTERN memory.swap.rrd + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[mem] + TITLE Actual Memory Utilization + YAXIS % Used + DEF:p=memory.actual.rrd:realmempct:AVERAGE + LINE2:p#0000FF:% Actual memory used + -u 100 + -b 1024 + GPRINT:p:LAST: \: %5.1lf (cur) + GPRINT:p:MAX: \: %5.1lf (max) + GPRINT:p:MIN: \: %5.1lf (min) + GPRINT:p:AVERAGE: \: %5.1lf (avg)\n + +[mem-multi] + TITLE Multi-host Actual Memory Utilization + FNPATTERN memory.actual.rrd + YAXIS % Used + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + -b 1024 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[users] + TITLE Users and Processes + YAXIS # + DEF:p=procs.rrd:la:AVERAGE + DEF:u=users.rrd:la:AVERAGE + AREA:p#00CC00:Processes + LINE1:u#000099:Users + COMMENT:\n + GPRINT:p:LAST:Processes \: %5.1lf%s (cur) + GPRINT:p:MAX: \: %5.1lf%s (max) + GPRINT:p:MIN: \: %5.1lf%s (min) + GPRINT:p:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:u:LAST:Users \: %5.1lf%s (cur) + GPRINT:u:MAX: \: %5.1lf%s (max) + GPRINT:u:MIN: \: %5.1lf%s (min) + GPRINT:u:AVERAGE: \: %5.1lf%s (avg)\n + +[users-multi] + TITLE Multi-host users + FNPATTERN users.rrd + YAXIS # + DEF:u@RRDIDX@=@RRDFN@:la:AVERAGE + LINE2:u@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:u@RRDIDX@:LAST:Users \: %5.1lf%s (cur) + GPRINT:u@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:u@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:u@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[tcp] + # TCP tests - include all, except the HTTP tests as they tend to have + # much longer response times than the normal tcp tests. + FNPATTERN tcp.(.+).rrd + EXFNPATTERN tcp.http.(.+).rrd + TITLE TCP Connection Times + YAXIS Seconds + DEF:p@RRDIDX@=@RRDFN@:sec:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf%s (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[http] + FNPATTERN tcp.http.(.+).rrd + TITLE HTTP Response Times + YAXIS Seconds + DEF:p@RRDIDX@=@RRDFN@:sec:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf%s (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[conn-multi] + FNPATTERN tcp.conn.rrd + TITLE PING Round-trip time + YAXIS Seconds + DEF:p@RRDIDX@=@RRDFN@:sec:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf%s (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[ntpstat] + TITLE NTP accuracy + YAXIS Offset (ms) + DEF:u=ntpstat.rrd:offsetms:AVERAGE + LINE2:u#FF0000:Offset (ms) + COMMENT:\n + GPRINT:u:LAST: \: %5.2lf ms (cur)\n + GPRINT:u:MAX: \: %5.2lf ms (max)\n + GPRINT:u:MIN: \: %5.2lf ms (min)\n + GPRINT:u:AVERAGE: \: %5.2lf ms (avg)\n + +[vmstat] + TITLE CPU Utilization + YAXIS % Load + -u 100 + -r + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + DEF:cpu_usr=vmstat.rrd:cpu_usr:AVERAGE + DEF:cpu_sys=vmstat.rrd:cpu_sys:AVERAGE + AREA:cpu_sys#FF0000:System + STACK:cpu_usr#FFFF00:User + STACK:cpu_idl#00FF00:Idle + COMMENT:\n + GPRINT:cpu_sys:LAST:System \: %5.1lf (cur) + GPRINT:cpu_sys:MAX: \: %5.1lf (max) + GPRINT:cpu_sys:MIN: \: %5.1lf (min) + GPRINT:cpu_sys:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_usr:LAST:User \: %5.1lf (cur) + GPRINT:cpu_usr:MAX: \: %5.1lf (max) + GPRINT:cpu_usr:MIN: \: %5.1lf (min) + GPRINT:cpu_usr:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_idl:LAST:Idle \: %5.1lf (cur) + GPRINT:cpu_idl:MAX: \: %5.1lf (max) + GPRINT:cpu_idl:MIN: \: %5.1lf (min) + GPRINT:cpu_idl:AVERAGE: \: %5.1lf (avg)\n + +[vmstat1] + TITLE CPU Utilization + YAXIS % Load + -u 100 + -r + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + DEF:cpu_usr=vmstat.rrd:cpu_usr:AVERAGE + DEF:cpu_sys=vmstat.rrd:cpu_sys:AVERAGE + DEF:cpu_wait=vmstat.rrd:cpu_wait:AVERAGE + AREA:cpu_sys#FF0000:System + STACK:cpu_wait#774400:I/O wait + STACK:cpu_usr#FFFF00:User + STACK:cpu_idl#00FF00:Idle + COMMENT:\n + GPRINT:cpu_sys:LAST:System \: %5.1lf (cur) + GPRINT:cpu_sys:MAX: \: %5.1lf (max) + GPRINT:cpu_sys:MIN: \: %5.1lf (min) + GPRINT:cpu_sys:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_wait:LAST:I/O Wait\: %5.1lf (cur) + GPRINT:cpu_wait:MAX: \: %5.1lf (max) + GPRINT:cpu_wait:MIN: \: %5.1lf (min) + GPRINT:cpu_wait:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_usr:LAST:User \: %5.1lf (cur) + GPRINT:cpu_usr:MAX: \: %5.1lf (max) + GPRINT:cpu_usr:MIN: \: %5.1lf (min) + GPRINT:cpu_usr:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_idl:LAST:Idle \: %5.1lf (cur) + GPRINT:cpu_idl:MAX: \: %5.1lf (max) + GPRINT:cpu_idl:MIN: \: %5.1lf (min) + GPRINT:cpu_idl:AVERAGE: \: %5.1lf (avg)\n + +[vmstat2] + TITLE CPU Utilization + YAXIS % Load + -u 1.0 + DEF:avg=la.rrd:la:AVERAGE + CDEF:la=avg,100,/ + DEF:cpu_idl=vmstat.rrd:cpu_idl:AVERAGE + CDEF:cpu_idl2=cpu_idl,100,/ + DEF:cpu_usr=vmstat.rrd:cpu_usr:AVERAGE + CDEF:cpu_usr2=cpu_usr,100,/ + DEF:cpu_sys=vmstat.rrd:cpu_sys:AVERAGE + CDEF:cpu_sys2=cpu_sys,100,/ + AREA:cpu_sys2#FF0000:System + STACK:cpu_usr2#FFFF00:User + STACK:cpu_idl2#00FF00:Idle + LINE1:la#000099:CPU Load Average + COMMENT:\n + GPRINT:cpu_sys2:LAST:System \: %5.1lf (cur) + GPRINT:cpu_sys2:MAX: \: %5.1lf (max) + GPRINT:cpu_sys2:MIN: \: %5.1lf (min) + GPRINT:cpu_sys2:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_usr2:LAST:User \: %5.1lf (cur) + GPRINT:cpu_usr2:MAX: \: %5.1lf (max) + GPRINT:cpu_usr2:MIN: \: %5.1lf (min) + GPRINT:cpu_usr2:AVERAGE: \: %5.1lf (avg)\n + GPRINT:cpu_idl2:LAST:Idle \: %5.1lf (cur) + GPRINT:cpu_idl2:MAX: \: %5.1lf (max) + GPRINT:cpu_idl2:MIN: \: %5.1lf (min) + GPRINT:cpu_idl2:AVERAGE: \: %5.1lf (avg)\n + GPRINT:la:LAST:CPU Load Average \: %5.1lf (cur) + GPRINT:la:MAX: \: %5.1lf (max) + GPRINT:la:MIN: \: %5.1lf (min) + GPRINT:la:AVERAGE: \: %5.1lf (avg)\n + +[vmstat3] + TITLE Interrupts and Context Switches + YAXIS Average Events/sec + DEF:int=vmstat.rrd:cpu_int:AVERAGE + DEF:csw=vmstat.rrd:cpu_csw:AVERAGE + LINE2:int#0000ff:Interrupts + LINE2:csw#00FF00:Context Switches + COMMENT:\n + GPRINT:int:LAST:Interrupts \: %5.1lf%s (cur) + GPRINT:int:MAX: \: %5.1lf%s (max) + GPRINT:int:MIN: \: %5.1lf%s (min) + GPRINT:int:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:csw:LAST:Context Switches \: %5.1lf%s (cur) + GPRINT:csw:MAX: \: %5.1lf%s (max) + GPRINT:csw:MIN: \: %5.1lf%s (min) + GPRINT:csw:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat4] + TITLE Swap Activity + YAXIS Average kB/s + -b 1024 + DEF:si=vmstat.rrd:mem_si:AVERAGE + DEF:so=vmstat.rrd:mem_so:AVERAGE + LINE2:si#0000ff:Memory Swapped from Disk + LINE2:so#00FF00:Memory Swapped to Disk + COMMENT:\n + GPRINT:si:LAST:Memory Swapped from Disk \: %5.1lf (cur) + GPRINT:si:MAX: \: %5.1lf (max) + GPRINT:si:MIN: \: %5.1lf (min) + GPRINT:si:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:si:LAST:Memory Swapped to Disk \: %5.1lf (cur) + GPRINT:si:MAX: \: %5.1lf (max) + GPRINT:si:MIN: \: %5.1lf (min) + GPRINT:si:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat5] + TITLE Block I/O + YAXIS Average blocks/s + DEF:bi=vmstat.rrd:dsk_bi:AVERAGE + DEF:bo=vmstat.rrd:dsk_bo:AVERAGE + LINE2:bi#0000FF:Blocks sent to a block device + LINE2:bo#00FF00:Blocks received from a block device + COMMENT:\n + GPRINT:bi:LAST:Blocks sent to a block device \: %5.1lf (cur) + GPRINT:bi:MAX: \: %5.1lf (max) + GPRINT:bi:MIN: \: %5.1lf (min) + GPRINT:bi:AVERAGE: \: %5.1lf (avg)\n + GPRINT:bo:LAST:Blocks received from a block device \: %5.1lf (cur) + GPRINT:bo:MAX: \: %5.1lf (max) + GPRINT:bo:MIN: \: %5.1lf (min) + GPRINT:bo:AVERAGE: \: %5.1lf (avg)\n + +[vmstat6] + # This graph only works on some OS'es (Solaris) + TITLE Memory Utilization + YAXIS Size kB + -b 1024 + DEF:free=vmstat.rrd:mem_free:AVERAGE + CDEF:fr=free,1024,* + DEF:swap=vmstat.rrd:mem_swap:AVERAGE + CDEF:sw=swap,1024,* + LINE2:fr#0000ff:Size of the free list + LINE2:sw#00FF00:Swap space currently available + COMMENT:\n + GPRINT:fr:LAST:Size of the free list \: %5.1lf%s (cur) + GPRINT:fr:MAX: \: %5.1lf%s (max) + GPRINT:fr:MIN: \: %5.1lf%s (min) + GPRINT:fr:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:sw:LAST:Swap space currently available \: %5.1lf%s (cur) + GPRINT:sw:MAX: \: %5.1lf%s (max) + GPRINT:sw:MIN: \: %5.1lf%s (min) + GPRINT:sw:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat7] + # This graph only works on some OS'es (Solaris) + TITLE Memory Utilization + YAXIS Events/s + DEF:re=vmstat.rrd:mem_re:AVERAGE + DEF:mf=vmstat.rrd:mem_mf:AVERAGE + LINE2:re#0000ff:Page reclaims + LINE2:mf#00FF00:Minor faults + COMMENT:\n + GPRINT:re:LAST:Page reclaims \: %5.1lf%s (cur) + GPRINT:re:MAX: \: %5.1lf%s (max) + GPRINT:re:MIN: \: %5.1lf%s (min) + GPRINT:re:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:mf:LAST:Minor faults \: %5.1lf%s (cur) + GPRINT:mf:MAX: \: %5.1lf%s (max) + GPRINT:mf:MIN: \: %5.1lf%s (min) + GPRINT:mf:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat8] + # This graph only works on some OS'es (Solaris) + TITLE Paging Activity + YAXIS kB/s + -b 1024 + DEF:pi=vmstat.rrd:mem_pi:AVERAGE + CDEF:rpi=pi,1024,* + DEF:po=vmstat.rrd:mem_po:AVERAGE + CDEF:rpo=po,1024,* + LINE2:rpi#0000ff:Paged in + LINE2:rpo#00FF00:Paged out + COMMENT:\n + GPRINT:pi:LAST:Page Ins \: %5.1lf%s (cur) + GPRINT:pi:MAX: \: %5.1lf%s (max) + GPRINT:pi:MIN: \: %5.1lf%s (min) + GPRINT:pi:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:po:LAST:Page Outs \: %5.1lf%s (cur) + GPRINT:po:MAX: \: %5.1lf%s (max) + GPRINT:po:MIN: \: %5.1lf%s (min) + GPRINT:po:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat9] + # This graph only works on some OS'es (Solaris) + TITLE RAM Scan Rate + YAXIS Pages scanned/s + DEF:sr=vmstat.rrd:sr:AVERAGE + AREA:sr#00CC00:Scan Rate + -u 20 + GPRINT:sr:LAST: \: %5.1lf%s (cur) + GPRINT:sr:MAX: \: %5.1lf%s (max) + GPRINT:sr:MIN: \: %5.1lf%s (min) + GPRINT:sr:AVERAGE: \: %5.1lf%s (avg)\n + +[vmstat0] + # This graph only works on some OS'es (Solaris) + TITLE System Calls + YAXIS System Calls/s + DEF:cpu_syc=vmstat.rrd:cpu_syc:AVERAGE + AREA:cpu_syc#00CC00:System Calls + GPRINT:cpu_syc:LAST: \: %5.1lf%s (cur) + GPRINT:cpu_syc:MAX: \: %5.1lf%s (max) + GPRINT:cpu_syc:MIN: \: %5.1lf%s (min) + GPRINT:cpu_syc:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat] + TITLE TCP/IP statistics + YAXIS Packets/second + DEF:tcpInInorderPackets=netstat.rrd:tcpInInorderPackets:AVERAGE + DEF:tcpOutDataPackets=netstat.rrd:tcpOutDataPackets:AVERAGE + DEF:tcpRetransPackets=netstat.rrd:tcpRetransPackets:AVERAGE + LINE3:tcpInInorderPackets#00FF00:In + LINE1:tcpOutDataPackets#0000FF:Out + LINE2:tcpRetransPackets#FF0000:Retrans + COMMENT:\n + GPRINT:tcpInInorderPackets:LAST:In \: %5.1lf%s (cur) + GPRINT:tcpInInorderPackets:MAX: \: %5.1lf%s (max) + GPRINT:tcpInInorderPackets:MIN: \: %5.1lf%s (min) + GPRINT:tcpInInorderPackets:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpOutDataPackets:LAST:Out \: %5.1lf%s (cur) + GPRINT:tcpOutDataPackets:MAX: \: %5.1lf%s (max) + GPRINT:tcpOutDataPackets:MIN: \: %5.1lf%s (min) + GPRINT:tcpOutDataPackets:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpRetransPackets:LAST:Retrans \: %5.1lf%s (cur) + GPRINT:tcpRetransPackets:MAX: \: %5.1lf%s (max) + GPRINT:tcpRetransPackets:MIN: \: %5.1lf%s (min) + GPRINT:tcpRetransPackets:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat0] + TITLE TCP/IP statistics + YAXIS Bits/second + DEF:tcpInInorderBytes=netstat.rrd:tcpInInorderBytes:AVERAGE + DEF:tcpOutDataBytes=netstat.rrd:tcpOutDataBytes:AVERAGE + DEF:tcpRetransBytes=netstat.rrd:tcpRetransBytes:AVERAGE + CDEF:tcpInInorderBits=tcpInInorderBytes,8,* + CDEF:tcpOutDataBits=tcpOutDataBytes,8,* + CDEF:tcpRetransBits=tcpRetransBytes,8,* + LINE3:tcpInInorderBits#00FF00:In + LINE1:tcpOutDataBits#0000FF:Out + LINE2:tcpRetransBits#FF0000:Retrans + COMMENT:\n + GPRINT:tcpInInorderBits:LAST:In \: %5.1lf%s (cur) + GPRINT:tcpInInorderBits:MAX: \: %5.1lf%s (max) + GPRINT:tcpInInorderBits:MIN: \: %5.1lf%s (min) + GPRINT:tcpInInorderBits:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpOutDataBits:LAST:Out \: %5.1lf%s (cur) + GPRINT:tcpOutDataBits:MAX: \: %5.1lf%s (max) + GPRINT:tcpOutDataBits:MIN: \: %5.1lf%s (min) + GPRINT:tcpOutDataBits:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpRetransBits:LAST:Retrans \: %5.1lf%s (cur) + GPRINT:tcpRetransBits:MAX: \: %5.1lf%s (max) + GPRINT:tcpRetransBits:MIN: \: %5.1lf%s (min) + GPRINT:tcpRetransBits:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat1] + TITLE UDP Statistics + YAXIS # Datagrams + DEF:udpInDatagrams=netstat.rrd:udpInDatagrams:AVERAGE + DEF:udpOutDatagrams=netstat.rrd:udpOutDatagrams:AVERAGE + DEF:udpInErrors=netstat.rrd:udpInErrors:AVERAGE + LINE3:udpInDatagrams#00FF00:UDP In Datagrams + LINE1:udpOutDatagrams#0000FF:UDP Out Datagrams + LINE2:udpInErrors#FF0000:UDP In Errors + COMMENT:\n + GPRINT:udpInDatagrams:LAST:UDP In Datagrams \: %5.1lf%s (cur) + GPRINT:udpInDatagrams:MAX: \: %5.1lf%s (max) + GPRINT:udpInDatagrams:MIN: \: %5.1lf%s (min) + GPRINT:udpInDatagrams:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:udpOutDatagrams:LAST:UDP Out Datagrams \: %5.1lf%s (cur) + GPRINT:udpOutDatagrams:MAX: \: %5.1lf%s (max) + GPRINT:udpOutDatagrams:MIN: \: %5.1lf%s (min) + GPRINT:udpOutDatagrams:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:udpInErrors:LAST:UDP In Errors \: %5.1lf%s (cur) + GPRINT:udpInErrors:MAX: \: %5.1lf%s (max) + GPRINT:udpInErrors:MIN: \: %5.1lf%s (min) + GPRINT:udpInErrors:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat2] + TITLE TCP Statistics + YAXIS # Events + DEF:tcpActiveOpens=netstat.rrd:tcpActiveOpens:AVERAGE + DEF:tcpPassiveOpens=netstat.rrd:tcpPassiveOpens:AVERAGE + DEF:tcpAttemptFails=netstat.rrd:tcpAttemptFails:AVERAGE + DEF:tcpEstabResets=netstat.rrd:tcpEstabResets:AVERAGE + LINE2:tcpActiveOpens#0000FF:TCP Active Open + LINE2:tcpPassiveOpens#000088:TCP Passive Open + LINE2:tcpAttemptFails#FF0000:TCP Attempts Fail + LINE2:tcpEstabResets#88FF00:TCP Established Resets + COMMENT:\n + GPRINT:tcpActiveOpens:LAST:TCP Active Opens \: %5.1lf%s (cur) + GPRINT:tcpActiveOpens:MAX: \: %5.1lf%s (max) + GPRINT:tcpActiveOpens:MIN: \: %5.1lf%s (min) + GPRINT:tcpActiveOpens:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpPassiveOpens:LAST:TCP Passive Opens \: %5.1lf%s (cur) + GPRINT:tcpPassiveOpens:MAX: \: %5.1lf%s (max) + GPRINT:tcpPassiveOpens:MIN: \: %5.1lf%s (min) + GPRINT:tcpPassiveOpens:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpAttemptFails:LAST:TCP Failed Attempts \: %5.1lf%s (cur) + GPRINT:tcpAttemptFails:MAX: \: %5.1lf%s (max) + GPRINT:tcpAttemptFails:MIN: \: %5.1lf%s (min) + GPRINT:tcpAttemptFails:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:tcpEstabResets:LAST:TCP Established Resets \: %5.1lf%s (cur) + GPRINT:tcpEstabResets:MAX: \: %5.1lf%s (max) + GPRINT:tcpEstabResets:MIN: \: %5.1lf%s (min) + GPRINT:tcpEstabResets:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat3] + TITLE Established TCP Connections + YAXIS # Connections + DEF:tcpCurrEstab=netstat.rrd:tcpCurrEstab:AVERAGE + LINE2:tcpCurrEstab#0000FF:TCP Established Connections + COMMENT:\n + GPRINT:tcpCurrEstab:LAST:TCP Established Connections \: %5.1lf%s (cur) + GPRINT:tcpCurrEstab:MAX: \: %5.1lf%s (max) + GPRINT:tcpCurrEstab:MIN: \: %5.1lf%s (min) + GPRINT:tcpCurrEstab:AVERAGE: \: %5.1lf%s (avg)\n + +[netstat3-multi] + TITLE Multi-host TCP Connections + YAXIS # Connections + FNPATTERN netstat.rrd + DEF:tcpCurrEstab@RRDIDX@=@RRDFN@:tcpCurrEstab:AVERAGE + LINE2:tcpCurrEstab@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:tcpCurrEstab@RRDIDX@:LAST:# Est. \: %5.1lf%s (cur) + GPRINT:tcpCurrEstab@RRDIDX@:MAX: \: %5.1lf%s (max) + GPRINT:tcpCurrEstab@RRDIDX@:MIN: \: %5.1lf%s (min) + GPRINT:tcpCurrEstab@RRDIDX@:AVERAGE: \: %5.1lf%s (avg)\n + +[iostat] + TITLE I/O Utilization + YAXIS Stats + FNPATTERN iostat.(.+).rrd + DEF:p@RRDIDX@B=@RRDFN@:b:AVERAGE + DEF:p@RRDIDX@A=@RRDFN@:asvc_t:AVERAGE + DEF:p@RRDIDX@W=@RRDFN@:wsvc_t:AVERAGE + CDEF:p@RRDIDX@t=p@RRDIDX@B,5,GT,p@RRDIDX@B,UNKN,IF + LINE2:p@RRDIDX@t#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:p@RRDIDX@B:LAST:B \: %5.1lf (cur) + GPRINT:p@RRDIDX@B:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@B:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@B:AVERAGE: \: %5.1lf (avg)\n + GPRINT:p@RRDIDX@A:LAST:asvc_t \: %5.1lf (cur) + GPRINT:p@RRDIDX@A:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@A:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@A:AVERAGE: \: %5.1lf (avg)\n + GPRINT:p@RRDIDX@W:LAST:wsvc_t \: %5.1lf (cur) + GPRINT:p@RRDIDX@W:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@W:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@W:AVERAGE: \: %5.1lf (avg)\n + COMMENT:\n + +[apache] + TITLE Apache Utilization + YAXIS Activity + DEF:TA=apache.rrd:TA:AVERAGE + CDEF:TA1=TA,300,* + DEF:TKB=apache.rrd:TKB:AVERAGE + CDEF:TKB1=TKB,300,* + LINE2:TA1#0000FF:TA (# Accesses) + LINE2:TKB1#FF0000:TKB (kBytes Transferred) + COMMENT:\n + GPRINT:TA1:LAST:TA \: %5.1lf%s (cur) + GPRINT:TA1:MAX: \: %5.1lf%s (max) + GPRINT:TA1:MIN: \: %5.1lf%s (min) + GPRINT:TA1:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:TKB1:LAST:TKB \: %5.1lf%s (cur) + GPRINT:TKB1:MAX: \: %5.1lf%s (max) + GPRINT:TKB1:MIN: \: %5.1lf%s (min) + GPRINT:TKB1:AVERAGE: \: %5.1lf%s (avg)\n + +[apache1] + TITLE Apache Workers + YAXIS # Worker Threads/Processes + #DEF:BS=apache.rrd:BS:AVERAGE + #DEF:IS=apache.rrd:IS:AVERAGE + DEF:BW=apache.rrd:BW:AVERAGE + DEF:IW=apache.rrd:IW:AVERAGE + #LINE2:BS#00CC00:BS + #LINE2:IS#FF00FF:IS + LINE2:BW#555555:BW Busy Workers + LINE2:IW#880000:IW Idle Workers + COMMENT:\n + GPRINT:BW:LAST:BW \: %5.1lf%s (cur) + GPRINT:BW:MAX: \: %5.1lf%s (max) + GPRINT:BW:MIN: \: %5.1lf%s (min) + GPRINT:BW:AVERAGE: \: %5.1lf%s (avg)\n + GPRINT:IW:LAST:IW \: %5.1lf%s (cur) + GPRINT:IW:MAX: \: %5.1lf%s (max) + GPRINT:IW:MIN: \: %5.1lf%s (min) + GPRINT:IW:AVERAGE: \: %5.1lf%s (avg)\n + +[apache2] + TITLE Apache CPU Utilization + YAXIS CPU Load + DEF:CPU=apache.rrd:CPU:AVERAGE + LINE2:CPU#000088:CPU + COMMENT:\n + GPRINT:CPU:LAST:CPU \: %5.1lf (cur) + GPRINT:CPU:MAX: \: %5.1lf (max) + GPRINT:CPU:MIN: \: %5.1lf (min) + GPRINT:CPU:AVERAGE: \: %5.1lf (avg)\n + +[apache3] + TITLE Apache Requests/Second + YAXIS # Requests + DEF:RPS=apache.rrd:REQPERSEC:AVERAGE + LINE2:RPS#000088:RPS + COMMENT:\n + GPRINT:RPS:LAST:Requests per Second \: %5.1lf (cur) + GPRINT:RPS:MAX: \: %5.1lf (max) + GPRINT:RPS:MIN: \: %5.1lf (min) + GPRINT:RPS:AVERAGE: \: %5.1lf (avg)\n + +[apache3-multi] + TITLE Multi-Host Apache Requests/Second + FNPATTERN apache.rrd + YAXIS # Requests / seconds + # --slope-mode + DEF:RPS@RRDIDX@=@RRDFN@:REQPERSEC:AVERAGE + LINE2:RPS@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:RPS@RRDIDX@:LAST:Requests per Second \: %5.1lf (cur) + GPRINT:RPS@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:RPS@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:RPS@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[bea] + FNPATTERN bea.memory.(.+).rrd + TITLE BEA/Weblogic % Heap Free + YAXIS % Free + DEF:free@RRDIDX@=@RRDFN@:freeheap:AVERAGE + DEF:used@RRDIDX@=@RRDFN@:usedheap:AVERAGE + DEF:total@RRDIDX@=@RRDFN@:totalheap:AVERAGE + CDEF:mbfree@RRDIDX@=free@RRDIDX@,1048576,/ + CDEF:mbused@RRDIDX@=used@RRDIDX@,1048576,/ + CDEF:mbtotal@RRDIDX@=total@RRDIDX@,1048576,/ + CDEF:pctfree@RRDIDX@=mbfree@RRDIDX@,100,*,mbtotal@RRDIDX@,/ + LINE2:pctfree@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:mbused@RRDIDX@:LAST:Used \: %8.1lf MB (cur) + GPRINT:mbused@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbused@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbused@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + GPRINT:mbfree@RRDIDX@:LAST:Free \: %8.1lf MB (cur) + GPRINT:mbfree@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbfree@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbfree@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + +[bea2] + FNPATTERN bea.memory.(.+).rrd + TITLE BEA/Weblogic % Physical Memory Free + YAXIS % Free + DEF:free@RRDIDX@=@RRDFN@:freephysmem:AVERAGE + DEF:used@RRDIDX@=@RRDFN@:usedphysmem:AVERAGE + DEF:total@RRDIDX@=@RRDFN@:totalphysmem:AVERAGE + CDEF:mbfree@RRDIDX@=free@RRDIDX@,1048576,/ + CDEF:mbused@RRDIDX@=used@RRDIDX@,1048576,/ + CDEF:mbtotal@RRDIDX@=total@RRDIDX@,1048576,/ + CDEF:pctfree@RRDIDX@=mbfree@RRDIDX@,100,*,mbtotal@RRDIDX@,/ + LINE2:pctfree@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:mbused@RRDIDX@:LAST:Used \: %8.1lf MB (cur) + GPRINT:mbused@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbused@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbused@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + GPRINT:mbfree@RRDIDX@:LAST:Free \: %8.1lf MB (cur) + GPRINT:mbfree@RRDIDX@:MAX: \: %8.1lf MB (max) + GPRINT:mbfree@RRDIDX@:MIN: \: %8.1lf MB (min) + GPRINT:mbfree@RRDIDX@:AVERAGE: \: %8.1lf MB (avg)\n + +[bea3] + FNPATTERN bea.threads.(.+).weblogic.kernel.Default.rrd + TITLE BEA/Weblogic kernel.Default Idle Threads + YAXIS # Idle Threads + DEF:threads@RRDIDX@=@RRDFN@:currentidlecount:AVERAGE + LINE2:threads@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:threads@RRDIDX@:LAST:Free \: %4.2lf (cur) + GPRINT:threads@RRDIDX@:MAX: \: %4.2lf (max) + GPRINT:threads@RRDIDX@:MIN: \: %4.2lf (min) + GPRINT:threads@RRDIDX@:AVERAGE: \: %4.2lf (avg)\n + +[bea4] + FNPATTERN bea.threads.(.+).weblogic.kernel.Default.rrd + TITLE BEA/Weblogic kernel.Default Requests + YAXIS # Requests + DEF:reqs@RRDIDX@=@RRDFN@:totalcount:AVERAGE + LINE2:reqs@RRDIDX@#@COLOR@:@RRDPARAM@ + COMMENT:\n + GPRINT:reqs@RRDIDX@:LAST:Free \: %4.2lf (cur) + GPRINT:reqs@RRDIDX@:MAX: \: %4.2lf (max) + GPRINT:reqs@RRDIDX@:MIN: \: %4.2lf (min) + GPRINT:reqs@RRDIDX@:AVERAGE: \: %4.2lf (avg)\n + +[bind] + TITLE BIND Utilization + YAXIS Stats + DEF:A=bind.rrd:A:AVERAGE + DEF:ANY=bind.rrd:ANY:AVERAGE + DEF:AXFR=bind.rrd:AXFR:AVERAGE + DEF:MX=bind.rrd:MX:AVERAGE + DEF:O=bind.rrd:O:AVERAGE + DEF:PTR=bind.rrd:PTR:AVERAGE + DEF:SOA=bind.rrd:SOA:AVERAGE + CDEF:A1=A,300,* + CDEF:ANY1=ANY,300,* + CDEF:AXFR1=AXFR,300,* + CDEF:MX1=MX,300,* + CDEF:O1=O,300,* + CDEF:PTR1=PTR,300,* + CDEF:SOA1=SOA,300,* + LINE2:A1#0000FF:A + LINE2:ANY1#FF0000:ANY + LINE2:AXFR1#00CC00:AXFR + LINE2:MX1#FF00FF:MX + LINE2:O1#555555:O + LINE2:PTR1#880000:PTR + LINE2:SOA1#000088:SOA + COMMENT:\n + GPRINT:A1:LAST:A \: %5.1lf (cur) + GPRINT:A1:MAX:A \: %5.1lf (max) + GPRINT:A1:MIN:A \: %5.1lf (min) + GPRINT:A1:AVERAGE:A \: %5.1lf (avg)\n + GPRINT:ANY1:LAST:ANY \: %5.1lf (cur) + GPRINT:ANY1:MAX:ANY \: %5.1lf (max) + GPRINT:ANY1:MIN:ANY \: %5.1lf (min) + GPRINT:ANY1:AVERAGE:ANY \: %5.1lf (avg)\n + GPRINT:AXFR1:LAST:AXFR \: %5.1lf (cur) + GPRINT:AXFR1:MAX:AXFR \: %5.1lf (max) + GPRINT:AXFR1:MIN:AXFR \: %5.1lf (min) + GPRINT:AXFR1:AVERAGE:AXFR \: %5.1lf (avg)\n + GPRINT:MX1:LAST:MX \: %5.1lf (cur) + GPRINT:MX1:MAX:MX \: %5.1lf (max) + GPRINT:MX1:MIN:MX \: %5.1lf (min) + GPRINT:MX1:AVERAGE:MX \: %5.1lf (avg)\n + GPRINT:O1:LAST:O \: %5.1lf (cur) + GPRINT:O1:MAX:O \: %5.1lf (max) + GPRINT:O1:MIN:O \: %5.1lf (min) + GPRINT:O1:AVERAGE:O \: %5.1lf (avg)\n + GPRINT:PTR1:LAST:PTR \: %5.1lf (cur) + GPRINT:PTR1:MAX:PTR \: %5.1lf (max) + GPRINT:PTR1:MIN:PTR \: %5.1lf (min) + GPRINT:PTR1:AVERAGE:PTR \: %5.1lf (avg)\n + GPRINT:SOA1:LAST:SOA \: %5.1lf (cur) + GPRINT:SOA1:MAX:SOA \: %5.1lf (max) + GPRINT:SOA1:MIN:SOA \: %5.1lf (min) + GPRINT:SOA1:AVERAGE:SOA \: %5.1lf (avg)\n + +[sendmail] + FNPATTERN sendmail.(.+).rrd + TITLE Sendmail Activity + YAXIS Messages + DEF:p@RRDIDX@IN=@RRDFN@:msgsfr:AVERAGE + DEF:p@RRDIDX@OUT=@RRDFN@:msgsto:AVERAGE + CDEF:p@RRDIDX@IN1=p@RRDIDX@IN,300,* + CDEF:p@RRDIDX@OUT1=p@RRDIDX@OUT,300,* + LINE1:p@RRDIDX@IN1#@COLOR@:@RRDPARAM@ IN + LINE2:p@RRDIDX@OUT1#@COLOR@:@RRDPARAM@ OUT + COMMENT:\n + GPRINT:p@RRDIDX@IN1:LAST:@RRDPARAM@ in %5.1lf (cur) + GPRINT:p@RRDIDX@IN1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@IN1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@IN1:AVERAGE: \: %5.1lf (avg) + COMMENT:\n + GPRINT:p@RRDIDX@OUT1:LAST:@RRDPARAM@ out %5.1lf (cur) + GPRINT:p@RRDIDX@OUT1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@OUT1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@OUT1:AVERAGE: \: %5.1lf (avg)\n + COMMENT:\n + +[sendmail1] + FNPATTERN sendmail.(.+).rrd + TITLE Sendmail Reject/Discards + YAXIS Messages + DEF:p@RRDIDX@IN=@RRDFN@:msgsrej:AVERAGE + DEF:p@RRDIDX@OUT=@RRDFN@:msgsdis:AVERAGE + CDEF:p@RRDIDX@IN1=p@RRDIDX@IN,300,* + CDEF:p@RRDIDX@OUT1=p@RRDIDX@OUT,300,* + LINE1:p@RRDIDX@IN1#@COLOR@:@RRDPARAM@ REJ + LINE2:p@RRDIDX@OUT1#@COLOR@:@RRDPARAM@ DIS + COMMENT:\n + GPRINT:p@RRDIDX@IN1:LAST:@RRDPARAM@ rej %5.1lf (cur) + GPRINT:p@RRDIDX@IN1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@IN1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@IN1:AVERAGE: \: %5.1lf (avg) + COMMENT:\n + GPRINT:p@RRDIDX@OUT1:LAST:@RRDPARAM@ dis %5.1lf (cur) + GPRINT:p@RRDIDX@OUT1:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@OUT1:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@OUT1:AVERAGE: \: %5.1lf (avg)\n + COMMENT:\n + +[mailq] + # This handles "mailq.rrd", "mailqin.rrd" and "mailqout.rrd" + FNPATTERN mailq(.+).rrd + TITLE Mail Queue Length + YAXIS Queue Length + DEF:mailq@RRDIDX@=@RRDFN@:mailq:AVERAGE + LINE2:mailq@RRDIDX@#@COLOR@:Queue Length @RRDPARAM@ + COMMENT:\n + GPRINT:mailq@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:mailq@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:mailq@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:mailq@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + + +[iishealth] + # Based on the "IIShealth.zip" tool from deadcat + FNPATTERN iishealth.(.+).rrd + TITLE IIS Utilization + YAXIS # + # Yes, they really do call it "realmempct". Cut'n'paste programming. + DEF:p@RRDIDX@=@RRDFN@:realmempct:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + -u 100 + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[temperature] + FNPATTERN temperature.(.+).rrd + TITLE Temperature + YAXIS Celsius + DEF:p@RRDIDX@=@RRDFN@:temperature:AVERAGE + LINE2:p@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:p@RRDIDX@:LAST: \: %5.1lf (cur) + GPRINT:p@RRDIDX@:MAX: \: %5.1lf (max) + GPRINT:p@RRDIDX@:MIN: \: %5.1lf (min) + GPRINT:p@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +# If you want your temperature graphs in Fahrenheit, +# comment out the [temperature] section above, and +# uncomment this definition. +# +#[temperature] +# FNPATTERN temperature.(.+).rrd +# TITLE Temperature +# YAXIS Fahrenheit +# DEF:p@RRDIDX@=@RRDFN@:temperature:AVERAGE +# CDEF:tempf@RRDIDX@=9,5,/,p@RRDIDX@,*,32,+ +# LINE2:tempf@RRDIDX@#@COLOR@:@RRDPARAM@ +# GPRINT:tempf@RRDIDX@:LAST: \: %5.1lf (cur) +# GPRINT:tempf@RRDIDX@:MAX: \: %5.1lf (max) +# GPRINT:tempf@RRDIDX@:MIN: \: %5.1lf (min) +# GPRINT:tempf@RRDIDX@:AVERAGE: \: %5.1lf (avg)\n + +[citrix] + TITLE Citrix Users + YAXIS # Users + DEF:u=citrix.rrd:users:AVERAGE + LINE2:u#FF0000:Users + COMMENT:\n + GPRINT:u:LAST: \: %5.1lf (cur) + GPRINT:u:MAX: \: %5.1lf (max) + GPRINT:u:MIN: \: %5.1lf (min) + GPRINT:u:AVERAGE: \: %5.1lf (avg)\n + +[bbgen] + TITLE bbgen Runtime + YAXIS Seconds + DEF:rt=bbgen.rrd:runtime:AVERAGE + AREA:rt#00CCCC:Run Time + COMMENT:\n + GPRINT:rt:LAST: \: %5.1lf (cur) + GPRINT:rt:MAX: \: %5.1lf (max) + GPRINT:rt:MIN: \: %5.1lf (min) + GPRINT:rt:AVERAGE: \: %5.1lf (avg)\n + +[bbtest] + TITLE bbtest Run Time + YAXIS Seconds + DEF:rt=bbtest.rrd:runtime:AVERAGE + AREA:rt#00CCCC:Run Time + COMMENT:\n + GPRINT:rt:LAST: \: %5.1lf (cur) + GPRINT:rt:MAX: \: %5.1lf (max) + GPRINT:rt:MIN: \: %5.1lf (min) + GPRINT:rt:AVERAGE: \: %5.1lf (avg)\n + +[bbproxy] + TITLE bbproxy Average Queue Time + YAXIS Seconds + DEF:rt=bbproxy.rrd:runtime:AVERAGE + LINE2:rt#00CCCC:Queue Time + COMMENT:\n + GPRINT:rt:LAST: \: %5.1lf (cur) + GPRINT:rt:MAX: \: %5.1lf (max) + GPRINT:rt:MIN: \: %5.1lf (min) + GPRINT:rt:AVERAGE: \: %5.1lf (avg)\n + +[hobbitd] + TITLE hobbitd Incoming Messages + YAXIS Messages + DEF:in=hobbitd.rrd:inmessages:AVERAGE + LINE2:in#00CCCC:Incoming messages + COMMENT:\n + GPRINT:in:LAST: \: %5.1lf (cur) + GPRINT:in:MAX: \: %5.1lf (max) + GPRINT:in:MIN: \: %5.1lf (min) + GPRINT:in:AVERAGE: \: %5.1lf (avg)\n + +[mrtg] + FNPATTERN mrtg.*\.(.+).rrd + TITLE Network Traffic (MRTG) + YAXIS Bits/second + DEF:inbytes@RRDIDX@=@RRDFN@:ds0:AVERAGE + CDEF:in@RRDIDX@=inbytes@RRDIDX@,8,* + DEF:outbytes@RRDIDX@=@RRDFN@:ds1:AVERAGE + CDEF:out@RRDIDX@=outbytes@RRDIDX@,8,* + LINE2:in@RRDIDX@#@COLOR@:@RRDPARAM@ inbound + GPRINT:in@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:in@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:in@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:in@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + LINE2:out@RRDIDX@#@COLOR@:@RRDPARAM@ outbound + GPRINT:out@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:out@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:out@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:out@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[mysqlslow] + DEF:slow=mysql.rrd:Slowqueries:AVERAGE + TITLE MySQL Slow Queries + YAXIS # + LINE2:slow#00CCCC:Slow Queries + COMMENT:\n + GPRINT:slow:LAST: \: %5.1lf (cur) + GPRINT:slow:MAX: \: %5.1lf (max) + GPRINT:slow:MIN: \: %5.1lf (min) + GPRINT:slow:AVERAGE: \: %5.1lf (avg)\n + +[mysqlthread] + DEF:threads=mysql.rrd:Threads:AVERAGE + TITLE MySQL Active Threads + YAXIS # + AREA:threads#00CCCC:Threads + COMMENT:\n + GPRINT:threads:LAST: \: %5.1lf (cur) + GPRINT:threads:MAX: \: %5.1lf (max) + GPRINT:threads:MIN: \: %5.1lf (min) + GPRINT:threads:AVERAGE: \: %5.1lf (avg)\n + +[ifstat] + FNPATTERN ifstat.(.+).rrd + TITLE Network Traffic + YAXIS Bits/second + DEF:inbytes@RRDIDX@=@RRDFN@:bytesReceived:AVERAGE + CDEF:in@RRDIDX@=inbytes@RRDIDX@,8,* + DEF:outbytes@RRDIDX@=@RRDFN@:bytesSent:AVERAGE + CDEF:out@RRDIDX@=outbytes@RRDIDX@,8,* + LINE2:in@RRDIDX@#@COLOR@:@RRDPARAM@ inbound + GPRINT:in@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:in@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:in@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:in@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + LINE2:out@RRDIDX@#@COLOR@:@RRDPARAM@ outbound + GPRINT:out@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:out@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:out@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:out@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[files] + FNPATTERN filesizes.(.+).rrd + TITLE File/Directory sizes + YAXIS KB + DEF:sz@RRDIDX@=@RRDFN@:size:AVERAGE + LINE2:sz@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:sz@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:sz@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:sz@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:sz@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[processes] + FNPATTERN processes.(.+).rrd + TITLE Process counts + YAXIS # + DEF:cnt@RRDIDX@=@RRDFN@:count:AVERAGE + LINE2:cnt@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:cnt@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:cnt@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:cnt@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:cnt@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[ports] + FNPATTERN ports.(.+).rrd + TITLE Network port counts + YAXIS # + DEF:cnt@RRDIDX@=@RRDFN@:count:AVERAGE + LINE2:cnt@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:cnt@RRDIDX@:LAST: \: %10.1lf (cur) + GPRINT:cnt@RRDIDX@:MAX: \: %10.1lf (max) + GPRINT:cnt@RRDIDX@:MIN: \: %10.1lf (min) + GPRINT:cnt@RRDIDX@:AVERAGE: \: %10.1lf (avg)\n + +[lines] + FNPATTERN lines.(.+).rrd + TITLE Logfile linecounts + YAXIS # + DEF:cnt@RRDIDX@=@RRDFN@:count:AVERAGE + LINE2:cnt@RRDIDX@#@COLOR@:@RRDPARAM@ + GPRINT:cnt@RRDIDX@:LAST: %6.1lf (cur) \: + GPRINT:cnt@RRDIDX@:MAX: %6.1lf (max) \: + GPRINT:cnt@RRDIDX@:MIN: %6.1lf (min) \: + GPRINT:cnt@RRDIDX@:AVERAGE: %6.1lf (avg)\n + + diff --git a/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg b/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg new file mode 100644 index 0000000..96e4681 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg @@ -0,0 +1,240 @@ +# +# The hobbitlaunch.cfg file is loaded by "hobbitlaunch". +# It controls which of the Hobbit modules to run, how often, and +# with which parameters, options and environment variables. +# + +# This is the main Hobbit daemon. This must be running on at least +# one server in your setup. If you are setting up a server to do +# just network tests or run bbproxy, it is OK to disable this (then +# you also need to remove the "NEEDS hobbitd" lines for the tasks +# you want to run). +[hobbitd] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD hobbitd --pidfile=$BBSERVERLOGS/hobbitd.pid --restart=$BBTMP/hobbitd.chk --checkpoint-file=$BBTMP/hobbitd.chk --checkpoint-interval=600 --log=$BBSERVERLOGS/hobbitd.log --admin-senders=127.0.0.1,$BBSERVERIP --store-clientlogs=!msgs + + +# "bbstatus" saves status-logs in text- and html-format, like the old Big Brother +# daemon does. Unless you are using add-ons that directly access the log-files, you +# will not need to run this module, and it is recommended that you keep it disabled +# since storing the raw logs on disk can cause a significant load on your server. + +[bbstatus] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=status --log=$BBSERVERLOGS/status.log hobbitd_filestore --status --html + + +# "bbhistory" keeps track of the status changes that happen, in a manner that is +# compatible with the Big Brother history logs. You probably do want to run this. + +[bbhistory] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=stachg --log=$BBSERVERLOGS/history.log hobbitd_history + + +# "hostdata" stores the Hobbit client messages on disk when some status for a host +# changes. This lets you access a lot of data collected from a host around the time +# when a problem occurred. However, it may use a significant amount of disk space +# if you have lots of Hobbit clients. +# Note: The --store-clientlogs option for the [hobbitd] provides control over +# which status-changes will cause a client message to be stored. +[hostdata] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=clichg --log=$BBSERVERLOGS/hostdata.log hobbitd_hostdata + + +# "bbdata" saves information sent using the BB "data" protocol, like the old Big Brother +# daemon does. Unless you are using add-ons that directly access the data-files, you +# will not need to run this module, and it is recommended that you keep it disabled +# since storing the raw data on disk can cause a significant load on your BB server. +# RRD graphs uses data-files, but since RRD is handled by the hobbitd_rrd module, you do +# not need to run the "bbdata" module to get RRD graphs. + +[bbdata] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=data --log=$BBSERVERLOGS/data.log hobbitd_filestore --data + + +# "bbnotes" saves web note-files, that are sent using the BB "notes" protocol. This is +# disabled by default; if you use the BB "notes" protocol, then you should enable this. + +[bbnotes] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=notes --log=$BBSERVERLOGS/notes.log hobbitd_filestore --notes + + +# "bbenadis" updates the files used to indicate that a host or test has been enabled or disabled. +# Unless you are running server side scripts that look at these files, you do not need this. + +[bbenadis] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=enadis --log=$BBSERVERLOGS/enadis.log hobbitd_filestore --enadis + + +# "bbpage" sends out alerts. Note that this module is NOT compatible with the old Big Brother +# system - it uses a different configuration file to determine how alerts get sent. If you want +# alerts to go out via pager, e-mail or some other means, then you must run this module. + +[bbpage] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=page --log=$BBSERVERLOGS/page.log hobbitd_alert --checkpoint-file=$BBTMP/alert.chk --checkpoint-interval=600 + + +# "rrdstatus" updates RRD files with information that arrives as "status" messages. +# If you want RRD graphs of your monitoring data, then you want to run this. + +[rrdstatus] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=status --log=$BBSERVERLOGS/rrd-status.log hobbitd_rrd --rrddir=$BBVAR/rrd + +# "rrddata" updates RRD files with information that arrives as "data" messages. +# If you want RRD graphs of your monitoring BB data, then you want to run this. + +[rrddata] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=data --log=$BBSERVERLOGS/rrd-data.log hobbitd_rrd --rrddir=$BBVAR/rrd + +# The client back-end module. You need this if you are running the Hobbit client on any system. +[clientdata] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=client --log=$BBSERVERLOGS/clientdata.log hobbitd_client + + +# "bbproxy" is the Hobbit proxy server that allows you to forward status messages +# from a protected network to your Hobbit server. It is not enabled by default, +# since it would conflict with the hobbitd task. +# If you need to run this, then disabled hobbitd and the hobbitd-modules +# above, then enable this. Make sure you enter the IP-address of your +# Hobbit server in the command-line, so that the proxy knows where to forward +# status messages. +[bbproxy] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD $BBHOME/bin/bbproxy --hobbitd --bbdisplay=YOUR.HOBBIT.SERVER.IP --report=$MACHINE.bbproxy --no-daemon --pidfile=$BBSERVERLOGS/bbproxy.pid + LOGFILE $BBSERVERLOGS/bbproxy.log + + +# "hobbitfetch" is used when you have clients that cannot connect to your Hobbit server, +# but the Hobbit server can connect to the client. Normally the clients will initiate +# a connection to the Hobbit server to deliver the data they collect, but this is +# forbidden in some firewall setups. By enabling the hobbitfetch task, hosts that have +# the "pulldata" tag in the bb-hosts file will be polled by hobbitfetch for their data. +# +# NOTE: On the clients you must enable the "msgcache" task, since this is what +# hobbitfetch is talking to. +[hobbitfetch] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD $BBHOME/bin/hobbitfetch --server=YOUR.HOBBIT.SERVER.IP --no-daemon --pidfile=$BBSERVERLOGS/hobbitfetch.pid + LOGFILE $BBSERVERLOGS/hobbitfetch.log + + +# "bbdisplay" runs the bbgen tool to generate the Hobbit webpages from the status information that +# has been received. Big Brother updated the webpages once every 5 minutes. The default here is to +# run it every minute for faster updates, but you can change it if you have a highly loaded server +# and dont need updates that often. + +[bbdisplay] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + GROUP generators + CMD bbgen $BBGENOPTS --report + LOGFILE $BBSERVERLOGS/bb-display.log + INTERVAL 1m + +# bbcombotest is an extension script for the Hobbit display server. It generates +# status messages that are combined from the status of one or more normal statuses. +# It is controlled via the bbcombotest.cfg file. +[bbcombotest] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD $BBHOME/bin/bbcombotest + LOGFILE $BBSERVERLOGS/bbcombotest.log + INTERVAL 5m + +# "bbnet" runs the bbtest-net tool to perform the network based tests - i.e. http, smtp, ssh, dns and +# all of the various network protocols we need to test. + +[bbnet] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD bbtest-net --report --ping --checkresponse + LOGFILE $BBSERVERLOGS/bb-network.log + INTERVAL 5m + + +# "bbretest" picks up the tests that the normal network test consider "failed", and re-does those +# tests more often. This enables Big Brother to pick up a recovered network service faster than +# if it were tested only by the "bbnet" task (which only runs every 5 minutes). So if you have +# servers with very high availability guarantees, running this task will make your availability +# reports look much better. + +[bbretest] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD $BBHOME/ext/bbretest-net.sh + LOGFILE $BBSERVERLOGS/bb-retest.log + INTERVAL 1m + + +# "hobbitclient" runs the Hobbit client. The client is installed automatically +# when you install a Hobbit server (presumably, you do want to monitor the +# Hobbit server ?), but there's no need to have two hobbitlaunch instances +# running at the same time. So we'll just run it from here. +# Note: If you are using another client package, you should disable this one. + +[hobbitclient] + ENVFILE /data/srv/hobbit/client/etc/hobbitclient.cfg + NEEDS hobbitd + CMD /data/srv/hobbit/client/bin/hobbitclient.sh + LOGFILE $BBSERVERLOGS/hobbitclient.log + INTERVAL 5m + +[storage] + + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD /data/srv/hobbit/server/ext/hobbitstorage.py + LOGFILE $BBSERVERLOGS/bb-storage.log + INTERVAL 5m +[notes] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD /data/srv/hobbit/server/ext/hbnotes.py + LOGFILE $BBSERVERLOGS/bb-notes.log + INTERVAL 5m +[orphan] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD /data/srv/hobbit/server/ext/hobbit-myth-orphan.sh + LOGFILE $BBSERVERLOGS/orphan.log + INTERVAL 5m + +[func] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD sudo /data/srv/hobbit/server/ext/hbfunc.py + LOGFILE $BBSERVERLOGS/hbfunc.log + INTERVAL 5m + +[memmyth] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD /data/srv/hobbit/server/ext/hobbit-mem-myth.sh + LOGFILE $BBSERVERLOGS/mythmem.log + INTERVAL 5m + +[mtc] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD /data/srv/hobbit/server/ext/hobbit_myth_data.py + LOGFILE $BBSERVERLOGS/mtc + INTERVAL 5m diff --git a/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.diff b/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.diff new file mode 100644 index 0000000..6239125 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.diff @@ -0,0 +1,40 @@ +--- hobbitlaunch.cfg.orig 2008-02-10 22:30:16.000000000 +0000 ++++ hobbitlaunch.cfg 2008-08-09 07:05:14.000000000 +0000 +@@ -204,3 +204,37 @@ + LOGFILE $BBSERVERLOGS/hobbitclient.log + INTERVAL 5m + ++[storage] ++ ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbitstorage.py ++ LOGFILE $BBSERVERLOGS/bb-storage.log ++ INTERVAL 5m ++[notes] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hbnotes.py ++ LOGFILE $BBSERVERLOGS/bb-notes.log ++ INTERVAL 5m ++[orphan] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbit-myth-orphan.sh ++ LOGFILE $BBSERVERLOGS/orphan.log ++ INTERVAL 5m ++ ++[func] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD sudo /data/srv/hobbit/server/ext/hbfunc.py ++ LOGFILE $BBSERVERLOGS/hbfunc.log ++ INTERVAL 5m ++ ++[memmyth] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbit-mem-myth.sh ++ LOGFILE $BBSERVERLOGS/mythmem.log ++ INTERVAL 5m ++ ++[mtc] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbit_myth_data.py ++ LOGFILE $BBSERVERLOGS/mtc ++ INTERVAL 5m diff --git a/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.orig b/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.orig new file mode 100644 index 0000000..93c2dd9 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.orig @@ -0,0 +1,206 @@ +# +# The hobbitlaunch.cfg file is loaded by "hobbitlaunch". +# It controls which of the Hobbit modules to run, how often, and +# with which parameters, options and environment variables. +# + +# This is the main Hobbit daemon. This must be running on at least +# one server in your setup. If you are setting up a server to do +# just network tests or run bbproxy, it is OK to disable this (then +# you also need to remove the "NEEDS hobbitd" lines for the tasks +# you want to run). +[hobbitd] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD hobbitd --pidfile=$BBSERVERLOGS/hobbitd.pid --restart=$BBTMP/hobbitd.chk --checkpoint-file=$BBTMP/hobbitd.chk --checkpoint-interval=600 --log=$BBSERVERLOGS/hobbitd.log --admin-senders=127.0.0.1,$BBSERVERIP --store-clientlogs=!msgs + + +# "bbstatus" saves status-logs in text- and html-format, like the old Big Brother +# daemon does. Unless you are using add-ons that directly access the log-files, you +# will not need to run this module, and it is recommended that you keep it disabled +# since storing the raw logs on disk can cause a significant load on your server. + +[bbstatus] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=status --log=$BBSERVERLOGS/status.log hobbitd_filestore --status --html + + +# "bbhistory" keeps track of the status changes that happen, in a manner that is +# compatible with the Big Brother history logs. You probably do want to run this. + +[bbhistory] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=stachg --log=$BBSERVERLOGS/history.log hobbitd_history + + +# "hostdata" stores the Hobbit client messages on disk when some status for a host +# changes. This lets you access a lot of data collected from a host around the time +# when a problem occurred. However, it may use a significant amount of disk space +# if you have lots of Hobbit clients. +# Note: The --store-clientlogs option for the [hobbitd] provides control over +# which status-changes will cause a client message to be stored. +[hostdata] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=clichg --log=$BBSERVERLOGS/hostdata.log hobbitd_hostdata + + +# "bbdata" saves information sent using the BB "data" protocol, like the old Big Brother +# daemon does. Unless you are using add-ons that directly access the data-files, you +# will not need to run this module, and it is recommended that you keep it disabled +# since storing the raw data on disk can cause a significant load on your BB server. +# RRD graphs uses data-files, but since RRD is handled by the hobbitd_rrd module, you do +# not need to run the "bbdata" module to get RRD graphs. + +[bbdata] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=data --log=$BBSERVERLOGS/data.log hobbitd_filestore --data + + +# "bbnotes" saves web note-files, that are sent using the BB "notes" protocol. This is +# disabled by default; if you use the BB "notes" protocol, then you should enable this. + +[bbnotes] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=notes --log=$BBSERVERLOGS/notes.log hobbitd_filestore --notes + + +# "bbenadis" updates the files used to indicate that a host or test has been enabled or disabled. +# Unless you are running server side scripts that look at these files, you do not need this. + +[bbenadis] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=enadis --log=$BBSERVERLOGS/enadis.log hobbitd_filestore --enadis + + +# "bbpage" sends out alerts. Note that this module is NOT compatible with the old Big Brother +# system - it uses a different configuration file to determine how alerts get sent. If you want +# alerts to go out via pager, e-mail or some other means, then you must run this module. + +[bbpage] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=page --log=$BBSERVERLOGS/page.log hobbitd_alert --checkpoint-file=$BBTMP/alert.chk --checkpoint-interval=600 + + +# "rrdstatus" updates RRD files with information that arrives as "status" messages. +# If you want RRD graphs of your monitoring data, then you want to run this. + +[rrdstatus] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=status --log=$BBSERVERLOGS/rrd-status.log hobbitd_rrd --rrddir=$BBVAR/rrd + +# "rrddata" updates RRD files with information that arrives as "data" messages. +# If you want RRD graphs of your monitoring BB data, then you want to run this. + +[rrddata] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=data --log=$BBSERVERLOGS/rrd-data.log hobbitd_rrd --rrddir=$BBVAR/rrd + +# The client back-end module. You need this if you are running the Hobbit client on any system. +[clientdata] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD hobbitd_channel --channel=client --log=$BBSERVERLOGS/clientdata.log hobbitd_client + + +# "bbproxy" is the Hobbit proxy server that allows you to forward status messages +# from a protected network to your Hobbit server. It is not enabled by default, +# since it would conflict with the hobbitd task. +# If you need to run this, then disabled hobbitd and the hobbitd-modules +# above, then enable this. Make sure you enter the IP-address of your +# Hobbit server in the command-line, so that the proxy knows where to forward +# status messages. +[bbproxy] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD $BBHOME/bin/bbproxy --hobbitd --bbdisplay=YOUR.HOBBIT.SERVER.IP --report=$MACHINE.bbproxy --no-daemon --pidfile=$BBSERVERLOGS/bbproxy.pid + LOGFILE $BBSERVERLOGS/bbproxy.log + + +# "hobbitfetch" is used when you have clients that cannot connect to your Hobbit server, +# but the Hobbit server can connect to the client. Normally the clients will initiate +# a connection to the Hobbit server to deliver the data they collect, but this is +# forbidden in some firewall setups. By enabling the hobbitfetch task, hosts that have +# the "pulldata" tag in the bb-hosts file will be polled by hobbitfetch for their data. +# +# NOTE: On the clients you must enable the "msgcache" task, since this is what +# hobbitfetch is talking to. +[hobbitfetch] + DISABLED + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + CMD $BBHOME/bin/hobbitfetch --server=YOUR.HOBBIT.SERVER.IP --no-daemon --pidfile=$BBSERVERLOGS/hobbitfetch.pid + LOGFILE $BBSERVERLOGS/hobbitfetch.log + + +# "bbdisplay" runs the bbgen tool to generate the Hobbit webpages from the status information that +# has been received. Big Brother updated the webpages once every 5 minutes. The default here is to +# run it every minute for faster updates, but you can change it if you have a highly loaded server +# and dont need updates that often. + +[bbdisplay] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + GROUP generators + CMD bbgen $BBGENOPTS --report + LOGFILE $BBSERVERLOGS/bb-display.log + INTERVAL 1m + +# bbcombotest is an extension script for the Hobbit display server. It generates +# status messages that are combined from the status of one or more normal statuses. +# It is controlled via the bbcombotest.cfg file. +[bbcombotest] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD $BBHOME/bin/bbcombotest + LOGFILE $BBSERVERLOGS/bbcombotest.log + INTERVAL 5m + +# "bbnet" runs the bbtest-net tool to perform the network based tests - i.e. http, smtp, ssh, dns and +# all of the various network protocols we need to test. + +[bbnet] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD bbtest-net --report --ping --checkresponse + LOGFILE $BBSERVERLOGS/bb-network.log + INTERVAL 5m + + +# "bbretest" picks up the tests that the normal network test consider "failed", and re-does those +# tests more often. This enables Big Brother to pick up a recovered network service faster than +# if it were tested only by the "bbnet" task (which only runs every 5 minutes). So if you have +# servers with very high availability guarantees, running this task will make your availability +# reports look much better. + +[bbretest] + ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg + NEEDS hobbitd + CMD $BBHOME/ext/bbretest-net.sh + LOGFILE $BBSERVERLOGS/bb-retest.log + INTERVAL 1m + + +# "hobbitclient" runs the Hobbit client. The client is installed automatically +# when you install a Hobbit server (presumably, you do want to monitor the +# Hobbit server ?), but there's no need to have two hobbitlaunch instances +# running at the same time. So we'll just run it from here. +# Note: If you are using another client package, you should disable this one. + +[hobbitclient] + ENVFILE /data/srv/hobbit/client/etc/hobbitclient.cfg + NEEDS hobbitd + CMD /data/srv/hobbit/client/bin/hobbitclient.sh + LOGFILE $BBSERVERLOGS/hobbitclient.log + INTERVAL 5m + diff --git a/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg b/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg new file mode 100644 index 0000000..42fc4c7 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg @@ -0,0 +1,226 @@ +# NB : Even though it might look like a shell-script, it is NOT. +# +BBSERVERROOT="/data/srv/hobbit" # Where Hobbit is installed - holds the server and bbvar sub-dirs. +BBSERVERLOGS="/var/log/hobbit" # Directory for server logs. The hobbit user must have write-access here. +HOBBITCLIENTHOME="/data/srv/hobbit/client" # BBHOME directory for the client + + +BBSERVERHOSTNAME="localhost" # The hostname of your server +BBSERVERIP="127.0.0.1" # The IP-address of your server. Use the real one, not 127.0.0.1 . +BBSERVEROS="linux" # The operating system of your server. linux,freebsd,solaris,hpux,aix,osf + +BBSERVERWWWNAME="localhost" # The name used for this hosts' webserver +BBSERVERWWWURL="/hobbit" # The top URL for the Hobbit webpages +BBSERVERCGIURL="/hobbit/hobbit-cgi" # The URL for the Hobbit CGI scripts. +BBSERVERSECURECGIURL="/hobbit/hobbit-seccgi" # The URL for the secured Hobbit CGI scripts. + +# BBLOCATION="foo" # The network location, makes bbtest-net test only hosts with NET:foo + # You only need to set this if you have multiple network test servers with + # a shared bb-hosts file. + +# Make sure the path includes the directories where you have fping, mail and (optionally) ntpdate installed, +# as well as the BBHOME/bin directory where all of the Hobbit programs reside. +PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/data/srv/hobbit/server/bin" + +# Some systems need extra settings e.g. to locate run-time libraries. +# You can add these extra settings here: + + + +##### Normally you do not need to modify anything below this point ##### + +# General settings +BBPORT="1984" # Portnumber where hobbitd/bbd listens +BBDISP="$BBSERVERIP" # IP of a single hobbit/bbd server +BBDISPLAYS="" # IP of multiple hobbit/bbd servers. If used, BBDISP must be 0.0.0.0 +FQDN="TRUE" # Use fully-qualified hostnames internally. Keep it TRUE unless you know better. +BBGHOSTS="1" # How to handle status messages from unknown hosts. + # 0=accept message, 1=discard message, 2=discard message and log the event +BBLOGSTATUS="DYNAMIC" # Are HTML status logs statically or dynamically generated? + # Use DYNAMIC with Hobbit, unless you run hobbitd_filestore --status --html + +PINGCOLUMN="conn" # Column where the ping-test reports results. +INFOCOLUMN="info" # Column where the info-pages are reported. +TRENDSCOLUMN="trends" # Column where the RRD graphs are reported. + +BBMAXMSGSPERCOMBO="100" # How many individual messages to combine in a combo-message. 0=unlimited. +BBSLEEPBETWEENMSGS="0" # Delay between sending each combo message, in milliseconds. + + +# Specific to this host +BBOSTYPE="$BBSERVEROS" # Hosttype (operating system). Not used by server-side, but clients use this. +MACHINEDOTS="$BBSERVERHOSTNAME" # This systems hostname +MACHINEADDR="$BBSERVERIP" # This systems IP-address + +# URL's generated/used by bbgen +BBWEBHOST="http://$BBSERVERWWWNAME" # Just the host part of the URL - http://www.foo.com +BBWEBHOSTURL="$BBWEBHOST$BBSERVERWWWURL" # Prefix for all static Hobbit pages - http://www.foo.com/bb +BBWEBHTMLLOGS="$BBWEBHOSTURL/html" # Prefix for the Hobbit HTML logs (only if BBLOGSTATUS=STATIC) +BBWEB="$BBSERVERWWWURL" # Hobbit URL prefix without the host part +BBSKIN="$BBSERVERWWWURL/gifs" # Hobbit URL prefix for the GIF files +BBHELPSKIN="$BBSERVERWWWURL/help" # Hobbit URL prefix for the online help files. +BBNOTESSKIN="$BBSERVERWWWURL/notes" # Hobbit URL prefix for the online notes-files. +BBMENUSKIN="$BBSERVERWWWURL/menu" # Hobbit URL prefix for the webpage menu files. +BBREPURL="$BBSERVERWWWURL/rep" # Hobbit URL prefix for the Hobbit availability reports +BBSNAPURL="$BBSERVERWWWURL/snap" # Hobbit URL prefix for the Hobbit snapshots +BBWAP="$BBSERVERWWWURL/wml" # Hobbit URL prefix for the WAP/WML files. +CGIBINURL="$BBSERVERCGIURL" # URL prefix for the Hobbit CGI-scripts - /cgi-bin +SECURECGIBINURL="$BBSERVERSECURECGIURL" # URL prefix for the secured Hobbit CGI-scripts - /cgi-secure + +# Locations of system-wide files and directories +BBHOME="/data/srv/hobbit/server" # The Hobbit server directory, where programs and configurations go. +BBTMP="$BBHOME/tmp" # Directory used for temporary files. +BBHOSTS="$BBHOME/etc/bb-hosts" # The bb-hosts file +BB="$BBHOME/bin/bb" # The 'bb' client program +BBGEN="$BBHOME/bin/bbgen" # The bbgen program + +# Server specific directories +BBVAR="/data/srv/hobbit/var" # The bbvar directory holds all monitoring data +BBACKS="$BBVAR/acks" # Acknowledge event info stored here (hobbitd_alert) +BBDATA="$BBVAR/data" # Data files go here (hobbitd_filestore --data) +BBDISABLED="$BBVAR/disabled" # Enabled/disabled flags are stored here (hobbitd_filestore --enadis) +BBHIST="$BBVAR/hist" # History logs are stored here (hobbitd_history) +BBHISTLOGS="$BBVAR/histlogs" # Historical detail status-loge are stored here (hobbitd_history) +BBLOGS="$BBVAR/logs" # Status logs go here (hobbitd_filestore --status). Not needed by Hobbit. +BBWWW="$BBHOME/www" # The directory for Hobbit webpage files. +BBHTML="$BBWWW/html" # HTML status logs go here (hobbitd_filestore --status --html) +BBNOTES="$BBWWW/notes" # For notes-files (hobbitd_filestore --notes) +BBREP="$BBWWW/rep" # Top-level directory for Hobbit reports. +BBSNAP="$BBWWW/snap" # Top-level directory for Hobbit snapshots. + +# For the hobbitd_history module +BBALLHISTLOG="TRUE" # Save a common log of all events (used for the bb2 webpage) +BBHOSTHISTLOG="TRUE" # Save a log of all events for a host (not used by any tool currently) +SAVESTATUSLOG="TRUE" # Save the detailed status log each time the status changes. + +# For the hobbitd_alert module +MAILC="mail" # Command used to send an e-mail with no subject +MAIL="$MAILC -s" # Command used to send an e-mail with a subject +SVCCODES="disk:100,cpu:200,procs:300,svcs:350,msgs:400,conn:500,http:600,dns:800,smtp:725,telnet:723,ftp:721,pop:810,pop3:810,pop-3:810,ssh:722,imap:843,ssh1:722,ssh2:722,imap2:843,imap3:843,imap4:843,pop2:809,pop-2:809,nntp:819,test:901" +ALERTCOLORS="red,yellow,purple" # Colors that may trigger an alert message +OKCOLORS="green,blue,clear" # Colors that may trigger a recovery message +ALERTREPEAT="30" # The default interval between repeated alert-messages (in minutes) + +# For bbtest-net +CONNTEST="TRUE" # Should we 'ping' hosts ? +IPTEST_2_CLEAR_ON_FAILED_CONN="TRUE" # If TRUE, then failing network tests go CLEAR if conn-test fails. +NONETPAGE="" # Network tests that go YELLOW upon failure +FPING="hobbitping" # Path and options for the ping program. +NTPDATE="ntpdate" # Path to the 'ntpdate' program +TRACEROUTE="traceroute" # How to do traceroute on failing ping tests. Requires "trace" in bb-hosts. +BBROUTERTEXT="router" # What to call a failing intermediate network device. +NETFAILTEXT="not OK" # Text indicating a network test failed + + +# Settings for the RRD graphs + +# Top level directory for the RRD files +BBRRDS="$BBVAR/rrd" + +# Size of the generated graph images +RRDHEIGHT="120" +RRDWIDTH="576" # The RRD's contain 576 data points, so this is a good value +NCV_storage="*:GAUGE" +NCV_memmbe="*:GAUGE" +NCV_memmfe="*:GAUGE" +# TEST2RRD defines the status- and data-messages you want to collect RRD data +# about. You will normally not need to modify this, unless you have added a +# script to pick up RRD data from custom tests (the hobbitd_larrd --extra-script +# and --extra-tests options). +# Note that network tests defined in the bb-services file are automatically +# included. +# The format here is "COLUMN=RRDSERVICE". If you leave out the "=RRDSERVICE" +# part, it is assumed to be the same as the COLUMN value. +# +# This is also used by the bb-hostsvc.cgi script to determine if the detailed +# status view of a test should include a graph. +TEST2RRD="cpu=la,disk,inode,qtree,memory,$PINGCOLUMN=tcp,http=tcp,dns=tcp,dig=tcp,time=ntpstat,vmstat,iostat,netstat,temperature,apache,bind,sendmail,mailq,nmailq=mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,files,procs=processes,ports,clock,lines,storage=ncv,memmbe=ncv,memmfe=ncv" + +# This defines which RRD files to include on the "trends" column webpage, +# and the order in which they appear. +GRAPHS="la,disk,inode,qtree,files,processes,memory,users,vmstat,iostat,tcp.http,tcp,ncv,netstat,ifstat,mrtg::1,ports,temperature,ntpstat,apache,bind,sendmail,mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,clock,lines,storage,memmbe,memmfe" + +# These two settings can be used to restrict what filesystems are being +# tracked (i.e. have their utilisation graphed) by Hobbit. +# NORRDDISKS="" # Filesystems that will NOT be tracked +# RRDDISKS="" # Only track these filesystems + + +############################################################ +# These determine some parts of how bbgen generates webpages +############################################################ +BBGENOPTS="--recentgifs --subpagecolumns=2" # Standard options for bbgen. +SUMMARY_SET_BKG="FALSE" # Do summaries affect the background color of the BB webpage ? +BBMKBB2EXT="eventlog.sh acklog.sh" # What extensions to have on the BB2 page. +DOTHEIGHT="16" # Height (in pixels) of the color GIF's +DOTWIDTH="16" # Width (in pixels) of the color GIF's +COLUMNDOCURL="$CGIBINURL/hobbitcolumn.sh?%s" # URL formatting string for column-links + +# HTML content +HTMLCONTENTTYPE="text/html" # You can add charset options here. + +# Fonts and texts +HOBBITLOGO="" # HTML inserted on all header pages at top-left corner. +MKBBLOCAL="<B><I>Pages Hosted Locally</I></B>" +MKBBREMOTE="<B><I>Remote Status Display</I></B>" +MKBBSUBLOCAL="<B><I>Subpages Hosted Locally</I></B>" +MKBBACKFONT="COLOR=\"#33ebf4\" SIZE=\"-1\"" # Size and color of the 'Current acknowledgement...' text in the html log. +MKBBCOLFONT="COLOR=\"#87a9e5\" SIZE=\"-1\"" # Size and color of the column headings text +MKBBROWFONT="SIZE=\"+1\" COLOR=\"#FFFFCC\" FACE=\"Tahoma, Arial, Helvetica\"" # Size,color,font of text in each row (hostname) +MKBBTITLE="COLOR=\"#FFFFF0\" SIZE=\"+1\"" # Size and color of the BB titles (the old "ivory" is invalid HTML) +BBDATEFORMAT="%a %b %d %H:%M:%S %Y" # Date format +BBRSSTITLE="Hobbit Alerts" # Title for the RSS and WML outputs. +ACKUNTILMSG="Next update at: %H:%M %Y-%m-%d" # strftime format for the acknowledgement status display. + +# For WML output +WMLMAXCHARS="1500" # Max number of bytes in a WAP message + +# For BB reports +BBREPWARN="97" # Default availability causing yellow status on availability report. +BBREPGREEN="99.995" # Default availability causing green status on availability report. +BBGENREPOPTS="$BBGENOPTS" # bbgen(1) options used when generating availability reports. +BBREPEXT="" # What extensions to run on report pages. + +# For BB snapshots +BBGENSNAPOPTS="$BBGENOPTS" # bbgen(1) options used when generating snapshots. + +# For the bb-hist CGI +BBHISTEXT="" # What extensions to run on history pages. + + +# The following defines a bunch of commands that BB extensions expect to be present. +# Hobbit does not use them, but they are provided here so if you use BB extension +# scripts, then they will hopefully run without having to do a lot of tweaking. + +UPTIME="" +AWK="/bin/awk" +CAT="/bin/cat" +CP="/bin/cp" +CUT="/bin/cut" +DATE="/bin/date" +EGREP="/bin/egrep" +EXPR="/usr/bin/expr" +FIND="/usr/bin/find" +GREP="/bin/grep" +HEAD="/usr/bin/head" +ID="/usr/bin/id" +LN="/bin/ln" +LS="/bin/ls" +MV="/bin/mv" +RM="/bin/rm" +SED="/bin/sed" +SORT="/usr/bin/sort" +TAIL="/usr/bin/tail" +TOUCH="/bin/touch" +TR="/bin/tr" +UNIQ="/usr/bin/uniq" +WHO="/usr/bin/who" +TOP="" +WC="/usr/bin/wc -l" +WCC="/usr/bin/wc" +# DF,DFCMD and PS are for compatibility only, NOT USED by the Hobbit client +DF="/bin/df -Pk" +DFCMD="/bin/df -Pk" +PS="ps ax" + +MAXLINE="32768" diff --git a/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.diff b/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.diff new file mode 100644 index 0000000..7c829fe --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.diff @@ -0,0 +1,45 @@ +--- hobbitserver.cfg.orig 2008-01-08 15:25:34.000000000 +0000 ++++ hobbitserver.cfg 2008-01-08 16:22:56.000000000 +0000 +@@ -105,7 +105,7 @@ + CONNTEST="TRUE" # Should we 'ping' hosts ? + IPTEST_2_CLEAR_ON_FAILED_CONN="TRUE" # If TRUE, then failing network tests go CLEAR if conn-test fails. + NONETPAGE="" # Network tests that go YELLOW upon failure +-FPING="/usr/sbin/fping" # Path and options for the ping program. ++FPING="hobbitping" # Path and options for the ping program. + NTPDATE="ntpdate" # Path to the 'ntpdate' program + TRACEROUTE="traceroute" # How to do traceroute on failing ping tests. Requires "trace" in bb-hosts. + BBROUTERTEXT="router" # What to call a failing intermediate network device. +@@ -120,7 +120,9 @@ + # Size of the generated graph images + RRDHEIGHT="120" + RRDWIDTH="576" # The RRD's contain 576 data points, so this is a good value +- ++NCV_storage="*:GAUGE" ++NCV_memmbe="*:GAUGE" ++NCV_memmfe="*:GAUGE" + # TEST2RRD defines the status- and data-messages you want to collect RRD data + # about. You will normally not need to modify this, unless you have added a + # script to pick up RRD data from custom tests (the hobbitd_larrd --extra-script +@@ -132,11 +134,11 @@ + # + # This is also used by the bb-hostsvc.cgi script to determine if the detailed + # status view of a test should include a graph. +-TEST2RRD="cpu=la,disk,inode,qtree,memory,$PINGCOLUMN=tcp,http=tcp,dns=tcp,dig=tcp,time=ntpstat,vmstat,iostat,netstat,temperature,apache,bind,sendmail,mailq,nmailq=mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,files,procs=processes,ports,clock,lines" ++TEST2RRD="cpu=la,disk,inode,qtree,memory,$PINGCOLUMN=tcp,http=tcp,dns=tcp,dig=tcp,time=ntpstat,vmstat,iostat,netstat,temperature,apache,bind,sendmail,mailq,nmailq=mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,files,procs=processes,ports,clock,lines,storage=ncv,memmbe=ncv,memmfe=ncv" + + # This defines which RRD files to include on the "trends" column webpage, + # and the order in which they appear. +-GRAPHS="la,disk,inode,qtree,files,processes,memory,users,vmstat,iostat,tcp.http,tcp,ncv,netstat,ifstat,mrtg::1,ports,temperature,ntpstat,apache,bind,sendmail,mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,clock,lines" ++GRAPHS="la,disk,inode,qtree,files,processes,memory,users,vmstat,iostat,tcp.http,tcp,ncv,netstat,ifstat,mrtg::1,ports,temperature,ntpstat,apache,bind,sendmail,mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,clock,lines,storage,memmbe,memmfe" + + # These two settings can be used to restrict what filesystems are being + # tracked (i.e. have their utilisation graphed) by Hobbit. +@@ -158,7 +160,7 @@ + HTMLCONTENTTYPE="text/html" # You can add charset options here. + + # Fonts and texts +-HOBBITLOGO="Hobbit" # HTML inserted on all header pages at top-left corner. ++HOBBITLOGO="" # HTML inserted on all header pages at top-left corner. + MKBBLOCAL="<B><I>Pages Hosted Locally</I></B>" + MKBBREMOTE="<B><I>Remote Status Display</I></B>" + MKBBSUBLOCAL="<B><I>Subpages Hosted Locally</I></B>" diff --git a/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.orig b/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.orig new file mode 100644 index 0000000..2ba56f5 --- /dev/null +++ b/abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.orig @@ -0,0 +1,224 @@ +# NB : Even though it might look like a shell-script, it is NOT. +# +BBSERVERROOT="/data/srv/hobbit" # Where Hobbit is installed - holds the server and bbvar sub-dirs. +BBSERVERLOGS="/var/log/hobbit" # Directory for server logs. The hobbit user must have write-access here. +HOBBITCLIENTHOME="/data/srv/hobbit/client" # BBHOME directory for the client + + +BBSERVERHOSTNAME="localhost" # The hostname of your server +BBSERVERIP="127.0.0.1" # The IP-address of your server. Use the real one, not 127.0.0.1 . +BBSERVEROS="linux" # The operating system of your server. linux,freebsd,solaris,hpux,aix,osf + +BBSERVERWWWNAME="localhost" # The name used for this hosts' webserver +BBSERVERWWWURL="/hobbit" # The top URL for the Hobbit webpages +BBSERVERCGIURL="/hobbit/hobbit-cgi" # The URL for the Hobbit CGI scripts. +BBSERVERSECURECGIURL="/hobbit/hobbit-seccgi" # The URL for the secured Hobbit CGI scripts. + +# BBLOCATION="foo" # The network location, makes bbtest-net test only hosts with NET:foo + # You only need to set this if you have multiple network test servers with + # a shared bb-hosts file. + +# Make sure the path includes the directories where you have fping, mail and (optionally) ntpdate installed, +# as well as the BBHOME/bin directory where all of the Hobbit programs reside. +PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/data/srv/hobbit/server/bin" + +# Some systems need extra settings e.g. to locate run-time libraries. +# You can add these extra settings here: + + + +##### Normally you do not need to modify anything below this point ##### + +# General settings +BBPORT="1984" # Portnumber where hobbitd/bbd listens +BBDISP="$BBSERVERIP" # IP of a single hobbit/bbd server +BBDISPLAYS="" # IP of multiple hobbit/bbd servers. If used, BBDISP must be 0.0.0.0 +FQDN="TRUE" # Use fully-qualified hostnames internally. Keep it TRUE unless you know better. +BBGHOSTS="1" # How to handle status messages from unknown hosts. + # 0=accept message, 1=discard message, 2=discard message and log the event +BBLOGSTATUS="DYNAMIC" # Are HTML status logs statically or dynamically generated? + # Use DYNAMIC with Hobbit, unless you run hobbitd_filestore --status --html + +PINGCOLUMN="conn" # Column where the ping-test reports results. +INFOCOLUMN="info" # Column where the info-pages are reported. +TRENDSCOLUMN="trends" # Column where the RRD graphs are reported. + +BBMAXMSGSPERCOMBO="100" # How many individual messages to combine in a combo-message. 0=unlimited. +BBSLEEPBETWEENMSGS="0" # Delay between sending each combo message, in milliseconds. + + +# Specific to this host +BBOSTYPE="$BBSERVEROS" # Hosttype (operating system). Not used by server-side, but clients use this. +MACHINEDOTS="$BBSERVERHOSTNAME" # This systems hostname +MACHINEADDR="$BBSERVERIP" # This systems IP-address + +# URL's generated/used by bbgen +BBWEBHOST="http://$BBSERVERWWWNAME" # Just the host part of the URL - http://www.foo.com +BBWEBHOSTURL="$BBWEBHOST$BBSERVERWWWURL" # Prefix for all static Hobbit pages - http://www.foo.com/bb +BBWEBHTMLLOGS="$BBWEBHOSTURL/html" # Prefix for the Hobbit HTML logs (only if BBLOGSTATUS=STATIC) +BBWEB="$BBSERVERWWWURL" # Hobbit URL prefix without the host part +BBSKIN="$BBSERVERWWWURL/gifs" # Hobbit URL prefix for the GIF files +BBHELPSKIN="$BBSERVERWWWURL/help" # Hobbit URL prefix for the online help files. +BBNOTESSKIN="$BBSERVERWWWURL/notes" # Hobbit URL prefix for the online notes-files. +BBMENUSKIN="$BBSERVERWWWURL/menu" # Hobbit URL prefix for the webpage menu files. +BBREPURL="$BBSERVERWWWURL/rep" # Hobbit URL prefix for the Hobbit availability reports +BBSNAPURL="$BBSERVERWWWURL/snap" # Hobbit URL prefix for the Hobbit snapshots +BBWAP="$BBSERVERWWWURL/wml" # Hobbit URL prefix for the WAP/WML files. +CGIBINURL="$BBSERVERCGIURL" # URL prefix for the Hobbit CGI-scripts - /cgi-bin +SECURECGIBINURL="$BBSERVERSECURECGIURL" # URL prefix for the secured Hobbit CGI-scripts - /cgi-secure + +# Locations of system-wide files and directories +BBHOME="/data/srv/hobbit/server" # The Hobbit server directory, where programs and configurations go. +BBTMP="$BBHOME/tmp" # Directory used for temporary files. +BBHOSTS="$BBHOME/etc/bb-hosts" # The bb-hosts file +BB="$BBHOME/bin/bb" # The 'bb' client program +BBGEN="$BBHOME/bin/bbgen" # The bbgen program + +# Server specific directories +BBVAR="/data/srv/hobbit/var" # The bbvar directory holds all monitoring data +BBACKS="$BBVAR/acks" # Acknowledge event info stored here (hobbitd_alert) +BBDATA="$BBVAR/data" # Data files go here (hobbitd_filestore --data) +BBDISABLED="$BBVAR/disabled" # Enabled/disabled flags are stored here (hobbitd_filestore --enadis) +BBHIST="$BBVAR/hist" # History logs are stored here (hobbitd_history) +BBHISTLOGS="$BBVAR/histlogs" # Historical detail status-loge are stored here (hobbitd_history) +BBLOGS="$BBVAR/logs" # Status logs go here (hobbitd_filestore --status). Not needed by Hobbit. +BBWWW="$BBHOME/www" # The directory for Hobbit webpage files. +BBHTML="$BBWWW/html" # HTML status logs go here (hobbitd_filestore --status --html) +BBNOTES="$BBWWW/notes" # For notes-files (hobbitd_filestore --notes) +BBREP="$BBWWW/rep" # Top-level directory for Hobbit reports. +BBSNAP="$BBWWW/snap" # Top-level directory for Hobbit snapshots. + +# For the hobbitd_history module +BBALLHISTLOG="TRUE" # Save a common log of all events (used for the bb2 webpage) +BBHOSTHISTLOG="TRUE" # Save a log of all events for a host (not used by any tool currently) +SAVESTATUSLOG="TRUE" # Save the detailed status log each time the status changes. + +# For the hobbitd_alert module +MAILC="mail" # Command used to send an e-mail with no subject +MAIL="$MAILC -s" # Command used to send an e-mail with a subject +SVCCODES="disk:100,cpu:200,procs:300,svcs:350,msgs:400,conn:500,http:600,dns:800,smtp:725,telnet:723,ftp:721,pop:810,pop3:810,pop-3:810,ssh:722,imap:843,ssh1:722,ssh2:722,imap2:843,imap3:843,imap4:843,pop2:809,pop-2:809,nntp:819,test:901" +ALERTCOLORS="red,yellow,purple" # Colors that may trigger an alert message +OKCOLORS="green,blue,clear" # Colors that may trigger a recovery message +ALERTREPEAT="30" # The default interval between repeated alert-messages (in minutes) + +# For bbtest-net +CONNTEST="TRUE" # Should we 'ping' hosts ? +IPTEST_2_CLEAR_ON_FAILED_CONN="TRUE" # If TRUE, then failing network tests go CLEAR if conn-test fails. +NONETPAGE="" # Network tests that go YELLOW upon failure +FPING="/usr/sbin/fping" # Path and options for the ping program. +NTPDATE="ntpdate" # Path to the 'ntpdate' program +TRACEROUTE="traceroute" # How to do traceroute on failing ping tests. Requires "trace" in bb-hosts. +BBROUTERTEXT="router" # What to call a failing intermediate network device. +NETFAILTEXT="not OK" # Text indicating a network test failed + + +# Settings for the RRD graphs + +# Top level directory for the RRD files +BBRRDS="$BBVAR/rrd" + +# Size of the generated graph images +RRDHEIGHT="120" +RRDWIDTH="576" # The RRD's contain 576 data points, so this is a good value + +# TEST2RRD defines the status- and data-messages you want to collect RRD data +# about. You will normally not need to modify this, unless you have added a +# script to pick up RRD data from custom tests (the hobbitd_larrd --extra-script +# and --extra-tests options). +# Note that network tests defined in the bb-services file are automatically +# included. +# The format here is "COLUMN=RRDSERVICE". If you leave out the "=RRDSERVICE" +# part, it is assumed to be the same as the COLUMN value. +# +# This is also used by the bb-hostsvc.cgi script to determine if the detailed +# status view of a test should include a graph. +TEST2RRD="cpu=la,disk,inode,qtree,memory,$PINGCOLUMN=tcp,http=tcp,dns=tcp,dig=tcp,time=ntpstat,vmstat,iostat,netstat,temperature,apache,bind,sendmail,mailq,nmailq=mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,files,procs=processes,ports,clock,lines" + +# This defines which RRD files to include on the "trends" column webpage, +# and the order in which they appear. +GRAPHS="la,disk,inode,qtree,files,processes,memory,users,vmstat,iostat,tcp.http,tcp,ncv,netstat,ifstat,mrtg::1,ports,temperature,ntpstat,apache,bind,sendmail,mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,clock,lines" + +# These two settings can be used to restrict what filesystems are being +# tracked (i.e. have their utilisation graphed) by Hobbit. +# NORRDDISKS="" # Filesystems that will NOT be tracked +# RRDDISKS="" # Only track these filesystems + + +############################################################ +# These determine some parts of how bbgen generates webpages +############################################################ +BBGENOPTS="--recentgifs --subpagecolumns=2" # Standard options for bbgen. +SUMMARY_SET_BKG="FALSE" # Do summaries affect the background color of the BB webpage ? +BBMKBB2EXT="eventlog.sh acklog.sh" # What extensions to have on the BB2 page. +DOTHEIGHT="16" # Height (in pixels) of the color GIF's +DOTWIDTH="16" # Width (in pixels) of the color GIF's +COLUMNDOCURL="$CGIBINURL/hobbitcolumn.sh?%s" # URL formatting string for column-links + +# HTML content +HTMLCONTENTTYPE="text/html" # You can add charset options here. + +# Fonts and texts +HOBBITLOGO="Hobbit" # HTML inserted on all header pages at top-left corner. +MKBBLOCAL="<B><I>Pages Hosted Locally</I></B>" +MKBBREMOTE="<B><I>Remote Status Display</I></B>" +MKBBSUBLOCAL="<B><I>Subpages Hosted Locally</I></B>" +MKBBACKFONT="COLOR=\"#33ebf4\" SIZE=\"-1\"" # Size and color of the 'Current acknowledgement...' text in the html log. +MKBBCOLFONT="COLOR=\"#87a9e5\" SIZE=\"-1\"" # Size and color of the column headings text +MKBBROWFONT="SIZE=\"+1\" COLOR=\"#FFFFCC\" FACE=\"Tahoma, Arial, Helvetica\"" # Size,color,font of text in each row (hostname) +MKBBTITLE="COLOR=\"#FFFFF0\" SIZE=\"+1\"" # Size and color of the BB titles (the old "ivory" is invalid HTML) +BBDATEFORMAT="%a %b %d %H:%M:%S %Y" # Date format +BBRSSTITLE="Hobbit Alerts" # Title for the RSS and WML outputs. +ACKUNTILMSG="Next update at: %H:%M %Y-%m-%d" # strftime format for the acknowledgement status display. + +# For WML output +WMLMAXCHARS="1500" # Max number of bytes in a WAP message + +# For BB reports +BBREPWARN="97" # Default availability causing yellow status on availability report. +BBREPGREEN="99.995" # Default availability causing green status on availability report. +BBGENREPOPTS="$BBGENOPTS" # bbgen(1) options used when generating availability reports. +BBREPEXT="" # What extensions to run on report pages. + +# For BB snapshots +BBGENSNAPOPTS="$BBGENOPTS" # bbgen(1) options used when generating snapshots. + +# For the bb-hist CGI +BBHISTEXT="" # What extensions to run on history pages. + + +# The following defines a bunch of commands that BB extensions expect to be present. +# Hobbit does not use them, but they are provided here so if you use BB extension +# scripts, then they will hopefully run without having to do a lot of tweaking. + +UPTIME="" +AWK="/bin/awk" +CAT="/bin/cat" +CP="/bin/cp" +CUT="/bin/cut" +DATE="/bin/date" +EGREP="/bin/egrep" +EXPR="/usr/bin/expr" +FIND="/usr/bin/find" +GREP="/bin/grep" +HEAD="/usr/bin/head" +ID="/usr/bin/id" +LN="/bin/ln" +LS="/bin/ls" +MV="/bin/mv" +RM="/bin/rm" +SED="/bin/sed" +SORT="/usr/bin/sort" +TAIL="/usr/bin/tail" +TOUCH="/bin/touch" +TR="/bin/tr" +UNIQ="/usr/bin/uniq" +WHO="/usr/bin/who" +TOP="" +WC="/usr/bin/wc -l" +WCC="/usr/bin/wc" +# DF,DFCMD and PS are for compatibility only, NOT USED by the Hobbit client +DF="/bin/df -Pk" +DFCMD="/bin/df -Pk" +PS="ps ax" + +MAXLINE="32768" diff --git a/abs/mv-core/hobbitmon/hbfunc.py b/abs/mv-core/hobbitmon/hbfunc.py new file mode 100755 index 0000000..9cb66df --- /dev/null +++ b/abs/mv-core/hobbitmon/hbfunc.py @@ -0,0 +1,167 @@ +#!/usr/bin/python +#checks that the MBE can connect to the minions + +# =============================================== +import sys +import os +import string +import time +import func.overlord.client as fc +BBLINE = '' +BBCOLOR="green" +DATE = time.strftime("%a %b %d %H:%M:%S %Z %Y", time.localtime(time.time())) +if os.environ['BB']: + #print os.environ['BB'] + BB=os.environ['BB'] +if os.environ['BBDISP']: + #print os.environ['BBDISP'] + BBDISP=os.environ['BBDISP'] +if os.environ['MACHINE']: + #print os.environ['MACHINE'] + MACHINE=os.environ['MACHINE'] + + + +def readbb(): + global hostlist + global mythtype + + try: + infile = open('/data/srv/hobbit/etc/bb-hosts', 'r') + except(IOError), e: + print "couldn't open bb-hosts file" + sys.exit(1) + else: + bbhostlist = infile.readlines() + infile.close() + for line in bbhostlist: + cline=line.strip() + if not cline.startswith("#") and cline != '' and cline.find("bbd") == -1 and cline.find("func") != -1 : + host=cline.split("#") + host=host[0].split() + hostlist.append(host[1].strip()) + infile.close() + try: + infile = open('/usr/local/share/mythtv/.releasetype') + mythtype= infile.readline() + infile.close() + except(IOError), e: + print "couldn't open mythfile " + mythtype='unkown' + +def find_local_myth_version(): + global mythtype + local_pkg_name="not_found" + pkgname="mythtv" + pkgname+=mythtype + cmd="/usr/bin/pacman -Q %s " %pkgname + result = os.popen2(cmd)[1].readlines() + for list in result: + l=list.strip() + if l.startswith('mythtv') : + local_pkg_name=l.strip() + break + return local_pkg_name + + +def mythversion_check(currentclient,local_myth_version): + global mythtype + pkgname="mythtv" + pkgname+=mythtype + remote_pkg_name="remote_pkg_not_found" + client = (fc.Client( currentclient )) + results=client.pacman.pkgversion(pkgname) + #print currentclient + #print local_myth_version + #print results[currentclient][1] + try: + for pkg in results[currentclient][1] : + p=pkg.strip() + if p.startswith('mythtv'): + remote_pkg_name=p + break + if (remote_pkg_name != local_myth_version): + BBLINE="Myth version MBE: %s does not match %s %s \n " %(local_myth_version,currentclient,remote_pkg_name) + LINE = "status " + currentclient + ".myth_version yellow" + " " + DATE + " " + BBLINE + + if (remote_pkg_name == local_myth_version): + BBLINE="%s: success (green) Myth version match %s \n " %(currentclient,remote_pkg_name) + LINE = "status " + currentclient + ".myth_version green" + " " + DATE + " " + BBLINE + except: + BBLINE="Something went wrong! \n " + LINE = "status " + currentclient + ".myth_version red" + " " + DATE + " " + BBLINE + + + cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' + os.system(cmd) + return + +#------------------------- +global hostlist +global mythtype +mythtype="" +hostlist = [] +readbb() +local_myth_version=find_local_myth_version() + +for currentclient in hostlist: + client = (fc.Client( currentclient )) + cmd='/data/srv/hobbit/server/bin/bb 127.0.0.1 "query ' + cmd+=currentclient + cmd+='.conn"' + bbresults=os.popen(cmd,'r' ).readline().strip().split() + bbstate=bbresults[0] + if bbstate == 'green': + results=client.test.add("1","2") + try: + #print currentclient + #print results[currentclient] + #print type(results[currentclient]) + #print "----------" + if type(results[currentclient]) == str: + if results[currentclient] == '12': + BBLINE="%s: success (green) \n " %currentclient + LINE = "status " + currentclient + ".func green" + " " + DATE + " " + BBLINE + cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' + os.system(cmd) + #REMOVE HOST FROM FAILED_FUNC + cmd='sed -i "/' + currentclient + '/d" /data/srv/httpd/htdocs/failed_func_hosts' + os.system(cmd) + mythversion_check(currentclient,local_myth_version) + else: + BBLINE="%s: connected but wtf (yellow) \n " %currentclient + LINE = "status " + currentclient + ".func yellow" + " " + DATE + " " + BBLINE + cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' + os.system(cmd) + if BBCOLOR != "red": + BBCOLOR="yellow" + else: + BBLINE="%s: %s (red) \n " %(currentclient,results[currentclient]) + LINE = "status " + currentclient + ".func red" + " " + DATE + " " + BBLINE + cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' + cmd2= "echo " + currentclient + " >> /data/srv/httpd/htdocs/failed_func_hosts" + cmd3="sudo /usr/bin/certmaster-ca -c " + currentclient + os.system(cmd2) + os.system(cmd3) + os.system(cmd) + BBCOLOR="red" + except: + BBLINE="%s had an error : %s (red) \n " % (currentclient,str(results)) + LINE = "status " + currentclient + ".func red" + " " + DATE + " " + BBLINE + cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' + cmd2= "echo " + currentclient + " >> /data/srv/httpd/htdocs/failed_func_hosts" + os.system(cmd) + os.system(cmd2) + cmd3="sudo /usr/bin/certmaster-ca -c " + currentclient + os.system(cmd3) + BBCOLOR="red" + else: + BBLINE+= "not testing %s \n " % currentclient + + +#LINE = "status " + MACHINE + ".func green" + " " + DATE + " " + BBLINE +#cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' +#os.system(cmd) + +#print BBLINE +#print BBCOLOR diff --git a/abs/mv-core/hobbitmon/hbnotes.py b/abs/mv-core/hobbitmon/hbnotes.py new file mode 100755 index 0000000..b7ef16b --- /dev/null +++ b/abs/mv-core/hobbitmon/hbnotes.py @@ -0,0 +1,357 @@ +#!/usr/bin/python +# import MySQL module + +import MySQLdb +import sys +import getopt +import socket +import os +global ignorehostlist +try: + import ignoreclient + ignorehostlist=ignoreclient.ignorehosts +except: + print "could not find the ignore list" + ignorehostlist="'ignoreme'" + + + + + +def createdropdown(): + dropdown=''' + <input name="param2" type="radio" value="Restore" />Restore database </> + <select name="param1"> + ''' + dir = "/data/database_backup" + files = os.listdir(dir) + for file in os.listdir(dir): + if (file.endswith(".tgz")): + dropdown+='<option value="' + file + '">' + file + '</option> ' + dropdown+='</select> <br><input name="param2" type="radio" value="Backup" checked="checked" />Backup database<br /> ' + dropdown+='<input name="param2" type="radio" value="Optimize" />Optimize database<br /> ' + dropdown+='<input name="param2" type="radio" value="ShutdownAll" />Shutdown All Systems (expect MBE)<br /> ' + dropdown+='''<input name="param2" type="radio" value="UpdateAll" />Update All Systems </> <select name="param5"> + <option value="Myth_only">Myth only</option> + <option value="All"> Full System</option> + </select> + </br> + </br> + </br>''' + return dropdown + +def main(argv): + db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + + # create a cursor + cursor = db.cursor() +#------------------------------write client-config------------------------------------------------ + SQL="SELECT DISTINCT(hostname) from settings where hostname not in(%s)" + cursor.execute(SQL %ignorehostlist) + result = cursor.fetchall() + frontonly="_FRONTEND_" + masterbackend="_MASTERBACKEND_" + masterbacked_w_fe="_MASTERFE_" + slave_w_fe="_SLAVEFE_" + slave="_SLAVEBACKEND_" + stand_alone="_STANDALONE_" + dotMBE="" + dotfrontend=list() + dotslave=list() + dotslavefe=list() + tunerdict = {} + for row in result: + # print row[0] + #Find the system type + cursor.execute("select value,data from settings where hostname=%s and value in ('HostSystemType','HostRunFrontend');",(row)) + hostvalues=cursor.fetchall() + if len(hostvalues) == 2: + if hostvalues[1][1] == 'Frontend_only': + frontonly+=","+row[0] + dotfrontend.append(row[0]) + + elif hostvalues[1][1] == 'Standalone': + stand_alone+=","+row[0] + dotMBE="MBE" + " [ label=\"" + row[0] + " \\n Standalone \" shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/be.png\" fontcolor=\"white\" color=blue4 style=filled ] " + dotfrontend.append(row[0]) + cursor.execute("select cardtype,defaultinput from capturecard where hostname=%s;",(row)) + tuners=cursor.fetchall() + tstring="" + + if len(tuners) == 0: + tunerdict["MBE"]="no tuners \\n" + else: + for t in tuners: + tstring+=t[0] + tstring+=t[1] + tstring+='\\n' + tunerdict["MBE"]=tstring + + elif hostvalues[1][1] == 'Master_backend': + if hostvalues[0][1]=='0': + masterbackend+=","+row[0] + dotMBE=row[0] + "\\n Master Backend" + else: + masterbacked_w_fe+=","+row[0] + dotMBE="MBE" + " [ label=\"" + row[0] + " \\n Master Backend with frontend \" shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/be.png\" fontcolor=\"white\" color=blue4 style=filled ] " + cursor.execute("select cardtype,defaultinput from capturecard where hostname=%s;",(row)) + tuners=cursor.fetchall() + tstring="" + + if len(tuners) == 0: + tunerdict["MBE"]="no tuners \\n" + else: + for t in tuners: + tstring+=t[0] + tstring+=t[1] + tstring+='\\n' + tunerdict["MBE"]=tstring + dotfrontend.append(row[0]) + + elif hostvalues[1][1] == 'Slave_backend': + if hostvalues[0][1]=='0': + slave+=","+row[0] + dotslave.append(row[0]) + cursor.execute("select cardtype,defaultinput from capturecard where hostname=%s;",(row)) + tuners=cursor.fetchall() + tstring="" + for t in tuners: + tstring+=t[0] + tstring+=t[1] + tstring+='\\n' + tunerdict["STUNER"+row[0]]=tstring + #dotfrontend.append(row[0]) + else: + cursor.execute("select cardtype,defaultinput from capturecard where hostname=%s;",(row)) + tuners=cursor.fetchall() + tstring="" + for t in tuners: + tstring+=t[0] + tstring+=t[1] + tstring+='\\n' + tunerdict["STUNER"+row[0]]=tstring + print tstring + + slave_w_fe+=","+row[0] + dotslave.append(row[0]) + dotfrontend.append(row[0]) + +#----------------------------------Create graphviz dot files + dotfilename="/data/srv/hobbit/server/etc/mythdot" + + dotfile=open(dotfilename,'w') + dotfile.write("digraph G { " + "\n" ) + dotfile.write("graph [bgcolor=transparent]" + "\n" ) + + +#define the nodes + dotfile.write( dotMBE + " \n" ) + + dotfile.write("tunermbe"+ " [ label= \"" + tunerdict["MBE"] + "\" , shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/tuner.png\" fontcolor=\"white\" color=red ] \n" ) + + for fe in dotfrontend: + dotfile.write("FEND"+fe + "[ label=\"frontend \\n " + fe + "\" ,shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/tv.png\" , fontcolor=\"white\" , imagescale=\"true\" color=\"gold2\" ] \n" ) + + for fe in dotslave: + cslave="STUNER"+fe + if tunerdict[cslave] != "" : + dotfile.write(cslave+ " [ label= \"" + tunerdict[cslave] + "\" , shape=box ] \n" ) + dotfile.write("SLAVE"+fe + "[ label=\"slave backend \\n " + fe + "\" shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/be.png\" fontcolor=\"white\" color=green ] \n" ) + + +#connect up the nodes! + dotfile.write("tunermbe -> MBE [color=\"red\"] \n " ) + + for fe in dotfrontend: + dotfile.write("MBE -> FEND" + fe + "[color=\"gold2\"] \n " ) + + for fe in dotslave: + cslave="STUNER"+fe + dotfile.write("SLAVE" + fe + "-> MBE [color=\"green\"] \n " ) + if tunerdict[cslave] != "" : + dotfile.write(cslave + "-> SLAVE"+fe + "\n" ) + + + + dotfile.write("} " + "\n" ) + dotfile.close() + + + cmd="/usr/bin/unflatten -l6 -c3 -f " + dotfilename + " |/usr/bin/dot -Tpng -o/data/srv/httpd/htdocs/hobbit/gifs/network.png " + # cmd="/usr/bin/circo -Tpng -o/data/srv/httpd/htdocs/hobbit/gifs/network.png " + dotfilename + + results=os.popen(cmd,'r') + + #-------------------------------------------------- + hobbitfile="/data/srv/hobbit/server/etc/hobbit-clients.cfg" + hobbitf=open(hobbitfile,'r') + hobbitconfig=hobbitf.readlines() + hobbitf.close() + hobbitf=open(hobbitfile,'w') +# print "FE",frontonly + # print "MBE",masterbackend + # print "MBEwFW",masterbacked_w_fe + # print "SLAVEwFW",slave_w_fe + #print "SLAVE",slave + #print "STD",stand_alone + + for line in hobbitconfig: + if line.startswith("HOST"): + cline=line.split("=") + if cline[1].startswith("_FRONTEND_"): + pline="HOST=" + pline+=frontonly.strip() + hobbitf.write(pline + "\n") + elif cline[1].startswith("_MASTERBACKEND_"): + pline="HOST=" + pline+=masterbackend.strip() + #print pline + hobbitf.write(pline+ "\n") + elif cline[1].startswith("_MASTERFRONTEND_"): + pline="HOST=" + pline+=masterbacked_w_fe.strip() + #print pline + hobbitf.write(pline+ "\n") + elif cline[1].startswith("_SLAVEBACKEND_"): + pline="HOST=" + pline+=slave.strip() + #print pline + hobbitf.write(pline+ "\n") + elif cline[1].startswith("_SLAVEFE_"): + pline="HOST=" + pline+=slave_w_fe.strip() + #print pline + hobbitf.write(pline+ "\n") + else: + #print line + hobbitf.write(line) + else: + #print line + hobbitf.write(line) + + + + + +#-----------------------------------------------------------END CLIENT CONFIG + + + + + + + + + + + + + + # execute SQL statement + cursor.execute("SELECT DISTINCT(hostname) from settings") + result = cursor.fetchall() + + for row in result: + cursor.execute("select value,data from settings where hostname=%s and value in ('HostSystemType','HostHwuuid');",(row)) + hostvalues=cursor.fetchall() + found_uuid="false" + filename="/data/srv/hobbit/server/www/notes/" + filename+=str(row[0]) + filename+=(".html") + + file = open(filename,'w') + string=''' + <html> + <head> + <style type="text/css">@import "/frame.css";</style> + </head> + ''' + file.write(string) + + + for i in range( 0 , len(hostvalues)): + value=hostvalues[i][0] + data=hostvalues[i][1] + currenthostype='' + currenthostname='' + if value == "HostHwuuid" : + if data != "blank" : + found_uuid="true" + uuid=data + if value == "HostSystemType" : + + currenthostname= str(row[0]).strip() + currenthostype=str(data).strip() + header="<h1>" + currenthostname + "(" + currenthostype + ") </h1>" + file.write(header + '\n') + + + if found_uuid == "true" : + string=str("http://smolt.mythvantage.com/client/show?uuid=") + string+=str(uuid) + file.write("<A href=\"" ) + file.write(string) + file.write("\" >" + str(uuid) + "</A>") + else: + file.write( "uuid not found, please submit a hardware profile" ) + + + + buttonform_top=''' + <div class="content" style="solid #aaa; width:500px; height:350px; overflow:auto; color:#FFF;text-align:left;"> + <form action="/process.py" method="get"> + ''' + + + buttonform_bottom=''' + <input name="param2" type="radio" value="Update" />Update System </> + <select name="param3"> + <option value="Myth_only">Myth only</option> + <option value="All"> Full System</option> + </select> + </br> + <input name="param2" type="radio" value="Shutdown" />Shutdown System<br /> + <input name="param2" type="radio" value="Reboot" />Reboot System<br /> + <input name="param2" type="radio" value="WOL" />Wake on Lan<br /> + <input name="hiddenparam" type="hidden" value=" + ''' + oldurlform=''' + "/> + <input name="param4" type="hidden" value=" + ''' + + + closetag=''' + "/> + </br> + <input id="submitbutton" type="submit" /> + </form> + </div> + ''' + + #ordurlform=''' + #"/> + #<input name="param4" type="hidden" value=" + #''' + + if currenthostype == "Master_backend" : + mbeoptions=createdropdown() + else: + mbeoptions='' + returnurl="/hobbit/notes/" + returnurl+=str(row[0]) + returnurl+=(".html") + file.write('</br> </br> ') + file.write(buttonform_top) + file.write(mbeoptions) + file.write(buttonform_bottom) + file.write(str(row[0])) + file.write(oldurlform) + file.write(returnurl) + file.write(closetag) + + string=(' </html>') + file.write(string) + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/abs/mv-core/hobbitmon/hobbit-alerts.cfg b/abs/mv-core/hobbitmon/hobbit-alerts.cfg new file mode 100644 index 0000000..66ac7e6 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit-alerts.cfg @@ -0,0 +1,124 @@ +# +# The hobbit-alerts.cfg file controls who receives alerts +# when a status in the BB system goes into a critical +# state (usually: red, yellow or purple). +# +# This file is made up from RULES and RECIPIENTS. +# +# A RULE is a filter made from the PAGE where a host +# is located in BB; the HOST name, the SERVICE name, +# the COLOR of the status, the TIME of day, and the +# DURATION of the event. +# +# A RECIPIENT can be a MAIL address, or a SCRIPT. +# +# Recipients can also have rules associated with them, +# that modify the rules for a single recipient, e.g. +# you can define a rule for alerting, then add an +# extra criteria e.g. so a single recipient does not get +# alerted until after 20 minutes. +# +# A sample rule: +# +# HOST=www.foo.com SERVICE=http +# MAIL webadmin@foo.com REPEAT=20 RECOVERED +# MAIL cio@foo.com DURATION>60 COLOR=red +# SCRIPT /usr/local/bin/sendsms 1234567890 FORMAT=SMS +# +# The first line sets up a rule that catches alerts +# for the host "www.foo.com" and the "http" service. +# There are three recipients for these alerts: The first +# one is the "webadmin@foo.com" - they get alerted +# immediately when the status goes into an alert state, +# and the alert is repeated every 20 minutes until it +# recovers. When it recovers, a message is sent about +# the recovery. +# +# The second recipient is "cio@foo.com". He gets alerted +# only when the service goes "red" for more than 60 minutes. +# +# The third recipient is a script, "/usr/local/bin/sendsms". +# The real recipient is "1234567890", but it is handled +# by the script - the script receives a set of environment +# variables with the details about the alert, including the +# real recipient. The alert message is preformatted for +# an SMS recipient. +# +# You can use Perl-compatible "regular expressions" for +# the PAGE, HOST and SERVICE definitions, by putting a "%" +# in front of the regex. E.g. +# +# HOST=%^www.* +# MAIL webadmin@foo.com EXHOST=www.testsite.foo.com +# +# This sets up a rule so that alerts from any hostname +# beginning with "www" goes to "webadmin@foo.com", EXCEPT +# alerts from "www.testsite.foo.com" +# +# The following keywords are recognized: +# PAGE - rule matching an alert by the name of the +# page in BB. This is the name following +# the "page", "subpage" or "subparent" keyword +# in the bb-hosts file. +# EXPAGE - rule excluding an alert if the pagename matches. +# HOST - rule matching an alert by the hostname. +# EXHOST - rule excluding an alert by matching the hostname. +# SERVICE - rule matching an alert by the service name. +# EXSERVICE - rule excluding an alert by matching the hostname. +# GROUP - rule matching an alert by the group ID. +# (Group ID's are associated with a status through the +# hobbit-clients.cfg configuration). +# EXGROUP - rule excluding an alert by matching the group ID. +# COLOR - rule matching an alert by color. Can be "red", +# "yellow", or "purple". +# TIME - rule matching an alert by the time-of-day. This +# is specified as the DOWNTIME timespecification +# in the bb-hosts file (see bb-hosts(5)). +# DURATION - Rule matcing an alert if the event has lasted +# longer/shorter than the given duration. E.g. +# DURATION>10 (lasted longer than 10 minutes) or +# DURARION<30 (only sends alerts the first 30 minutes). +# RECOVERED - Rule matches if the alert has recovered from an +# alert state. +# NOTICE - Rule matches if the message is a "notify" message +# (typically sent when a status is enabled or disabled). +# MAIL - Recipient who receives an e-mail alert. This takes +# one parameter, the e-mail address. +# SCRIPT - Recipient that invokes a script. This takes two +# parameters: The script filename, and the recipient +# that gets passed to the script. +# FORMAT - format of the text message with the alert. Default +# is "TEXT" (suitable for e-mail alerts). "SMS" is +# a short message with no subject for SMS alerts. +# "SCRIPT" is a brief message template for scripts. +# REPEAT - How often an alert gets repeated, in minutes. +# STOP - Valid for a recipient: If this recipient gets an +# alert, recipients further down in hobbit-alerts.cfg +# are ignored. +# UNMATCHED - Matches if no alerts have been sent so far. +# +# +# Script get the following environment variables pre-defined so +# that they can send a meaningful alert: +# +# BBCOLORLEVEL - The color of the alert: "red", "yellow" or "purple" +# BBALPHAMSG - The full text of the status log triggering the alert +# ACKCODE - The "cookie" that can be used to acknowledge the alert +# RCPT - The recipient, from the SCRIPT entry +# BBHOSTNAME - The name of the host that the alert is about +# MACHIP - The IP-address of the host that has a problem +# BBSVCNAME - The name of the service that the alert is about +# BBSVCNUM - The numeric code for the service. From SVCCODES definition. +# BBHOSTSVC - HOSTNAME.SERVICE that the alert is about. +# BBHOSTSVCCOMMAS - As BBHOSTSVC, but dots in the hostname replaced with commas +# BBNUMERIC - A 22-digit number made by BBSVCNUM, MACHIP and ACKCODE. +# RECOVERED - Is "1" if the service has recovered. +# DOWNSECS - Number of seconds the service has been down. +# DOWNSECSMSG - When recovered, holds the text "Event duration : N" where +# N is the DOWNSECS value. + +HOST=* SERVICE=disk + SCRIPT /data/srv/hobbit/server/bin/hobbit_notify.sh 1234567890 FORMAT=SMS REPEAT=10h COLOR=yellow + SCRIPT /data/srv/hobbit/server/bin/hobbit_notify.sh 1234567890 FORMAT=SMS REPEAT=1h COLOR=red + + diff --git a/abs/mv-core/hobbitmon/hobbit-clients.cfg b/abs/mv-core/hobbitmon/hobbit-clients.cfg new file mode 100755 index 0000000..c77fce8 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit-clients.cfg @@ -0,0 +1,427 @@ +# hobbit-clients.cfg - configuration file for clients reporting to Hobbit +# +# This file is used by the hobbitd_client module, when it builds the +# cpu, disk, files, memory, msgs and procs status messages from the +# information reported by clients running on the monitored systems. +# +# This file must be installed on the Hobbit server - client installations +# do not need this file. +# +# The file defines a series of rules: +# UP : Changes the "cpu" status when the system has rebooted recently, +# or when it has been running for too long. +# LOAD : Changes the "cpu" status according to the system load. +# CLOCK : Changes the "cpu" status if the client system clock is +# not synchronized with the clock of the Hobbit server. +# DISK : Changes the "disk" status, depending on the amount of space +# used of filesystems. +# MEMPHYS: Changes the "memory" status, based on the percentage of real +# memory used. +# MEMACT : Changes the "memory" status, based on the percentage of "actual" +# memory used. Note: Not all systems report an "actual" value. +# MEMSWAP: Changes the "memory" status, based on the percentage of swap +# space used. +# PROC : Changes the "procs" status according to which processes were found +# in the "ps" listing from the client. +# LOG : Changes the "msgs" status according to entries in text-based logfiles. +# Note: The "client-local.cfg" file controls which logfiles the client will report. +# FILE : Changes the "files" status according to meta-data for files. +# Note: The "client-local.cfg" file controls which files the client will report. +# DIR : Changes the "files" status according to the size of a directory. +# Note: The "client-local.cfg" file controls which directories the client will report. +# PORT : Changes the "ports" status according to which tcp ports were found +# in the "netstat" listing from the client. +# DEFAULT: Set the default values that apply if no other rules match. +# +# All rules can be qualified so they apply only to certain hosts, or on certain +# times of the day (see below). +# +# Each type of rule takes a number of parameters: +# UP bootlimit toolonglimit +# The cpu status goes yellow if the system has been up for less than +# "bootlimit" time, or longer than "toolonglimit". The time is in +# minutes, or you can add h/d/w for hours/days/weeks - eg. "2h" for +# two hours, or "4w" for 4 weeks. +# Defaults: bootlimit=1h, toolonglimit=-1 (infinite). +# +# LOAD warnlevel paniclevel +# If the system load exceeds "warnlevel" or "paniclevel", the "cpu" +# status will go yellow or red, respectively. These are decimal +# numbers. +# Defaults: warnlevel=5.0, paniclevel=10.0 +# +# CLOCK maximum-offset +# If the system clock of the client differs from that of the Hobbit +# server by more than "maximum-offset" seconds, then the CPU status +# column will go yellow. Note that the accuracy of this test is limited, +# since it is affected by the time it takes a client status report to +# go from the client to the Hobbit server and be processed. You should +# therefore allow for a few seconds (5-10) of slack when you define +# your max. offset. +# It is not wise to use this test, unless your servers are synchronized +# to a common clock, e.g. through NTP. +# +# DISK filesystem warnlevel paniclevel +# DISK filesystem IGNORE +# If the utilization of "filesystem" is reported to exceed "warnlevel" +# or "paniclevel", the "disk" status will go yellow or red, respectively. +# "warnlevel" and "paniclevel" are either the percentage used, or the +# space available as reported by the local "df" command on the host. +# For the latter type of check, the "warnlevel" must be followed by the +# letter "U", e.g. "1024U". +# The special keyword "IGNORE" causes this filesystem to be ignored +# completely, i.e. it will not appear in the "disk" status column and +# it will not be tracked in a graph. This is useful for e.g. removable +# devices, backup-disks and similar hardware. +# "filesystem" is the mount-point where the filesystem is mounted, e.g. +# "/usr" or "/home". A filesystem-name that begins with "%" is interpreted +# as a Perl-compatible regular expression; e.g. "%^/oracle.*/" will match +# any filesystem whose mountpoint begins with "/oracle". +# Defaults: warnlevel=90%, paniclevel=95% +# +# MEMPHYS warnlevel paniclevel +# MEMACT warnlevel paniclevel +# MEMSWAP warnlevel paniclevel +# If the memory utilization exceeds the "warnlevel" or "paniclevel", the +# "memory" status will change to yellow or red, respectively. +# Note: The words "PHYS", "ACT" and "SWAP" are also recognized. +# Defaults: MEMPHYS warnlevel=100 paniclevel=101 (i.e. it will never go red) +# MEMSWAP warnlevel=50 paniclevel=80 +# MEMACT warnlevel=90 paniclevel=97 +# +# PROC processname minimumcount maximumcount color [TRACK=id] [TEXT=displaytext] +# The "ps" listing sent by the client will be scanned for how many +# processes containing "processname" are running, and this is then +# matched against the min/max settings defined here. If the running +# count is outside the thresholds, the color of the "procs" status +# changes to "color". +# To check for a process that must NOT be running: Set minimum and +# maximum to 0. +# +# "processname" can be a simple string, in which case this string must +# show up in the "ps" listing as a command. The scanner will find +# a ps-listing of e.g. "/usr/sbin/cron" if you only specify "processname" +# as "cron". +# "processname" can also be a Perl-compatiable regular expression, e.g. +# "%java.*inst[0123]" can be used to find entries in the ps-listing for +# "java -Xmx512m inst2" and "java -Xmx256 inst3". In that case, +# "processname" must begin with "%" followed by the reg.expression. +# If "processname" contains whitespace (blanks or TAB), you must enclose +# the full string in double quotes - including the "%" if you use regular +# expression matching. E.g. +# PROC "%hobbitd_channel --channel=data.*hobbitd_rrd" 1 1 yellow +# or +# PROC "java -DCLASSPATH=/opt/java/lib" 2 5 +# +# You can have multiple "PROC" entries for the same host, all of the +# checks are merged into the "procs" status and the most severe +# check defines the color of the status. +# +# The TRACK=id option causes the number of processes found to be recorded +# in an RRD file, with "id" as part of the filename. This graph will then +# appear on the "procs" page as well as on the "trends" page. Note that +# "id" must be unique among the processes tracked for each host. +# +# The TEXT=displaytext option affects how the process appears on the +# "procs" status page. By default, the process is listed with the +# "processname" as identification, but if this is a regular expression +# it may be a bit difficult to understand. You can then use e.g. +# "TEXT=Apache" to make these processes appear with the name "Apache" +# instead. +# +# Defaults: mincount=1, maxcount=-1 (unlimited), color="red". +# Note: No processes are checked by default. +# +# Example: Check that "cron" is running: +# PROC cron +# Example: Check that at least 5 "httpd" processes are running, but +# not more than 20: +# PROC httpd 5 20 +# +# LOG filename match-pattern [COLOR=color] [IGNORE=ignore-pattern] [TEXT=displaytext] +# In the "client-local.cfg" file, you can list any number of files +# that the client will collect log data from. These are sent to the +# Hobbit server together with the other client data, and you can then +# choose how to analyze the log data with LOG entries. +# +# ************ IMPORTANT *************** +# To monitor a logfile, you *MUST* configure both client-local.cfg +# and hobbit-clients.cfg. If you configure only the client-local.cfg +# file, the client will collect the log data and you can view it in +# the "client data" display, but it will not affect the color of the +# "msgs" status. On the other hand, if you configure only the +# hobbit-clients.cfg file, then there will be no log data to inspect, +# and you will not see any updates of the "msgs" status either. +# +# "filename" is a filename or pattern. The set of files reported by +# the client is matched against "filename", and if they match then +# this LOG entry is processed against the data from a file. +# +# "match-pattern": The log data is matched against this pattern. If +# there is a match, this log file causes a status change to "color". +# +# "ignore-pattern": The log data that matched "match-pattern" is also +# matched against "ignore-pattern". If the data matches the "ignore-pattern", +# this line of data does not affect the status color. In other words, +# the "ignore-pattern" can be used to refine the strings which cause +# a match. +# Note: The "ignore-pattern" is optional. +# +# "color": The color which this match will trigger. +# Note: "color" is optional, if omitted then "red" will be used. +# +# Example: Go yellow if the text "WARNING" shows up in any logfile. +# LOG %.* WARNING COLOR=yellow +# +# Example: Go red if the text "I/O error" or "read error" appears. +# LOG %/var/(adm|log)/messages %(I/O|read).error COLOR=red +# +# FILE filename [color] [things to check] [TRACK] +# NB: The files you wish to monitor must be listed in a "file:..." +# entry in the client-local.cfg file, in order for the client to +# report any data about them. +# +# "filename" is a filename or pattern. The set of files reported by +# the client is matched against "filename", and if they match then +# this FILE entry is processed against the data from that file. +# +# [things to check] can be one or more of the following: +# - "NOEXIST" triggers a warning if the file exists. By default, +# a warning is triggered for files that have a FILE entry, but +# which do not exist. +# - "TYPE=type" where "type" is one of "file", "dir", "char", "block", +# "fifo", or "socket". Triggers warning if the file is not of the +# specified type. +# - "OWNERID=owner" and "GROUPID=group" triggers a warning if the owner +# or group does not match what is listed here. "owner" and "group" is +# specified either with the numeric uid/gid, or the user/group name. +# - "MODE=mode" triggers a warning if the file permissions are not +# as listed. "mode" is written in the standard octal notation, e.g. +# "644" for the rw-r--r-- permissions. +# - "SIZE<max.size" and "SIZE>min.size" triggers a warning it the file +# size is greater than "max.size" or less than "min.size", respectively. +# You can append "K" (KB), "M" (MB), "G" (GB) or "T" (TB) to the size. +# If there is no such modifier, KB is assumed. +# E.g. to warn if a file grows larger than 1MB (1024 KB): "SIZE<1M". +# - "SIZE=size" triggers a warning it the file size is not what is listed. +# - "MTIME>min.mtime" and "MTIME<max.mtime" checks how long ago the file +# was last modified (in seconds). E.g. to check if a file was updated +# within the past 10 minutes (600 seconds): "MTIME<600". Or to check +# that a file has NOT been updated in the past 24 hours: "MTIME>86400". +# - "MTIME=timestamp" checks if a file was last modified at "timestamp". +# "timestamp" is a unix epoch time (seconds since midnight Jan 1 1970 UTC). +# - "CTIME>min.ctime", "CTIME<max.ctime", "CTIME=timestamp" acts as the +# mtime checks, but for the ctime timestamp (when the files' directory +# entry was last changed, eg. by chown, chgrp or chmod). +# - "MD5=md5sum", "SHA1=sha1sum", "RMD160=rmd160sum" trigger a warning +# if the file checksum using the MD5, SHA1 or RMD160 message digest +# algorithms do not match the one configured here. Note: The "file" +# entry in the client-local.cfg file must specify which algorithm to use. +# +# "TRACK" causes the size of this file to be tracked in an RRD file, and +# shown on the graph on the "files" display. +# +# Example: Check that the /var/log/messages file is not empty and was updated +# within the past 10 minutes, and go yellow if either fails: +# FILE /var/log/messages SIZE>0 MTIME<600 yellow +# +# Example: Check the timestamp, size and SHA-1 hash of the /bin/sh program: +# FILE /bin/sh MTIME=1128514608 SIZE=645140 SHA1=5bd81afecf0eb93849a2fd9df54e8bcbe3fefd72 +# +# DIR directory [color] [SIZE<maxsize] [SIZE>minsize] [TRACK] +# NB: The directories you wish to monitor must be listed in a "dir:..." +# entry in the client-local.cfg file, in order for the client to +# report any data about them. +# +# "directory" is a filename or pattern. The set of directories reported by +# the client is matched against "directory", and if they match then +# this DIR entry is processed against the data for that directory. +# +# "SIZE<maxsize" and "SIZE>minsize" defines the size limits that the +# directory must stay within. If it goes outside these limits, a warning +# will trigger. Note the Hobbit uses the raw number reported by the +# local "du" command on the client. This is commonly KB, but it may be +# disk blocks which are often 512 bytes. +# +# "TRACK" causes the size of this directory to be tracked in an RRD file, +# and shown on the graph on the "files" display. +# +# PORT [LOCAL=addr] [EXLOCAL=addr] [REMOTE=addr] [EXREMOTE=addr] [STATE=state] [EXSTATE=state] [MIN=mincount] [MAX=maxcount] [COLOR=color] [TRACK=id] [TEXT=displaytext] +# The "netstat" listing sent by the client will be scanned for how many +# sockets match the criteria listed. +# "addr" is a (partial) address specification in the format used on +# the output from netstat. This is typically "10.0.0.1:80" for the IP +# 10.0.0.1, port 80. Or "*:80" for any local address, port 80. +# NB: The Hobbit clients normally report only the numeric data for +# IP-adresses and port-numbers, so you must specify the port +# number (e.g. "80") instead of the service name ("www"). +# "state" causes only the sockets in the specified state to be included; +# it is usually LISTEN or ESTABLISHED. +# The socket count is then matched against the min/max settings defined +# here. If the count is outside the thresholds, the color of the "ports" +# status changes to "color". +# To check for a socket that must NOT exist: Set minimum and +# maximum to 0. +# +# "addr" and "state" can be a simple strings, in which case these string must +# show up in the "netstat" at the appropriate column. +# "addr" and "state" can also be a Perl-compatiable regular expression, e.g. +# "LOCAL=%(:80|:443)" can be used to find entries in the netstat local port for +# both http (port 80) and https (port 443). In that case, portname or state must +# begin with "%" followed by the reg.expression. +# +# The TRACK=id option causes the number of sockets found to be recorded +# in an RRD file, with "id" as part of the filename. This graph will then +# appear on the "ports" page as well as on the "trends" page. Note that +# "id" must be unique among the ports tracked for each host. +# +# The TEXT=displaytext option affects how the port appears on the +# "ports" status page. By default, the port is listed with the +# local/remote/state rules as identification, but this may be somewhat +# difficult to understand. You can then use e.g. "TEXT=Secure Shell" to make +# these ports appear with the name "Secure Shell" instead. +# +# Defaults: state="LISTEN", mincount=1, maxcount=-1 (unlimited), color="red". +# Note: No ports are checked by default. +# +# Example: Check that there is someone listening on the https port: +# PORT "LOCAL=%([.:]443)$" state=LISTEN TEXT=https +# +# Example: Check that at least 5 "ssh" connections are established, but +# not more than 10; warn but do not error; graph the connection count: +# PORT "LOCAL=%([.:]22)$" state=ESTABLISHED min=5 max=20 color=yellow TRACK=ssh "TEXT=SSH logins" +# +# Example: Check that ONLY ports 22, 80 and 443 are open for incoming connections: +# PORT STATE=LISTEN LOCAL=%0.0.0.0[.:].* EXLOCAL=%[.:](22|80|443)$ MAX=0 "TEXT=Bad listeners" +# +# +# To apply rules to specific hosts, you can use the "HOST=", "EXHOST=", "PAGE=" +# "EXPAGE=", "CLASS=" or "EXCLASS=" qualifiers. (These act just as in the +# hobbit-alerts.cfg file). +# +# Hostnames are either a comma-separated list of hostnames (from the bb-hosts file), +# "*" to indicate "all hosts", or a Perl-compatible regular expression. +# E.g. "HOST=dns.foo.com,www.foo.com" identifies two specific hosts; +# "HOST=%www.*.foo.com EXHOST=www-test.foo.com" matches all hosts with a name +# beginning with "www", except the "www-test" host. +# "PAGE" and "EXPAGE" match the hostnames against the page on where they are +# located in the bb-hosts file, via the bb-hosts' page/subpage/subparent +# directives. This can be convenient to pick out all hosts on a specific page. +# +# Rules can be dependant on time-of-day, using the standard Hobbit syntax +# (the bb-hosts(5) about the NKTIME parameter). E.g. "TIME=W:0800:2200" +# applied to a rule will make this rule active only on week-days between +# 8AM and 10PM. +# +# You can also associate a GROUP id with a rule. The group-id is passed to +# the alert module, which can then use it to control who gets an alert when +# a failure occurs. E.g. the following associates the "httpd" process check +# with the "web" group, and the "sshd" check with the "admins" group: +# PROC httpd 5 GROUP=web +# PROC sshd 1 GROUP=admins +# In the hobbit-alerts.cfg file, you could then have rules like +# GROUP=web +# MAIL webmaster@foo.com +# GROUP=admins +# MAIL root@foo.com +# +# Qualifiers must be placed after each rule, e.g. +# LOAD 8.0 12.0 HOST=db.foo.com TIME=*:0800:1600 +# +# If you have multiple rules that you want to apply the same qualifiers to, +# you can write the qualifiers *only* on one line, followed by the rules. E.g. +# HOST=%db.*.foo.com TIME=W:0800:1600 +# LOAD 8.0 12.0 +# DISK /db 98 100 +# PROC mysqld 1 +# will apply the three rules to all of the "db" hosts on week-days between 8AM +# and 4PM. This can be combined with per-rule qualifiers, in which case the +# per-rule qualifier overrides the general qualifier; e.g. +# HOST=%.*.foo.com +# LOAD 7.0 12.0 HOST=bax.foo.com +# LOAD 3.0 8.0 +# will result in the load-limits being 7.0/12.0 for the "bax.foo.com" host, +# and 3.0/8.0 for all other foo.com hosts. +# +# The special DEFAULT section can modify the built-in defaults - this must +# be placed at the end of the file. + +HOST=_MASTERBACKEND_ + PROC sshd 1 + PROC lighttpd + PROC hobbitd + PROC crond + PROC mysql + PROC mythbackend + DISK * 95 99 + PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http + PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + +HOST=_MASTERFRONTEND_ + PROC mythfrontend + PROC sshd 1 + PROC lighttpd + PROC hobbitd + PROC crond + PROC mysql + PROC mythbackend + DISK * 95 99 + PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http + PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd + PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd + + +HOST=_FRONTEND_ + PROC sshd 1 + PROC crond + PROC mythfrontend + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd + PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd + +HOST=_SLAVEBACKEND_ + PROC sshd 1 + PROC crond + PROC mythbackend + DISK * 95 99 + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + +HOST=_SLAVEFRONTEND_ + PROC sshd 1 + PROC lighttpd + PROC hobbitd + PROC crond + PROC mythbackend + PROC mythfrontend + DISK * 95 99 + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd + PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd + +HOST=_STANDALONE_ + PROC sshd 1 + PROC lighttpd + PROC hobbitd + PROC crond + PROC mysql + PROC mythbackend + DISK * 95 99 + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd + PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd + PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http + PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi + PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh + +DEFAULT + # These are the built-in defaults. + UP 1h + LOAD 5.0 10.0 + DISK * 99 100 + MEMPHYS 100 101 + MEMSWAP 50 80 + MEMACT 90 97 + diff --git a/abs/mv-core/hobbitmon/hobbit-mem-myth.sh b/abs/mv-core/hobbitmon/hobbit-mem-myth.sh new file mode 100755 index 0000000..642672f --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit-mem-myth.sh @@ -0,0 +1,52 @@ +#!/bin/bash +MBEPID=`ps -ef|grep mythbackend |grep -v runsv|grep -v grep|grep -v logger|awk '{print $2 }'` +MFEPID=`ps -ef|grep mythfrontend |grep -v runsv|grep -v grep|grep -v logger|awk '{print $2 }'` + + + +COLOR=green # By default, everything is OK + + # Do whatever you need to test for something +if [ ! x$MBEPID = x ] +then +VmSize=`cat /proc/$MBEPID/status|grep -i vmsize|awk '{print $2 }'` +VmPeak=`cat /proc/$MBEPID/status|grep -i vmpeak|awk '{print $2 }'` +VmRSS=`cat /proc/$MBEPID/status|grep -i vmrss |awk '{print $2 }'` +MSGMBE=" + VmSize:$VmSize + VmPeak:$VmPeak + VmRSS:$VmRSS + " +# echo $MSGMBE + # Tell Hobbit about it + $BB $BBDISP "data $MACHINE.memmbe $COLOR `date` + + ${MSGMBE} + + " +fi + + + +if [ ! x$MFEPID = x ] +then +VmSize=`cat /proc/$MFEPID/status|grep -i vmsize|awk '{print $2 }'` +VmPeak=`cat /proc/$MFEPID/status|grep -i vmpeak|awk '{print $2 }'` +VmRSS=`cat /proc/$MFEPID/status|grep -i vmrss |awk '{print $2 }'` +MSGMBE=" + VmSize:$VmSize + VmPeak:$VmPeak + VmRSS:$VmRSS + " +# echo $MSGMBE + # Tell Hobbit about it + $BB $BBDISP "data $MACHINE.memmfe $COLOR `date` + + ${MSGMBE} + + " +fi + + + + diff --git a/abs/mv-core/hobbitmon/hobbit-myth-orphan.sh b/abs/mv-core/hobbitmon/hobbit-myth-orphan.sh new file mode 100755 index 0000000..f9f7d54 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit-myth-orphan.sh @@ -0,0 +1,54 @@ +#!/bin/bash +TMPFILE=/tmp/oprhan.result +/usr/local/bin/myth.find_orphans.pl > $TMPFILE + + + COLUMN=orphan # Name of the column + COLOR=green # By default, everything is OK + + # Do whatever you need to test for something + # As an example, go red if /tmp/badstuff exists. + +thumbs=`grep -A 4 "Summary:" $TMPFILE |tail -n 1 | cut -d" " -f3 ` +if [ ! x$thumbs = x0 ] +then + MSG="$thumbs orphaned thumbnails with no corresponding recording" + COLOR='yellow' +fi + +missing=`grep -A 2 "Summary:" $TMPFILE |tail -n 1 | cut -d, -f2 | cut -d" " -f2 ` +if [ ! x$missing = x0 ] +then + COLOR='red' +MSG="${MSG} + `grep -A 2 "Summary:" $TMPFILE |tail -n 1 ` " +fi + +unkown=`grep -A 5 "Summary:" $TMPFILE |tail -n 1 | cut -d" " -f3 ` +if [ ! x$unkown = x0 ] +then + COLOR='red' +MSG="${MSG} +`grep -A 5 "Summary:" $TMPFILE |tail -n 1 `" +fi + + +MSG="${MSG} + + + `cat $TMPFILE` + " + + # Tell Hobbit about it + $BB $BBDISP "status $MACHINE.$COLUMN $COLOR `date` +/usr/local/bin/myth.find_orphans.pl + + ${MSG} + + " + + exit 0 + + + + diff --git a/abs/mv-core/hobbitmon/hobbit.install b/abs/mv-core/hobbitmon/hobbit.install new file mode 100755 index 0000000..a39308d --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit.install @@ -0,0 +1,32 @@ +post_install() { + . /etc/systemconfig + if [ ! -f /data/srv/hobbit/server/ext/ignoreclient.py ] + then + echo "#this is a list of hosts to ignore" > /data/srv/hobbit/server/ext/ignoreclient.py + echo ignorehosts=\"\'ignoreme1\',\'ignoreme2\'\" >> /data/srv/hobbit/server/ext/ignoreclient.py + fi + sed -i -e "s/localhost/$hostname/" /data/srv/hobbit/server/etc/bb-hosts + sed -i -e "s/localhost/$hostname/" /data/srv/hobbit/server/etc/hobbitserver.cfg + chown -R nobody /data/srv/hobbit + chown -R nobody /data/srv/httpd/htdocs/hobbit + chown -R nobody /var/log/hobbit + chown root /data/srv/hobbit/server/bin/hobbitping + chmod +s /data/srv/hobbit/server/bin/hobbitping + +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + rm -f /data/srv/httpd/htdocs/hobbit/index.html +} + +pre_remove() { + rm -f /data/srv/httpd/htdocs/hobbit/index.html +} +op=$1 +shift +$op $* +# vim: ft=sh ts=2 diff --git a/abs/mv-core/hobbitmon/hobbit_myth_data.py b/abs/mv-core/hobbitmon/hobbit_myth_data.py new file mode 100755 index 0000000..14e3304 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit_myth_data.py @@ -0,0 +1,91 @@ +#!/usr/bin/python +# checks for the number of days of guide data left +# make sure myth_mtc ran ok + + +import urllib2 +import string +import time +import sys,os +BBLINE = '' +BBCOLOR="green" +DATE = time.strftime("%a %b %d %H:%M:%S %Z %Y", time.localtime(time.time())) +if os.environ['BB']: + #print os.environ['BB'] + BB=os.environ['BB'] +if os.environ['BBDISP']: + #print os.environ['BBDISP'] + BBDISP=os.environ['BBDISP'] +if os.environ['MACHINE']: + #print os.environ['MACHINE'] + MACHINE=os.environ['MACHINE'] + + + + +def check_mtc(): + try: + infile = open('/var/log/myth_mtc.log', 'r') + except(IOError), e: + print "couldn't open myth_mtc.log file" + return False + else: + mtc = infile.readlines() + for i in mtc: + line=i + infile.close() + if line.strip() == "Finished": + return True + else: + return False + +def find_data_left(): + try: + f = urllib2.urlopen("http://localhost:6544") + except urllib2.HTTPError, e: + if e.code != 200: + print 'error: could not find Masterbackend' + days_left=-100 + else: + MBE_data = f.readlines() + f.close() + for line in MBE_data: + if line.find("guide data") != -1: + if line.find("no guide data") != -1: + days_left = 0 + else: + line=line.split("(") + line=line[1].split(")") + days_left=line[0].split()[0] + return days_left + + +mtc=check_mtc() +num_days=find_data_left() + +if mtc: + BBCOLOR="green" + msg="\n Maintenace script ran ok \n " +else: + BBCOLOR ="yellow" + msg="\n Maintenance script didn't run \n" + +if num_days == 1 : + BBCOLOR="yellow" + msg+="Only 1 day of guide data left" +elif num_days == 0 : + BBCOLOR="yellow" + msg+="No guide data available" +else: + data_check = True + BBCOLOR="green" + msg+="%s days of guide data" %(num_days) + +BBLINE=msg +LINE = "status " + MACHINE + ".myth_mtc" + " " + BBCOLOR + " " + DATE + " " + BBLINE +cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' +os.system(cmd) + +sys.exit(0) + + diff --git a/abs/mv-core/hobbitmon/hobbit_notify.sh b/abs/mv-core/hobbitmon/hobbit_notify.sh new file mode 100755 index 0000000..7569e2a --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbit_notify.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# +# BBCOLORLEVEL - The color of the alert: "red", "yellow" or "purple" +# BBALPHAMSG - The full text of the status log triggering the alert +# ACKCODE - The "cookie" that can be used to acknowledge the alert +# RCPT - The recipient, from the SCRIPT entry +# BBHOSTNAME - The name of the host that the alert is about +# MACHIP - The IP-address of the host that has a problem +# BBSVCNAME - The name of the service that the alert is about +# BBSVCNUM - The numeric code for the service. From SVCCODES definition. +# BBHOSTSVC - HOSTNAME.SERVICE that the alert is about. +# BBHOSTSVCCOMMAS - As BBHOSTSVC, but dots in the hostname replaced with commas +# BBNUMERIC - A 22-digit number made by BBSVCNUM, MACHIP and ACKCODE. +# RECOVERED - Is "1" if the service has recovered. +# DOWNSECS - Number of seconds the service has been down. +# DOWNSECSMSG - When recovered, holds the text "Event duration : N" where +echo $BBCOLORLEVEL > /tmp/hobbitout +echo $BBALPHAMSG >>/tmp/hobbitout +echo $RCPT >>/tmp/hobbitout +echo $BBHOSTNAME >>/tmp/hobbitout +echo $BBSVCNAME >>/tmp/hobbitout +echo $BBHOSTSVC >>/tmp/hobbitout + +#BBCOLORLEVEL=red +#BBCOLORLEVEL=yellow +#BBALPHAMSG="vmtest:disk red [751147]" +#BBHOSTNAME="vmtest" +#BBSVCNAME="disk" +#BBHOSTSVC="vmtest.disk" + +if [ x$BBSVCNAME = xdisk ] +then + case $BBCOLORLEVEL in + red ) + /usr/bin/notify.py ALT "$BBHOSTNAME disk is full" + ;; + yellow ) + + /usr/bin/notify.py PHN "$BBHOSTNAME disk almost full " + ;; + esac +fi + + + + + + diff --git a/abs/mv-core/hobbitmon/hobbitadd.py b/abs/mv-core/hobbitmon/hobbitadd.py new file mode 100755 index 0000000..b8ae15d --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbitadd.py @@ -0,0 +1,87 @@ +#!/usr/bin/python +#polls the hobbit server for ghost clients. If it finds ghosts it will make a new bb-hosts file +#with the new clients. +#Will not add duplicate clients +#return code of 0 means a new file was written, anything else is an error or no inserts occured +import urllib2 +import string +import sys + + +def readbb(): + global bblist + try: + infile = open('/data/srv/hobbit/etc/bb-hosts', 'r') + except(IOError), e: + print "couldn't open bb-hosts file" + sys.exit(1) + else: + bblist = infile.readlines() + infile.close() + + +def findghosts(): + global infile + global bblist + global ghostitems + global numberitems + try: + f = urllib2.urlopen("http://localhost/hobbit/hobbit-cgi/hobbit-ghosts.sh?SORT=name&MAXAGE=300&TEXT") + except urllib2.HTTPError, e: + if e.code != 200: + print 'error find ghost list' + sys.exit(1) + else: + ghostitems = f.readlines() + f.close() + numberitems = len(ghostitems) + + +def makenewbb(): + global bblist + global ghostitems + global numberitems + global numinserts + numinserts=0 + outlist = [] + for item in bblist: + if item not in outlist: + outlist.append(item) + + for item in ghostitems: + line = item.rstrip() + nline = "%s #func" % (line) + nline = nline + '\n' + if nline not in outlist: + outlist.append(nline) + print "adding: " + nline + numinserts = numinserts + 1 + if numinserts > 0: + outfile = open("/data/srv/hobbit/etc/bb-hosts","w") + #outfile = open("/tmp/new-bb","w") + for i in outlist: + outfile.write(i + '\n' ) + outfile.close + + +global infile +global bblist +global ghostitems +global numberitems +global numinserts + +readbb() +findghosts() +print numberitems +if numberitems > 0: + makenewbb() +else: + print "nothing to add" + + +if numinserts < 1: + sys.exit(1) +else: + sys.exit(0) + + diff --git a/abs/mv-core/hobbitmon/hobbitcheck.sh b/abs/mv-core/hobbitmon/hobbitcheck.sh new file mode 100755 index 0000000..70f6508 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbitcheck.sh @@ -0,0 +1,6 @@ +#!/bin/bash +su nobody -c /data/srv/hobbit/server/bin/hobbitadd.py +#if [ $? = 0 ] +#then +# sv restart hobbit +#fi diff --git a/abs/mv-core/hobbitmon/hobbitgraph.cfg.diff b/abs/mv-core/hobbitmon/hobbitgraph.cfg.diff new file mode 100644 index 0000000..1ca4caf --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbitgraph.cfg.diff @@ -0,0 +1,42 @@ +--- hobbitgraph.cfg.orig 2008-01-08 09:24:59.000000000 -0600 ++++ hobbitgraph.cfg 2008-01-08 09:12:51.000000000 -0600 +@@ -1135,4 +1135,39 @@ + GPRINT:cnt@RRDIDX@:MIN: %6.1lf (min) \: + GPRINT:cnt@RRDIDX@:AVERAGE: %6.1lf (avg)\n + ++[storage] ++ TITLE Storage Groups ++ YAXIS recordings ++ DEF:storage1=storage.rrd:rectvtotal:AVERAGE ++ LINE2:storage1#00CCCC:current recorded + ++ DEF:rectime=storage.rrd:rectvtime:AVERAGE ++ LINE2:rectime#000000:current recorded time ++ ++ DEF:livetime=storage.rrd:livetvtime:AVERAGE ++ LINE2:livetime#00CC11:current live time ++ ++ ++[memmbe] ++ TITLE Memory usage for MythBackend ++ YAXIS mythbackend ++ DEF:vmsize=memmbe.rrd:VmSize:AVERAGE ++ LINE2:vmsize#00CCCC:vmsize ++ ++ DEF:vmpeak=memmbe.rrd:VmPeak:AVERAGE ++ LINE2:vmpeak#000000:vmpeak ++ ++ DEF:vmrss=memmbe.rrd:VmRSS:AVERAGE ++ LINE2:vmrss#00CC11:vmrss ++ ++[memmfe] ++ TITLE Memory usage for MythFrontend ++ YAXIS mythfrontend ++ DEF:vmsize=memmfe.rrd:VmSize:AVERAGE ++ LINE2:vmsize#00CCCC:vmsize ++ ++ DEF:vmpeak=memmfe.rrd:VmPeak:AVERAGE ++ LINE2:vmpeak#000000:vmpeak ++ ++ DEF:vmrss=memmfe.rrd:VmRSS:AVERAGE ++ LINE2:vmrss#00CC11:vmrss diff --git a/abs/mv-core/hobbitmon/hobbitlaunch.cfg.diff b/abs/mv-core/hobbitmon/hobbitlaunch.cfg.diff new file mode 100644 index 0000000..6239125 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbitlaunch.cfg.diff @@ -0,0 +1,40 @@ +--- hobbitlaunch.cfg.orig 2008-02-10 22:30:16.000000000 +0000 ++++ hobbitlaunch.cfg 2008-08-09 07:05:14.000000000 +0000 +@@ -204,3 +204,37 @@ + LOGFILE $BBSERVERLOGS/hobbitclient.log + INTERVAL 5m + ++[storage] ++ ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbitstorage.py ++ LOGFILE $BBSERVERLOGS/bb-storage.log ++ INTERVAL 5m ++[notes] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hbnotes.py ++ LOGFILE $BBSERVERLOGS/bb-notes.log ++ INTERVAL 5m ++[orphan] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbit-myth-orphan.sh ++ LOGFILE $BBSERVERLOGS/orphan.log ++ INTERVAL 5m ++ ++[func] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD sudo /data/srv/hobbit/server/ext/hbfunc.py ++ LOGFILE $BBSERVERLOGS/hbfunc.log ++ INTERVAL 5m ++ ++[memmyth] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbit-mem-myth.sh ++ LOGFILE $BBSERVERLOGS/mythmem.log ++ INTERVAL 5m ++ ++[mtc] ++ ENVFILE /data/srv/hobbit/server/etc/hobbitserver.cfg ++ CMD /data/srv/hobbit/server/ext/hobbit_myth_data.py ++ LOGFILE $BBSERVERLOGS/mtc ++ INTERVAL 5m diff --git a/abs/mv-core/hobbitmon/hobbitserver.cfg.diff b/abs/mv-core/hobbitmon/hobbitserver.cfg.diff new file mode 100644 index 0000000..7c829fe --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbitserver.cfg.diff @@ -0,0 +1,45 @@ +--- hobbitserver.cfg.orig 2008-01-08 15:25:34.000000000 +0000 ++++ hobbitserver.cfg 2008-01-08 16:22:56.000000000 +0000 +@@ -105,7 +105,7 @@ + CONNTEST="TRUE" # Should we 'ping' hosts ? + IPTEST_2_CLEAR_ON_FAILED_CONN="TRUE" # If TRUE, then failing network tests go CLEAR if conn-test fails. + NONETPAGE="" # Network tests that go YELLOW upon failure +-FPING="/usr/sbin/fping" # Path and options for the ping program. ++FPING="hobbitping" # Path and options for the ping program. + NTPDATE="ntpdate" # Path to the 'ntpdate' program + TRACEROUTE="traceroute" # How to do traceroute on failing ping tests. Requires "trace" in bb-hosts. + BBROUTERTEXT="router" # What to call a failing intermediate network device. +@@ -120,7 +120,9 @@ + # Size of the generated graph images + RRDHEIGHT="120" + RRDWIDTH="576" # The RRD's contain 576 data points, so this is a good value +- ++NCV_storage="*:GAUGE" ++NCV_memmbe="*:GAUGE" ++NCV_memmfe="*:GAUGE" + # TEST2RRD defines the status- and data-messages you want to collect RRD data + # about. You will normally not need to modify this, unless you have added a + # script to pick up RRD data from custom tests (the hobbitd_larrd --extra-script +@@ -132,11 +134,11 @@ + # + # This is also used by the bb-hostsvc.cgi script to determine if the detailed + # status view of a test should include a graph. +-TEST2RRD="cpu=la,disk,inode,qtree,memory,$PINGCOLUMN=tcp,http=tcp,dns=tcp,dig=tcp,time=ntpstat,vmstat,iostat,netstat,temperature,apache,bind,sendmail,mailq,nmailq=mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,files,procs=processes,ports,clock,lines" ++TEST2RRD="cpu=la,disk,inode,qtree,memory,$PINGCOLUMN=tcp,http=tcp,dns=tcp,dig=tcp,time=ntpstat,vmstat,iostat,netstat,temperature,apache,bind,sendmail,mailq,nmailq=mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,files,procs=processes,ports,clock,lines,storage=ncv,memmbe=ncv,memmfe=ncv" + + # This defines which RRD files to include on the "trends" column webpage, + # and the order in which they appear. +-GRAPHS="la,disk,inode,qtree,files,processes,memory,users,vmstat,iostat,tcp.http,tcp,ncv,netstat,ifstat,mrtg::1,ports,temperature,ntpstat,apache,bind,sendmail,mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,clock,lines" ++GRAPHS="la,disk,inode,qtree,files,processes,memory,users,vmstat,iostat,tcp.http,tcp,ncv,netstat,ifstat,mrtg::1,ports,temperature,ntpstat,apache,bind,sendmail,mailq,socks,bea,iishealth,citrix,bbgen,bbtest,bbproxy,hobbitd,clock,lines,storage,memmbe,memmfe" + + # These two settings can be used to restrict what filesystems are being + # tracked (i.e. have their utilisation graphed) by Hobbit. +@@ -158,7 +160,7 @@ + HTMLCONTENTTYPE="text/html" # You can add charset options here. + + # Fonts and texts +-HOBBITLOGO="Hobbit" # HTML inserted on all header pages at top-left corner. ++HOBBITLOGO="" # HTML inserted on all header pages at top-left corner. + MKBBLOCAL="<B><I>Pages Hosted Locally</I></B>" + MKBBREMOTE="<B><I>Remote Status Display</I></B>" + MKBBSUBLOCAL="<B><I>Subpages Hosted Locally</I></B>" diff --git a/abs/mv-core/hobbitmon/hobbitstorage.py b/abs/mv-core/hobbitmon/hobbitstorage.py new file mode 100755 index 0000000..e79f8d1 --- /dev/null +++ b/abs/mv-core/hobbitmon/hobbitstorage.py @@ -0,0 +1,121 @@ +#!/usr/bin/python +# import MySQL module + +import MySQLdb +import sys +import getopt +import socket +import os +import time +import string + +def LIVETV(): + grandtotal=0 + global rectv_total + global rectv_time + global livetv_total + global livetv_time + # create a cursor + cursor = db.cursor() + # execute SQL statement + + cursor.execute("SELECT unix_timestamp(starttime),unix_timestamp(endtime),title FROM recorded where recgroup=(%s) ORDER by starttime;" , ("livetv")) + result = cursor.fetchall() + + for row in result: + # print row[0], row[1] ,row [2] + start=row[0] + end=row[1] + if ( end > start ): + total = (end - start) /60 + grandtotal+=total + hours = grandtotal / 60.0 + days = hours / 24.0 + + livetv_total=len(result) + livetv_time=hours + + + +def RECORDTV(): + grandtotal=0 + global rectv_total + global rectv_time + global livetv_total + global livetv_time + # create a cursor + cursor = db.cursor() + # execute SQL statement + + cursor.execute("SELECT unix_timestamp(starttime),unix_timestamp(endtime),title FROM recorded where not recgroup=(%s) ORDER by starttime;" , ("livetv")) + result = cursor.fetchall() + + for row in result: + # print row[0], row[1] ,row [2] + start=row[0] + end=row[1] + if ( end > start ): + total = (end - start) /60 + grandtotal+=total + hours = grandtotal / 60.0 + days = hours / 24.0 + + rectv_total=len(result) + rectv_time=hours + + + +def printvars(): + print rectv_time + print rectv_total + print livetv_time + print livetv_total + +def sendTObb(): + DATE = time.strftime("%a %b %d %H:%M:%S %Z %Y", time.localtime(time.time())) + if os.environ['BB']: + #print os.environ['BB'] + BB=os.environ['BB'] + if os.environ['BBDISP']: + #print os.environ['BBDISP'] + BBDISP=os.environ['BBDISP'] + if os.environ['MACHINE']: + # print os.environ['MACHINE'] + MACHINE=os.environ['MACHINE'] + + # MACHINE = socket.gethostname() + # MACHINE = string.replace(MACHINE, '.', ',') + INFOLINE= "\n rectv_total:" + str(rectv_total) + INFOLINE= INFOLINE + "\n rectv_time:" + str(rectv_time) + INFOLINE= INFOLINE + "\n livetv_total:" + str(livetv_total) + INFOLINE= INFOLINE + "\n livetv_time:" + str(livetv_time) + INFOLINE= INFOLINE + "\n " + + + + LINE = "status " + MACHINE + ".storage green" + " " + DATE + " " + INFOLINE + + cmd = BB + ' ' + BBDISP + ' "' + LINE + '"' + os.system(cmd) + #print LINE + +def main(argv): + global db + global rectv_total + global rectv_time + global livetv_total + global livetv_time + + rectv_total=0 + rectv_time=0 + livetv_total=0 + livetv_time=0 + + db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + + LIVETV() + RECORDTV() + #printvars() + sendTObb() +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/abs/mv-core/hobbitmon/tuner.png b/abs/mv-core/hobbitmon/tuner.png Binary files differnew file mode 100644 index 0000000..e4ca198 --- /dev/null +++ b/abs/mv-core/hobbitmon/tuner.png diff --git a/abs/mv-core/hobbitmon/tv.png b/abs/mv-core/hobbitmon/tv.png Binary files differnew file mode 100644 index 0000000..9c4490c --- /dev/null +++ b/abs/mv-core/hobbitmon/tv.png |