diff --git a/setup.py b/setup.py index 0b6f0ed94b..53b3061cf2 100755 --- a/setup.py +++ b/setup.py @@ -128,7 +128,13 @@ setup( "tools/munin_monitors/postgres_alive", "tools/munin_monitors/redis_alive", "tools/munin_monitors/socketio_alive", - "tools/munin_monitors/taskmanager_alive"]), + "tools/munin_monitors/taskmanager_alive", + "tools/munin_monitors/mongo_btree", + "tools/munin_monitors/mongo_cocnn", + "tools/munin_monitors/mongo_docs", + "tools/munin_monitors/mongo_lock", + "tools/munin_monitors/mongo_mem", + "tools/munin_monitors/mongo_ops"]), ("%s" % munin_plugin_conf_path, ["config/awx_munin_tower_jobs"]), ("%s" % bindir, ["tools/scripts/ansible-tower-service"]), ("%s" % sosconfig, ["tools/sosreport/tower.py"])]), diff --git a/tools/munin_monitors/mongo_conn b/tools/munin_monitors/mongo_conn new file mode 100755 index 0000000000..8e68c99f97 --- /dev/null +++ b/tools/munin_monitors/mongo_conn @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +## GENERATED FILE - DO NOT EDIT + +import urllib2 +import sys +import os +import pymongo + +def getServerStatus(): + host = "127.0.0.1" + port = 27017 + c = pymongo.MongoClient(host, port) + return c.admin.command('serverStatus', workingSet=True) + +name = "connections" + + +def doData(): + print name + ".value " + str( getServerStatus()["connections"]["current"] ) + +def doConfig(): + + print "graph_title MongoDB current connections" + print "graph_args --base 1000 -l 0" + print "graph_vlabel connections" + print "graph_category MongoDB" + + print name + ".label " + name + + + + + + +if __name__ == "__main__": + + from os import environ + if 'HOST' in environ: + host = environ['HOST'] + if 'PORT' in environ: + port = environ['PORT'] + if 'USER' in environ: + user = environ['USER'] + if 'PASSWORD' in environ: + password = environ['PASSWORD'] + +if len(sys.argv) > 1 and sys.argv[1] == "config": + doConfig() +else: + doData() diff --git a/tools/munin_monitors/mongo_docs b/tools/munin_monitors/mongo_docs new file mode 100755 index 0000000000..d03d819b91 --- /dev/null +++ b/tools/munin_monitors/mongo_docs @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +## GENERATED FILE - DO NOT EDIT + +import urllib2 +import sys +import os +import pymongo + +def getServerStatus(): + host = "127.0.0.1" + port = 27017 + c = pymongo.MongoClient(host, port) + return c.admin.command('serverStatus', workingSet=True) + +name = "documents" + + +def doData(): + ss = getServerStatus() + for k,v in ss["metrics"]["document"].iteritems(): + print( str(k) + ".value " + str(v) ) + +def doConfig(): + + print "graph_title MongoDB documents" + print "graph_args --base 1000 -l 0" + print "graph_vlabel documents" + print "graph_category MongoDB" + + for k in getServerStatus()["metrics"]["document"]: + print k + ".label " + k + print k + ".min 0" + print k + ".type COUNTER" + print k + ".max 500000" + print k + ".draw LINE1" + +if __name__ == "__main__": + + from os import environ + if 'HOST' in environ: + host = environ['HOST'] + if 'PORT' in environ: + port = environ['PORT'] + if 'USER' in environ: + user = environ['USER'] + if 'PASSWORD' in environ: + password = environ['PASSWORD'] + +if len(sys.argv) > 1 and sys.argv[1] == "config": + doConfig() +else: + doData() \ No newline at end of file diff --git a/tools/munin_monitors/mongo_mem b/tools/munin_monitors/mongo_mem new file mode 100755 index 0000000000..5b7416212e --- /dev/null +++ b/tools/munin_monitors/mongo_mem @@ -0,0 +1,56 @@ +#!/usr/bin/env python + +## GENERATED FILE - DO NOT EDIT + +import urllib2 +import sys +import os +import pymongo + +def getServerStatus(): + host = "127.0.0.1" + port = 27017 + c = pymongo.MongoClient(host, port) + return c.admin.command('serverStatus', workingSet=True) + +def ok(s): + return s == "resident" or s == "virtual" or s == "mapped" + +def doData(): + for k,v in getServerStatus()["mem"].iteritems(): + if ok(k): + print( str(k) + ".value " + str(v * 1024 * 1024) ) + +def doConfig(): + + print "graph_title MongoDB memory usage" + print "graph_args --base 1024 -l 0 --vertical-label Bytes" + print "graph_category MongoDB" + + for k in getServerStatus()["mem"]: + if ok( k ): + print k + ".label " + k + print k + ".draw LINE1" + + + + + + + +if __name__ == "__main__": + + from os import environ + if 'HOST' in environ: + host = environ['HOST'] + if 'PORT' in environ: + port = environ['PORT'] + if 'USER' in environ: + user = environ['USER'] + if 'PASSWORD' in environ: + password = environ['PASSWORD'] + +if len(sys.argv) > 1 and sys.argv[1] == "config": + doConfig() +else: + doData() diff --git a/tools/munin_monitors/mongo_ops b/tools/munin_monitors/mongo_ops new file mode 100755 index 0000000000..9ed5a24425 --- /dev/null +++ b/tools/munin_monitors/mongo_ops @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +## GENERATED FILE - DO NOT EDIT + +import urllib2 +import sys +import os +import pymongo + +def getServerStatus(): + host = "127.0.0.1" + port = 27017 + c = pymongo.MongoClient(host, port) + return c.admin.command('serverStatus', workingSet=True) + + +def doData(): + ss = getServerStatus() + for k,v in ss["opcounters"].iteritems(): + print( str(k) + ".value " + str(v) ) + +def doConfig(): + + print "graph_title MongoDB ops" + print "graph_args --base 1000 -l 0" + print "graph_vlabel ops / ${graph_period}" + print "graph_category MongoDB" + print "graph_total total" + + for k in getServerStatus()["opcounters"]: + print k + ".label " + k + print k + ".min 0" + print k + ".type COUNTER" + print k + ".max 500000" + print k + ".draw LINE1" + +if __name__ == "__main__": + + from os import environ + if 'HOST' in environ: + host = environ['HOST'] + if 'PORT' in environ: + port = environ['PORT'] + if 'USER' in environ: + user = environ['USER'] + if 'PASSWORD' in environ: + password = environ['PASSWORD'] + +if len(sys.argv) > 1 and sys.argv[1] == "config": + doConfig() +else: + doData()