From b49d28ecf3c8a06950252fff2fff15bda5758664 Mon Sep 17 00:00:00 2001 From: Eric Renfro Date: Mon, 15 Jul 2013 11:17:26 -0400 Subject: [PATCH] Added NTP template, updates, new memcached.trap.py --- scripts/memcached.trap.py | 125 ++++++++++++++++++ scripts/{ntpcheck.sh => ntpcheck.trap.sh} | 0 templates/Template_NTP.xml | 149 ++++++++++++++++++++++ 3 files changed, 274 insertions(+) create mode 100755 scripts/memcached.trap.py rename scripts/{ntpcheck.sh => ntpcheck.trap.sh} (100%) create mode 100644 templates/Template_NTP.xml diff --git a/scripts/memcached.trap.py b/scripts/memcached.trap.py new file mode 100755 index 0000000..64b101d --- /dev/null +++ b/scripts/memcached.trap.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# + +from subprocess import call +from telnetlib import Telnet +from tempfile import NamedTemporaryFile + + +# memcached server to check +MEMCACHED_SERVER = '127.0.0.1' +MEMCACHED_PORT = 11211 +# containing zabbix_sender configuration +ZABBIX_CONFIG = '/etc/zabbix/zabbix_sender.conf' +LOGFILE = '/tmp/zabbix_memcached.log' + + +ITEMS = ( + 'bytes', + 'cmd_get', + 'cmd_set', + 'curr_items', + 'curr_connections', + 'limit_maxbytes', + 'uptime', + 'get_hits', + 'get_misses', +) + + +######################################################################## +class Item(object): + """Simple data container""" + + #---------------------------------------------------------------------- + def __init__(self, key, value): + self.key = key + self.value = value + + +######################################################################## +class MemcachedStatsReader(object): + """""" + + #---------------------------------------------------------------------- + def __init__(self, server, port): + self._server = server + self._port = port + self._stats_raw = None + self._stats = None + + #---------------------------------------------------------------------- + def read(self): + self._read_stats() + self._parse_stats() + return self._stats + + #---------------------------------------------------------------------- + def _read_stats(self): + connection = Telnet(self._server, self._port) + connection.write('stats\n') + connection.write('quit\n') + self._stats_raw = connection.read_all() + + #---------------------------------------------------------------------- + def _parse_stats(self): + self._stats = list() + for line in self._stats_raw.splitlines(): + if not line.startswith('STAT'): + continue + parts = line.split() + if not parts[1] in ITEMS: + continue + item = Item(parts[1], parts[2]) + self._stats.append(item) + + +######################################################################## +class ZabbixSender(object): + """""" + + #---------------------------------------------------------------------- + def __init__(self, config, logfile): + self._config = config + self._logfile = logfile + self._tempfile = None + + #---------------------------------------------------------------------- + def send(self, stats): + self._print_items + #self._write_temporary_file(stats) + #self._send_data_to_zabbix() + + def _print_items(self, stats): + for item in stats: + print "- memcached[%s] %s\n" % (item.key, item.value) + + #---------------------------------------------------------------------- + def _write_temporary_file(self, stats): + self._tempfile = NamedTemporaryFile() + for item in stats: + self._tempfile.write(u'- memcached[%s] %s\n' % (item.key, item.value)) + + self._tempfile.flush() + + #---------------------------------------------------------------------- + def _send_data_to_zabbix(self): + cmd = [u'zabbix_sender', u'-c', self._config, u'-i', self._tempfile.name] + logfile = open(self._logfile, 'a') + call(cmd, stdout=logfile) + logfile.close() + self._tempfile.close() + + +#---------------------------------------------------------------------- +def main(): + reader = MemcachedStatsReader(MEMCACHED_SERVER, MEMCACHED_PORT) + items = reader.read() + + sender = ZabbixSender(ZABBIX_CONFIG, LOGFILE) + sender.send(items) + + +if __name__ == '__main__': + main() diff --git a/scripts/ntpcheck.sh b/scripts/ntpcheck.trap.sh similarity index 100% rename from scripts/ntpcheck.sh rename to scripts/ntpcheck.trap.sh diff --git a/templates/Template_NTP.xml b/templates/Template_NTP.xml new file mode 100644 index 0000000..599e1c6 --- /dev/null +++ b/templates/Template_NTP.xml @@ -0,0 +1,149 @@ + + + 2.0 + 2013-07-15T14:45:14Z + + + Templates + + + + + +