Created
March 2, 2011 12:36
-
-
Save revolunet/850858 to your computer and use it in GitHub Desktop.
graphs your django model instances with munin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# | |
# Author : Julien Bouquillon ([email protected]) - revolunet team | |
# | |
# this munin plugin generate graphs with evolution of all registered django models | |
# install : copy, chmod +x then ln -s in /etc/munin/plugins | |
# | |
# project root | |
import sys | |
BASE_DIR = '/home/django/quickprez_vhosts/beta/djangoapp' | |
sys.path.insert(0, BASE_DIR) | |
import settings | |
sys.path.insert(0, settings.DJANGO_SOURCE) | |
# setup environ | |
from django.core.management import setup_environ | |
setup_environ(settings) | |
def iterateModels(): | |
from django.db.models.loading import cache | |
for app in cache.get_apps(): | |
app_label = app.__name__.split('.')[-2] | |
for model in cache.get_models( app ): | |
#print app_label, model.__name__ | |
yield app, model | |
def run(): | |
apps = {} | |
for app, model in iterateModels(): | |
app_label = app.__name__.split('.')[-2] | |
if not apps.has_key( app_label ): | |
apps[app_label] = {} | |
apps[app_label][model.__name__ ] = 0 | |
nb = model.objects.count() | |
print "%s_%s.value %s" % (app_label, model.__name__ , nb) | |
run() | |
if len(sys.argv)==2 and sys.argv[1] == 'config': | |
import os | |
bname = os.path.basename(sys.argv[0]) | |
print """graph_title Django models %s | |
graph_vlabel count | |
graph_category Django | |
graph_info Stats Django models %s""" % (bname, bname) | |
for app, model in iterateModels(): | |
app_label = app.__name__.split('.')[-2] | |
print "%s_%s.label %s_%s" % (app_label, model.__name__, app_label, model.__name__) | |
print "%s_%s.info %s_%s count" % (app_label, model.__name__, app_label, model.__name__) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment