File: //usr/lib/python2.7/site-packages/lap/failed_migration.py
#!/usr/bin/python
from pymongo import MongoClient
from pymongo import MongoClient
import redis
import datetime
from datetime import timedelta
def migration_report():
client = MongoClient()
db = client.mrq
failed = db.mrq_jobs.find({"status": "failed"}).count()
success = db.mrq_jobs.find({"status": "success"}).count()
started = db.mrq_jobs.find({"status": "started"}).count()
queued = db.mrq_jobs.find({"status": "queued"}).count()
perfdata = []
perfdata.append(("failed", str(failed) ))
perfdata.append(("success", str(success) ))
perfdata.append(("started", str(started) ))
perfdata.append(("queued", str(queued) ))
perfdata = "|".join([ "=".join(x) for x in perfdata])
return perfdata
def __run__(params):
prfdata = migration_report()
r = redis.Redis()
client = MongoClient()
db = client.mrq
dt = datetime.datetime.now()
key = "error:%s:%s:%s:%s" % (dt.year,dt.month,dt.day,dt.hour)
error = int(db.mrq_jobs.find({"status": "failed"}).count())
r.set(key,error)
r.expire(key,86400)
dt_old = dt - timedelta(hours=1)
key_old = "error:%s:%s:%s:%s" % (dt_old.year,dt_old.month,dt_old.day,dt_old.hour)
if r.exists(key_old):
diff_err = int(r.get(key)) - int(r.get(key_old))
if diff_err > params.get("errors_threshold",100):
return [2,"CRITICAL - Too many errors: %d" % diff_err, prfdata]
else:
return [0,"OK - Errors in last hour: %d" % diff_err, prfdata]
return [0,"OK" % prfdata]