Skip to content
Snippets Groups Projects
Select Git revision
  • 95ff86855fd18b561cbbfb9b5894f4de886dde6a
  • main default
  • hsh-MOODLE_404+
  • hsh_3.10
  • master protected
  • v1.4.7
  • v1.4.6
  • v1.4.5
  • v1.4.3
  • v1.4.1
  • v1.4
  • v1.3r2
  • v1.3
  • v1.2
14 results

index.js

Blame
  • checkbbb.py 4.68 KiB
    #!/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 == 7:
                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]
                allservers.append(hrfields)
                
        return allservers
    
    def generateCheckLine(bbb):
        global totalMeetings
        global totalAttendees
        global totalVideousers
        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 += "[" + bbb["hostname"] + " M:" + bbb["meetings"] + " "
            statusline += "Att:" + bbb["users"] + " "
            statusline += "Vid:" + bbb["videos"] + "]"
        
        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 += "****CORDONED IN SCALELITE**** [" + bbb["hostname"] + " M:" + bbb["meetings"] + " "
            statusline += "Att:" + bbb["users"] + " "
            statusline += "Vid:" + bbb["videos"] + "]"
    
        if bbb["state"] == "disabled" and bbb["status"] == "online":
            checkstate = 1
            statusline  = str(checkstate) + " " + "BBB_" + bbb["hostname"] + " "
            statusline += "numMeetings=" + bbb["meetings"] + "|"
            statusline += "numAttendees=" + bbb["users"] + "|"
            statusline += "numWithVideo=" + bbb["videos"] + " "
            statusline += "****DISABLED IN SCALELITE**** [" + bbb["hostname"] + " M:" + bbb["meetings"] + " "
            statusline += "Att:" + bbb["users"] + " "
            statusline += "Vid:" + bbb["videos"] + "]"
        
        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 += "****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 += "****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 += "****DISABLED IN SCALELITE AND OFFLINE****"
    
        totalMeetings += int(bbb["meetings"])
        totalAttendees += int(bbb["users"])
        totalVideousers += int(bbb["videos"])
    
        return statusline
    
    
    
    # Global metrics
    totalMeetings = 0
    totalAttendees = 0
    totalVideousers = 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 += "[scale001 totals "
    statusline += "M:" + str(totalMeetings) + " "
    statusline += "Att:" + str(totalAttendees) + " "
    statusline += "Vid:" + str(totalVideousers) + "]"
    
    print(statusline)
    overalltext  = "0 BBB_Overall_Attendees count="+str(totalAttendees) + ";200;500 "
    overalltext += str(totalAttendees) 
    print(overalltext)