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