python-zulip-api/bots/check-rabbitmq-queue
Keegan McAllister d21be42946 [manual] tools: Move check_output into a shared file
We leave the stuff under api/ alone for now, since we need to be able to ship
it as a standalone thing.

tools/post-receive wasn't using the function anyway.

For push to master: Push this commit, update post-receive per instructions at
the top of that file, then push the rest of the branch to confirm that the hook
still works.

No manual instructions for prod.

(imported from commit 9bcbe14c08d15eda47d82f0b702bad33e217a074)
2013-02-20 16:02:30 -05:00

54 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python
import sys
import subprocess
import re
import time
from os import path
sys.path.append(path.join(path.dirname(__file__), '../tools'))
from humbug_tools import check_output
WARN_THRESHOLD = 100
CRIT_THRESHOLD = 200
states = {
0: "OK",
1: "WARNING",
2: "CRITICAL",
3: "UNKNOWN"
}
re = re.compile(r'(\w+)\t(\d+)')
output = check_output(['/usr/sbin/rabbitmqctl', 'list_queues'], shell=False)
status = 0
max_count = 0
warn_queues = []
for line in output.split("\n"):
line = line.strip()
m = re.match(line)
if m:
queue = m.group(1)
count = int(m.group(2))
this_status = 0
if count > CRIT_THRESHOLD:
this_status = 2
warn_queues.append(queue)
elif count > WARN_THRESHOLD:
this_status = max(status, 1)
warn_queues.append(queue)
status = max(status, this_status)
max_count = max(max_count, count)
warn_about = ", ".join(warn_queues)
now = int(time.time())
if status > 0:
print("%s|%s|%s|max count %s, queues affected: %s" % (now, status, states[status], max_count, warn_about))
else:
print("%s|%s|%s|queues normal, max count %s" % (now, status, states[status], max_count))