summaryrefslogtreecommitdiffstats
path: root/abs/mv-core/hobbitmon
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2008-11-09 02:33:48 (GMT)
committerJames Meyer <james.meyer@operamail.com>2008-11-09 02:33:48 (GMT)
commit7cd3835eeb8d64936731b10395836be332705fb8 (patch)
treeaab766a765784c2e5d71c0f4f902e35e08b4c51f /abs/mv-core/hobbitmon
parent1ba69cc033dfbd0a6c4c29c6d877c7e753f96e8e (diff)
downloadlinhes_pkgbuild-7cd3835eeb8d64936731b10395836be332705fb8.zip
linhes_pkgbuild-7cd3835eeb8d64936731b10395836be332705fb8.tar.gz
linhes_pkgbuild-7cd3835eeb8d64936731b10395836be332705fb8.tar.bz2
hobbit server
Diffstat (limited to 'abs/mv-core/hobbitmon')
-rwxr-xr-xabs/mv-core/hobbitmon/PKGBUILD84
-rw-r--r--abs/mv-core/hobbitmon/be.pngbin0 -> 15618 bytes
-rw-r--r--abs/mv-core/hobbitmon/clientlaunch.cfg.diff12
-rw-r--r--abs/mv-core/hobbitmon/diffs/clientlaunch.cfg43
-rw-r--r--abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.diff12
-rw-r--r--abs/mv-core/hobbitmon/diffs/clientlaunch.cfg.orig37
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg1173
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.diff42
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitgraph.cfg.orig1138
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg240
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.diff40
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitlaunch.cfg.orig206
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitserver.cfg226
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.diff45
-rw-r--r--abs/mv-core/hobbitmon/diffs/hobbitserver.cfg.orig224
-rwxr-xr-xabs/mv-core/hobbitmon/hbfunc.py167
-rwxr-xr-xabs/mv-core/hobbitmon/hbnotes.py357
-rw-r--r--abs/mv-core/hobbitmon/hobbit-alerts.cfg124
-rwxr-xr-xabs/mv-core/hobbitmon/hobbit-clients.cfg427
-rwxr-xr-xabs/mv-core/hobbitmon/hobbit-mem-myth.sh52
-rwxr-xr-xabs/mv-core/hobbitmon/hobbit-myth-orphan.sh54
-rwxr-xr-xabs/mv-core/hobbitmon/hobbit.install32
-rwxr-xr-xabs/mv-core/hobbitmon/hobbit_myth_data.py91
-rwxr-xr-xabs/mv-core/hobbitmon/hobbit_notify.sh48
-rwxr-xr-xabs/mv-core/hobbitmon/hobbitadd.py87
-rwxr-xr-xabs/mv-core/hobbitmon/hobbitcheck.sh6
-rw-r--r--abs/mv-core/hobbitmon/hobbitgraph.cfg.diff42
-rw-r--r--abs/mv-core/hobbitmon/hobbitlaunch.cfg.diff40
-rw-r--r--abs/mv-core/hobbitmon/hobbitserver.cfg.diff45
-rwxr-xr-xabs/mv-core/hobbitmon/hobbitstorage.py121
-rw-r--r--abs/mv-core/hobbitmon/tuner.pngbin0 -> 7685 bytes
-rw-r--r--abs/mv-core/hobbitmon/tv.pngbin0 -> 5968 bytes
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
new file mode 100644
index 0000000..2267cab
--- /dev/null
+++ b/abs/mv-core/hobbitmon/be.png
Binary files differ
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
new file mode 100644
index 0000000..e4ca198
--- /dev/null
+++ b/abs/mv-core/hobbitmon/tuner.png
Binary files differ
diff --git a/abs/mv-core/hobbitmon/tv.png b/abs/mv-core/hobbitmon/tv.png
new file mode 100644
index 0000000..9c4490c
--- /dev/null
+++ b/abs/mv-core/hobbitmon/tv.png
Binary files differ