Skip to content
Snippets Groups Projects
checkbbb.py 5.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/python3
    
    
    # This plugin is based on:
    
    # checkbbb.py
    # Frank Schiebel frank@linuxmuster.net
    # GPL v3
    #
    
    # Adapted by the folks at Hochschule Hannover :-)
    
    
    import os
    import sys
    import socket
    import re
    import hashlib
    import requests
    from collections import defaultdict
    from xml.dom.minidom import parse, parseString
    
    def getStatus():
        stream = os.popen('/usr/bin/docker exec  scalelite-api  ./bin/rake status')
        stream = stream.read()
        allservers = []
        for line in stream.splitlines():
            fields = re.split(r'\s',line)
            fields = list(filter(None, fields))
            numfields = len(fields)
    
    
            if numfields == 8:
    
                hrfields = {}
                fields[0] = re.split(r'\.',fields[0])[0]
                hrfields["hostname"] = fields[0]
                hrfields["state"] = fields[1]
                hrfields["status"] = fields[2]
                hrfields["meetings"] = fields[3]
                hrfields["users"] = fields[4]
                hrfields["largestmeeting"] = fields[5]
                hrfields["videos"] = fields[6]
    
                hrfields["load"] = fields[7]
    
                allservers.append(hrfields)
                
        return allservers
    
    def generateCheckLine(bbb):
        global totalMeetings
        global totalAttendees
        global totalVideousers
    
        global totalLoad
    
        global avgVideoPerMeeting
        checkstate = 0 
        statusline = ""
    
    
        if bbb["state"] == "enabled" and bbb["status"] == "online":
    
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=" + bbb["meetings"] + "|"
            statusline += "numAttendees=" + bbb["users"] + "|"
    
            statusline += "numWithVideo=" + bbb["videos"] + "|"
            statusline += "numLoad=" + bbb["load"] + " "
    
            statusline += "[" + bbb["hostname"] + " M:" + bbb["meetings"] + " "
            statusline += "Att:" + bbb["users"] + " "
    
            statusline += "Vid:" + bbb["videos"] + " "
            statusline += "Load:" + bbb["load"] + "]"
    
        if bbb["state"] == "cordoned" and bbb["status"] == "online":
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=" + bbb["meetings"] + "|"
            statusline += "numAttendees=" + bbb["users"] + "|"
    
            statusline += "numWithVideo=" + bbb["videos"] + "|"
            statusline += "numLoad=" + bbb["load"] + " "
    
            statusline += "****CORDONED IN SCALELITE**** [" + bbb["hostname"] + " M:" + bbb["meetings"] + " "
            statusline += "Att:" + bbb["users"] + " "
    
            statusline += "Vid:" + bbb["videos"] + " "
            statusline += "Load:" + bbb["load"] + "]"
    
        if bbb["state"] == "disabled" and bbb["status"] == "online":
    
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=" + bbb["meetings"] + "|"
            statusline += "numAttendees=" + bbb["users"] + "|"
    
            statusline += "numWithVideo=" + bbb["videos"] + "|"
            statusline += "numLoad=" + bbb["load"] + " "
    
            statusline += "****DISABLED IN SCALELITE**** [" + bbb["hostname"] + " M:" + bbb["meetings"] + " "
            statusline += "Att:" + bbb["users"] + " "
    
            statusline += "Vid:" + bbb["videos"] + " "
            statusline += "Load:" + bbb["load"] + "]"
    
        
        if bbb["state"] == "enabled" and bbb["status"] == "offline":
            checkstate = 2
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=0|"
            statusline += "numAttendees=0|"
    
            statusline += "numWithVideo=0|"
            statusline += "numLoad=0 "
    
            statusline += "****ENABLED BUT OFFLINE****" 
        
    
        if bbb["state"] == "cordoned" and bbb["status"] == "offline":
            checkstate = 2
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=0|"
            statusline += "numAttendees=0|"
    
            statusline += "numWithVideo=0|"
            statusline += "numLoad=0 "
    
            statusline += "****CORDONED IN SCALELITE AND OFFLINE****"
    
    
        if bbb["state"] == "disabled" and bbb["status"] == "offline":
            checkstate = 1
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=0|"
            statusline += "numAttendees=0|"
    
            statusline += "numWithVideo=0|"
            statusline += "numLoad=0 "
    
            statusline += "****DISABLED IN SCALELITE AND OFFLINE****"
    
    
        totalMeetings += int(bbb["meetings"])
        totalAttendees += int(bbb["users"])
        totalVideousers += int(bbb["videos"])
    
        totalLoad += float(bbb["load"])
    
    
        return statusline
    
    
    
    # Global metrics
    totalMeetings = 0
    totalAttendees = 0
    totalVideousers = 0
    
    totalLoad = 0.0
    
    allservers = getStatus()
    
    for bbb in allservers:
        print(generateCheckLine(bbb))
    
    
    statusline  = "0 BBBSCL_" + socket.gethostname() + " "
    statusline += "numMeetings=" + str(totalMeetings) + "|"
    statusline += "numAttendees=" + str(totalAttendees) + "|"
    
    statusline += "numWithVideo=" + str(totalVideousers) + "|"
    statusline += "numTotalLoad=" + str(totalLoad) + " "
    
    statusline += "[scalelite totals "
    
    statusline += "M:" + str(totalMeetings) + " "
    statusline += "Att:" + str(totalAttendees) + " "
    
    statusline += "Vid:" + str(totalVideousers) + " "
    
    statusline += "Load:" + str(totalLoad) + "]"
    
    
    print(statusline)
    overalltext  = "0 BBB_Overall_Attendees count="+str(totalAttendees) + ";200;500 "
    overalltext += str(totalAttendees) 
    print(overalltext)