]> git.uio.no Git - uio-zabbix.git/blobdiff - zabbix_memcached_info.py
GID-773 - script for memcached monitoring is added.
[uio-zabbix.git] / zabbix_memcached_info.py
diff --git a/zabbix_memcached_info.py b/zabbix_memcached_info.py
new file mode 100644 (file)
index 0000000..455edfa
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/python2
+import memcache
+import argparse
+import json
+import sys
+import os
+import codecs
+
+def argsv_config():
+    parser = argparse.ArgumentParser()
+    parser.add_argument('-getstats', action='store_true',default=False,dest='getstats', help='Get statistics from memcached server.')
+    parser.add_argument('-lld', action='store_true',default=False,dest='lld', help='Get statistics from memcached server.')
+    parser.add_argument('-memcacheserver', action='store',default="127.0.0.1:11211",dest='memcacheserver', help='memcacheservernavn:portnr, default is 127.0.0.1:11211.')
+    argvs = parser.parse_args()
+    return argvs
+
+if __name__ == '__main__':  
+    argvs = argsv_config()
+    metrics = []
+
+    # ###############################
+    # Connecting to memcache server
+    # ###############################
+    try: 
+       mc = memcache.Client([argvs.memcacheserver],debug=1)
+    except Exception as e:
+        print "Error with connecting memcache server: {0}".format(str(e))
+        sys.exit(1)
+
+    
+    # ###############################
+    # Sending metrics to Zabbix
+    # ###############################
+
+    if argvs.getstats == True:
+        stats = mc.get_stats() 
+        jsondata = stats[0][1]
+        
+        print(json.dumps(jsondata))
+
+    # ###############################
+    # low-level discovery for Zabbix
+    # ###############################
+
+    elif argvs.lld == True:
+        stats = mc.get_stats() 
+        jsondata = stats[0][1]
+        for key in jsondata.keys():
+            if not(key == "version" or key == "libevent"):
+                tmpdict = {"{#MEMCACHE}": "memcache","{#METRIC}":key} 
+                metrics.append(tmpdict)
+        llddata = {"data":metrics}
+        print(json.dumps(llddata))
+