mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
00b67dad76
commit
11d9b90be7
62
plugins/other/hookbox
Executable file
62
plugins/other/hookbox
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import urllib
|
||||||
|
import urllib2
|
||||||
|
|
||||||
|
from munin import MuninPlugin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class HookboxPlugin(MuninPlugin):
|
||||||
|
title = 'hookbox'
|
||||||
|
args = "--base 1000"
|
||||||
|
vlabel = "Y"
|
||||||
|
info = "Subscibed users"
|
||||||
|
scale = False
|
||||||
|
|
||||||
|
def get_channels(self):
|
||||||
|
return os.environ.get('HOOKBOX_CHANNELS', '').split(',')
|
||||||
|
|
||||||
|
def get_url(self):
|
||||||
|
return os.environ.get('HOOKBOX_URL', 'http://localhost:8001/rest')
|
||||||
|
|
||||||
|
def get_secret(self):
|
||||||
|
return os.environ.get('HOOKBOX_SECRET', '')
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fields(self):
|
||||||
|
return (
|
||||||
|
(channel, dict(
|
||||||
|
label=channel,
|
||||||
|
info="%s - users" % channel,
|
||||||
|
type="GAUGE",
|
||||||
|
))
|
||||||
|
for channel in self.get_channels()
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_channel_info(self, channel_name):
|
||||||
|
values = {
|
||||||
|
'channel_name': channel_name,
|
||||||
|
'secret': self.get_secret(),
|
||||||
|
}
|
||||||
|
req = urllib2.Request("%s/get_channel_info?%s" % (self.get_url(), urllib.urlencode(values)))
|
||||||
|
resp = urllib2.urlopen(req)
|
||||||
|
return json.loads(resp.read())
|
||||||
|
|
||||||
|
def get_subscribers(self, channel_name):
|
||||||
|
try:
|
||||||
|
return len(self.get_channel_info(channel_name)[1]['subscribers'])
|
||||||
|
except (urllib2.URLError, KeyError), e:
|
||||||
|
return 'U'
|
||||||
|
|
||||||
|
def execute(self):
|
||||||
|
return dict(
|
||||||
|
(channel_name, self.get_subscribers(channel_name))
|
||||||
|
for channel_name in self.get_channels()
|
||||||
|
)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
HookboxPlugin().run()
|
Loading…
Reference in New Issue
Block a user