Newer
Older
# 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)
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 += "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
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)