munin-contrib/plugins/other/beanstalkd

61 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import sys
from pystalk import BeanstalkClient
STATES = ['ready', 'reserved', 'urgent', 'delayed', 'buried']
def connect():
return BeanstalkClient(
os.getenv('host', 'localhost'),
os.getenv('port', '11300'),
)
def config():
c = connect()
tubes = c.list_tubes()
print_config(tubes)
def print_config(tubes, graph_title='Beanstalkd jobs', graph_vlabel='count'):
for tube in tubes:
print(f'multigraph job_count_{tube}')
print(f'graph_title {graph_title} ({tube})')
print(f'graph_order {" ".join(STATES)}')
print(f'graph_vlabel {graph_vlabel}')
for state in STATES:
print(f'{state}.label {state}')
print()
def run():
c = connect()
tubes = c.list_tubes()
print_values(tubes, c)
def print_values(tubes, c):
for tube in tubes:
print(f'multigraph job_count_{tube}')
stats = c.stats_tube(tube)
for state in STATES:
key = 'current-jobs-' + state
value = stats[key]
print(f'{state}.value {value}')
print()
def main():
if len(sys.argv) > 1 and sys.argv[1] == "config":
config()
else:
run()
if __name__ == "__main__":
main()