In OpenNMS gibt es zwar auch einen “nativen” Memcached-Monitor – aber dieser funktioniert nur wenn der Memcached direkt über das Netz vom Monitorserver aus erreichbar ist.
Mit der bekannten SNMP-extend Methode lässt sich der Memcached Daemon auch gut via SNMP mit OpenNMS überwachen. Hier nur kurz die wichtigsten Scripte und Schritte:
Service überwachen
Das geht am einfachsten über das “HostResourceSwRunPlugin” Plugin welches die laufenden Prozesse via SNMP überwacht. Zunächst muss der Service überhaupt erkannt werden:
/etc/opennms/capsd-configuration.xml
Dann wird die Überwachung definiert:
/etc/opennms/poller-configuration.xml
...
...
Statistiken
Um noch ein paar Graphen zu generieren werden per SNMP noch die Statusdetails des Memcached Daemons übertragen…
Zunächst brauchen wir ein Script um die Statusdaten vom Memcached zu bekommen:
/etc/snmp/check_memcached.sh
#!/bin/bash
echo -e "stats\nquit" | nc 127.0.0.1 11211 | while read -d $'\r' stat name value;
do
echo $value
done
Das Script “check_memcached.sh” verwendet dann der SNMP-Daemon um die Daten auszulesen und zu übertragen:
/etc/snmp/snmpd.conf
extend memcached /etc/snmp/check_memcached
OpenNMS wird jetzt erweitert um diese Daten zu sammeln:
/etc/opennms/datacollection-config.xml
...
...
memcached-status
...
Jetzt müssen noch die Graphen definiert werden:
/etc/opennms/snmp-graph.properties
report.netsnmp.memcached.hits.name=Memcached hits
report.netsnmp.memcached.hits.columns=mcd-getHits,mcd-getMisses
report.netsnmp.memcached.hits.type=nodeSnmp
report.netsnmp.memcached.hits.command=--title="Memcached hits" \
DEF:hits={rrd1}:mcd-getHits:AVERAGE \
DEF:misses={rrd2}:mcd-getMisses:AVERAGE \
AREA:hits#71A336:"Hits " \
GPRINT:hits:AVERAGE:"Avg \\: %8.2lf " \
GPRINT:hits:MIN:"Min \\: %8.2lf " \
GPRINT:hits:MAX:"Max \\: %8.2lf \\n" \
LINE1:misses#F7AA29:"Misses " \
GPRINT:misses:AVERAGE:"Avg \\: %8.2lf " \
GPRINT:misses:MIN:"Min \\: %8.2lf " \
GPRINT:misses:MAX:"Max \\: %8.2lf \\n"
report.netsnmp.memcached.memoryUsage.name=Memcached Memory Usage
report.netsnmp.memcached.memoryUsage.columns=mcd-bytes,mcd-limitMaxbytes
report.netsnmp.memcached.memoryUsage.type=nodeSnmp
report.netsnmp.memcached.memoryUsage.command=--title="Memcached Memory Usage" \
--vertical-label="Bytes" \
DEF:used={rrd1}:mcd-bytes:AVERAGE \
DEF:max={rrd2}:mcd-limitMaxbytes:AVERAGE \
CDEF:free=max,used,- \
AREA:used#1A37EC:"Used " \
GPRINT:used:AVERAGE:"Avg \\: %8.2lf %s " \
GPRINT:used:MIN:"Min \\: %8.2lf %s " \
GPRINT:used:MAX:"Max \\: %8.2lf %s \\n" \
STACK:free#00CF00:"Free " \
GPRINT:free:AVERAGE:"Avg \\: %8.2lf %s " \
GPRINT:free:MIN:"Min \\: %8.2lf %s " \
GPRINT:free:MAX:"Max \\: %8.2lf %s \\n" \
LINE1:max#000000:"Max " \
GPRINT:max:AVERAGE:"Avg \\: %8.2lf %s " \
GPRINT:max:MIN:"Min \\: %8.2lf %s " \
GPRINT:max:MAX:"Max \\: %8.2lf %s \\n"
Derzeit werden noch mehr Daten aufgezeichnet als überhaupt für die Graphen benötigt werden. Mal sehen ob sich noch weitere sinnvolle Graphen aus den Daten generieren lassen…
3 replies on “OpenNMS: Memcached mit SNMP überwachen”
Schau dir das an …
http://www.opennms.org/wiki/Memcached_Monitor
Du hast den ersten Satz nicht gelesen ;)
verdammt ;-)