Added NTP template, updates, new memcached.trap.py
This commit is contained in:
parent
db47e1d472
commit
b49d28ecf3
3 changed files with 274 additions and 0 deletions
125
scripts/memcached.trap.py
Executable file
125
scripts/memcached.trap.py
Executable file
|
@ -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()
|
149
templates/Template_NTP.xml
Normal file
149
templates/Template_NTP.xml
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<zabbix_export>
|
||||||
|
<version>2.0</version>
|
||||||
|
<date>2013-07-15T14:45:14Z</date>
|
||||||
|
<groups>
|
||||||
|
<group>
|
||||||
|
<name>Templates</name>
|
||||||
|
</group>
|
||||||
|
</groups>
|
||||||
|
<templates>
|
||||||
|
<template>
|
||||||
|
<template>Template NTP</template>
|
||||||
|
<name>Template NTP</name>
|
||||||
|
<groups>
|
||||||
|
<group>
|
||||||
|
<name>Templates</name>
|
||||||
|
</group>
|
||||||
|
</groups>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>NTP</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<items>
|
||||||
|
<item>
|
||||||
|
<name>NTP Offset</name>
|
||||||
|
<type>2</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<multiplier>0</multiplier>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>ntp.offset</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<history>30</history>
|
||||||
|
<trends>90</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>0</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<delta>0</delta>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<formula>1</formula>
|
||||||
|
<delay_flex/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<data_type>0</data_type>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>NTP</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>NTP Peers</name>
|
||||||
|
<type>2</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<multiplier>0</multiplier>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>ntp.peers</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<history>30</history>
|
||||||
|
<trends>90</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<delta>0</delta>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<formula>1</formula>
|
||||||
|
<delay_flex/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<data_type>0</data_type>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>NTP</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>NTP Stratum</name>
|
||||||
|
<type>2</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<multiplier>0</multiplier>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>ntp.stratum</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<history>30</history>
|
||||||
|
<trends>90</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<delta>0</delta>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<formula>1</formula>
|
||||||
|
<delay_flex/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<data_type>0</data_type>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>NTP</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
</item>
|
||||||
|
</items>
|
||||||
|
<discovery_rules/>
|
||||||
|
<macros/>
|
||||||
|
<templates/>
|
||||||
|
<screens/>
|
||||||
|
</template>
|
||||||
|
</templates>
|
||||||
|
</zabbix_export>
|
Loading…
Reference in a new issue