Snippets

Edel SM Nagios mongodb-query (read) sensor

Created by Edelberto Mania last modified
#!/usr/bin/env python
# mongodb query
# Edelberto Mania <ed@zenoradio.com> 
# 20160118 EST

ok=0		# green, yehey!
warning=1	# yellow, warning
critical=2	# red, critical

# threshold in seconds - to be deliberated by sysadmins
warning_threshold=1
critical_threshold=2

# do we want output of db query?
db_output_printed=False

import os,sys
from pymongo import MongoClient # yum install python-pymongo
from timeit import timeit

class devnull():
	def write(*args):pass

def mongo_query(mongodb_server,mongodb_port):
	if not db_output_printed:
		t=sys.stdout
		sys.stdout=devnull()
	client=MongoClient(mongodb_server,mongodb_port)
	db=client.zenoradio
	for i in db.HostSession.find().limit(10):print(i)
	if not db_output_printed:sys.stdout=t

def return_status(elapsed):
	if elapsed>=critical_threshold:return critical
	if elapsed>=warning_threshold:return warning
	return ok

if __name__=='__main__':
	elapsed_time_in_seconds=timeit("mongo_query('172.x.x.x',27017)",number=1,setup="from __main__ import mongo_query")
	print("MongoDB sample Query time: {0:.4f} secs|dbtime={0:.4f}".format(elapsed_time_in_seconds))
	sys.exit(return_status(elapsed_time_in_seconds))


Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.