File: //usr/lib/python2.7/site-packages/lap/redis_ping.py
import socket
socket.setdefaulttimeout(5)
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
def __run__(params):
try:
host = params.get("host", "localhost")
port = int(params.get("port", "6379"))
redismode = params.get("mode", "server")
except Exception, e:
return [2, "CRITICAL - Error: %s" % repr(e)]
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
if params.get("passwd"):
sock.send("AUTH %s\r\n" % params.get("passwd"))
sock.send("INFO\r\n")
except socket.error, e:
return [2, "CRITICAL - Error: %s" % repr(e)]
except Exception, e:
return [2, "CRITICAL - Error: %s" % repr(e)]
try:
buff = StringIO()
while True:
buff.write(sock.recv(4096))
if buff.getvalue()[-1:] == "\n":
sock.close()
break
stats = dict([(line.split(":")[0].strip(), line.split(":")[1].strip()) for line in buff.getvalue().splitlines() \
if line.strip() and ":" in line and not line.startswith("(error)") and line != "OK"])
if redismode == "sentinel":
return [0, "OK - redis version '%s'; role '%s'; redis master: '%s'" % \
(stats.get("redis_version", "UNKNOWN"), stats.get("redis_mode", "UNKNOWN"), stats.get("master0", "UNKNOWN"))]
else:
return [0, "OK - redis version '%s'; role '%s'; used memory '%s'" % \
(stats.get("redis_version", "UNKNOWN"), stats.get("role", "UNKNOWN"), stats.get("used_memory_human", "UNKNOWN"))]
except Exception, e:
return [2, "CRITICAL - Error: %s" % repr(e)]