pants build system
This commit is contained in:
parent
f2c4604476
commit
f8e52b1d06
20
mprom/BUILD
Normal file
20
mprom/BUILD
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# vim: syntax=python:expandtab:shiftwidth=2:softtabstop=2:tabstop=2
|
||||||
|
python_binary(
|
||||||
|
name='mumble-prometheus',
|
||||||
|
dependencies=[
|
||||||
|
':murmur',
|
||||||
|
':ext-deps',
|
||||||
|
],
|
||||||
|
source='server.py',
|
||||||
|
)
|
||||||
|
python_library(
|
||||||
|
name='murmur',
|
||||||
|
sources=['Murmur.py', 'Murmur_ice.py'],
|
||||||
|
)
|
||||||
|
python_requirement_library(
|
||||||
|
name='ext-deps',
|
||||||
|
requirements=[
|
||||||
|
python_requirement('prometheus-client>=0.0.13'),
|
||||||
|
python_requirement('zeroc-ice>=3.6.2.1'),
|
||||||
|
]
|
||||||
|
)
|
|
@ -5,15 +5,26 @@ import sys
|
||||||
import prometheus_client as node
|
import prometheus_client as node
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
import argparse, time
|
import argparse, time, logging
|
||||||
import Ice, Murmur
|
import Ice, Murmur
|
||||||
|
|
||||||
|
logger = logging.getLogger('mumble-prometheus')
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def ice_connect(host, port):
|
def ice_connect(host, port, secret=None):
|
||||||
prxstr = "Meta:tcp -h %s -p %d -t 1000" % (host, port)
|
prxstr = "Meta:tcp -h %s -p %d -t 1000" % (host, port)
|
||||||
|
|
||||||
ic = Ice.initialize(sys.argv)
|
props = Ice.createProperties(sys.argv)
|
||||||
|
props.setProperty("Ice.ImplicitContext", "Shared")
|
||||||
|
props.setProperty('Ice.Default.EncodingVersion', '1.0')
|
||||||
|
|
||||||
|
idata = Ice.InitializationData()
|
||||||
|
idata.properties = props
|
||||||
|
|
||||||
|
ic = Ice.initialize(idata)
|
||||||
|
if secret:
|
||||||
|
ic.getImplicitContext().put("secret", secret)
|
||||||
|
|
||||||
base = ic.stringToProxy(prxstr)
|
base = ic.stringToProxy(prxstr)
|
||||||
meta = Murmur.MetaPrx.checkedCast(base)
|
meta = Murmur.MetaPrx.checkedCast(base)
|
||||||
if not meta:
|
if not meta:
|
||||||
|
@ -32,6 +43,8 @@ def main():
|
||||||
parser.add_argument('-H', '--host', help='Host of the Ice interface', default='127.0.0.1')
|
parser.add_argument('-H', '--host', help='Host of the Ice interface', default='127.0.0.1')
|
||||||
parser.add_argument('-p', '--port', help='Port of the Ice interface', default=6502, type=int)
|
parser.add_argument('-p', '--port', help='Port of the Ice interface', default=6502, type=int)
|
||||||
parser.add_argument('-i', '--interval', help='Interval in seconds', default=60, type=int)
|
parser.add_argument('-i', '--interval', help='Interval in seconds', default=60, type=int)
|
||||||
|
parser.add_argument('--secret', help='The read secret', default=None)
|
||||||
|
parser.add_argument('-v', '--verbose', help='Verbose', action='store_true')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
node.start_http_server(args.listen)
|
node.start_http_server(args.listen)
|
||||||
|
@ -43,14 +56,24 @@ def main():
|
||||||
['ice_server', 'server_id']),
|
['ice_server', 'server_id']),
|
||||||
}
|
}
|
||||||
|
|
||||||
ice_server = '%s:%d' % (ags.host, args.port)
|
if args.verbose:
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
else:
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
ice_server = '%s:%d' % (args.host, args.port)
|
||||||
|
with ice_connect(args.host, args.port, args.secret) as meta:
|
||||||
while True:
|
while True:
|
||||||
|
logger.info('gathering info')
|
||||||
t1 = time.time()
|
t1 = time.time()
|
||||||
with ice_connect(args.host, args.port) as meta:
|
|
||||||
for server in meta.getBootedServers():
|
for server in meta.getBootedServers():
|
||||||
|
g_user = len(server.getUsers())
|
||||||
|
g_uptime = server.getUptime()
|
||||||
|
logger.debug('mumble_user_connected: %d' % g_user)
|
||||||
|
logger.debug('mumble_uptime: %d' % g_uptime)
|
||||||
labels = {'server_id': server.id(), 'ice_server': ice_server}
|
labels = {'server_id': server.id(), 'ice_server': ice_server}
|
||||||
gauges['users'].labels(labels).set(len(server.getUsers()))
|
gauges['users'].labels(labels).set(g_user)
|
||||||
gauges['uptime'].labels(labels).set(server.getUptime())
|
gauges['uptime'].labels(labels).set(g_uptime)
|
||||||
|
|
||||||
time_to_wait = args.interval - (time.time() - t1)
|
time_to_wait = args.interval - (time.time() - t1)
|
||||||
if time_to_wait > 0:
|
if time_to_wait > 0:
|
||||||
|
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
prometheus-client==0.0.13
|
||||||
|
zeroc-ice==3.6.2.1
|
Loading…
Reference in a new issue