Example #1
0
def executeServerRequest(socket, parsedMessage):
    if (parsedMessage['command'] == 'get_latest_config'):
        socket.send('config:def')
    elif (parsedMessage['command'] == 'get_latest_values'):
        logging.debug(
            'Received request from the leader for the latest values.')
        latestValues = monitor.getLatestValues()

        socket.send(
            json.dumps({
                'response':
                'latest_values',
                'observerName':
                config.getLocalConfigValue('observerName'),
                'data':
                latestValues
            }))
    elif (parsedMessage['command'] == 'set_leader'):
        collector.leader = parsedMessage['leader']

        socket.send(json.dumps({'response': 'leader_set'}))
    elif (parsedMessage['command'] == 'set_status'):
        status.statusData = parsedMessage['data']

        socket.send(json.dumps({'response': 'status_set'}))
    elif (parsedMessage['command'] == 'set_last_analysis'):
        collector.lastAnalysisTime = time.time() - parsedMessage['duration']

        socket.send(json.dumps({'response': 'last_analysis_set'}))
Example #2
0
def countTargetsByStatus():
    numbers = {'online': 0, 'unstable': 0, 'offline': 0}

    for data in monitor.getLatestValues().values():
        numbers[data['status']] = numbers[data['status']] + 1

    return numbers
Example #3
0
    def status(self):
        statusNumbers = countTargetsByStatus()

        return template.renderTemplate(
            'pages/index.html',
            statusNumbers=statusNumbers,
            observerConnections=collector.getConnectionStatistics(),
            targets=config.getSharedConfigValue('targets'),
            latestValues=monitor.getLatestValues())
Example #4
0
def analyzeTargets():
    collector.lastData = {}
    observers = config.getSharedConfigValue('observers')
    startTime = time.time()

    for name, observerData in observers.items():
        if (name == config.getLocalConfigValue('observerName')):
            collector.lastData[name] = monitor.getLatestValues()
        elif (name in collector.connections):
            connection = collector.connections[name]
            connection.send(json.dumps({'command': 'get_latest_values'}))

    waitForData = True
    complete = False
    counter = 0
    while (waitForData):
        if (len(collector.lastData) == len(observers)):
            logging.debug('Got all data responses from observers.')

            complete = True
            waitForData = False

        time.sleep(0.2)
        counter = counter + 1

        if (counter > 50):
            logging.error(
                'Not all observers sent their latest usage data. Process will continue without the data.'
            )
            waitForData = False

    logging.debug('Group the data to start the analysis.')
    dataByTarget = groupDataByTarget()

    logging.debug('Analyze the grouped data.')
    analyzeData(dataByTarget)

    switchLeader(startTime)
Example #5
0
 def status(self):
     return {
         'lastCheck': monitor.lastCheck,
         'nextCheck': monitor.nextCheck,
         'status': monitor.getLatestValues()
     }