d21be42946
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)
54 lines
1.2 KiB
Python
Executable file
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))
|