File: //usr/lib/python2.7/site-packages/lap/influxdb_series.py
#!/usr/bin/python
import urllib2
import socket
import json
socket.setdefaulttimeout(15)
def __run__(params):
try:
thresholds = {}
host = params.get("host", "localhost")
port = int(params.get("port", "8086"))
timeout = int(params.get("timeout", "10"))
thresholds["warning"] = int(params.get("warning", "1000000"))
thresholds["critical"] = int(params.get("critical", "2000000"))
except Exception, e:
return [2, "CRITICAL - Error %s" % repr(e)]
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
except Exception, e:
return [2, "CRITICAL - Error %s" % repr(e)]
try:
conn = urllib2.Request("http://%s:%s/debug/vars" % (host, port))
result = urllib2.urlopen(conn, timeout=timeout)
data = json.loads(result.read())
databases = {}
databases["ok"] = []
databases["warning"] = []
databases["critical"] = []
for key, value in data.items():
if key.startswith('database:'):
if value["values"]["numSeries"] >= thresholds["critical"]:
databases["critical"].append("%s:%s" % (key.split(":")[1], value["values"]["numSeries"]))
elif value["values"]["numSeries"] >= thresholds["warning"]:
databases["warning"].append("%s:%s" % (key.split(":")[1], value["values"]["numSeries"]))
else:
databases["ok"].append("%s:%s" % (key.split(":")[1], value["values"]["numSeries"]))
if len(databases["critical"]) > 0:
return [2,'CRITICAL - Series per database: %s' % json.dumps(databases["critical"]) ]
elif len(databases["warning"]) > 0:
return [1, 'WARNING - Series per database: %s' % json.dumps(databases["warning"]) ]
else:
return [0, 'OK - All Series are ok, total: %s database(s)' % len(databases["ok"]) ]
except Exception, e:
return [2, "CRITICAL - %s" % repr(e)]