mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
40 lines
1.1 KiB
Python
Executable file
40 lines
1.1 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import os
|
|
import socket
|
|
from vendor.munin import MuninPlugin
|
|
|
|
class MuninMemcachedPlugin(MuninPlugin):
|
|
category = "Memcached"
|
|
|
|
def autoconf(self):
|
|
try:
|
|
self.get_stats()
|
|
except socket.error:
|
|
return False
|
|
return True
|
|
|
|
def get_stats(self):
|
|
host = os.environ.get('MEMCACHED_HOST') or '127.0.0.1'
|
|
port = int(os.environ.get('MEMCACHED_PORT') or '11211')
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
s.connect((host, port))
|
|
s.send("stats\n")
|
|
buf = ""
|
|
while 'END\r\n' not in buf:
|
|
buf += s.recv(1024)
|
|
stats = (x.split(' ', 2) for x in buf.split('\r\n'))
|
|
stats = dict((x[1], x[2]) for x in stats if x[0] == 'STAT')
|
|
s.close()
|
|
return stats
|
|
|
|
def execute(self):
|
|
stats = self.get_stats()
|
|
values = {}
|
|
for k, v in self.fields:
|
|
try:
|
|
value = stats[k]
|
|
except KeyError:
|
|
value = "U"
|
|
values[k] = value
|
|
return values
|