#!/usr/bin/env python # -*- encoding: utf-8 -*- # # Swift monitoring script for munin # # Copyright © 2012 eNovance # # Author: Julien Danjou # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import sys import json import os import requests try: swift_server = sys.argv[0].split("_", 1)[1] except: print "E: Cannot find server name using script name" sys.exit(1) try: if sys.argv[1] == 'config': print "graph_title Swift object async pending %s" % swift_server print "graph_category swift" print "async_pending.type GAUGE" print "async_pending.label Async pending" print "async_pending.draw AREA" sys.exit(0) except IndexError: pass async_r = requests.get("http://%s:%s/recon/async" \ % (swift_server, os.getenv("SWIFT_OBJECT_PORT", "6000"))) async_r = json.loads(async_r.text)['async_pending'] async_r = int(0 if async_r is None else async_r) print "async_pending.value %d" % async_r