def initiate(): # Boot first machines if not active: stack = openstack() backends = stack.backends() # Gathering first data data = {} data['acu'] = hastats.get_backend_cum_requests()['stot'] data['diff'] = 0 data['diffpt'] = 0 data['date'] = datetime.datetime.now() data['active'] = len( stack.active_backends()) #len(hastats.get_backends_up()) data['haactive'] = len(hastats.get_backends_up()) data['needed'] = None data['epoch'] = (datetime.datetime.now() - epoch_start).seconds metrics.append(data) print metrics time.sleep(sleeptime) last = data data = {} data['acu'] = hastats.get_backend_cum_requests()['stot'] data['diff'] = int( (float(data['acu']) - float(last['acu'])) / float(sleeptime)) data['diffpt'] = data['diff'] * sleeptime data['date'] = datetime.datetime.now() data['needed'] = needed_servers(acu=data['acu'], diff=data['diff']) data['active'] = len( stack.active_backends()) #len(hastats.get_backends_up()) data['haactive'] = len(hastats.get_backends_up()) data['epoch'] = (datetime.datetime.now() - epoch_start).seconds metrics.append(data) time.sleep(sleeptime)
def initiate(): # Boot first machines if not active: stack = openstack() backends = stack.backends() # Gathering first data data = {} data['acu'] = hastats.get_backend_cum_requests()['stot'] data['diff'] = 0 data['diffpt'] = 0 data['date'] = datetime.datetime.now() data['active'] = len(stack.active_backends())#len(hastats.get_backends_up()) data['haactive'] = len(hastats.get_backends_up()) data['needed'] = None data['epoch'] = (datetime.datetime.now()-epoch_start).seconds metrics.append(data) print metrics time.sleep(sleeptime) last = data data = {} data['acu'] = hastats.get_backend_cum_requests()['stot'] data['diff'] = int((float(data['acu']) - float(last['acu'])) / float(sleeptime)) data['diffpt'] = data['diff'] * sleeptime data['date'] = datetime.datetime.now() data['needed'] = needed_servers(acu=data['acu'], diff=data['diff']) data['active'] = len(stack.active_backends())#len(hastats.get_backends_up()) data['haactive'] = len(hastats.get_backends_up()) data['epoch'] = (datetime.datetime.now()-epoch_start).seconds metrics.append(data) time.sleep(sleeptime)
def main(): # Starting the first time # getting current cum connections try: if not metrics: print("Gathering initial data...") # Gathering first data initiate() while True: current = new_metrics(hastats.get_backend_cum_requests()['stot']) print metrics[-1] print "Needed servers: %s" % str( needed_servers(diff=current['diff'])) # What to do? Scale up/down or are we happy? stack = openstack() active_backends = stack.active_backends() up_backends = hastats.get_backends_up() needed = needed_servers(diff=current['diff']) if needed > len(active_backends): print "Scaling up" scale_up(needed - len(active_backends)) elif needed < len(active_backends): print "Scaling down" if not scale_down(Needed=needed): print "Lowest number" else: # Sleeping print "Sleeping one more round" if update_conf(): print "HAproxy config reloaded" print ha_last_reload for line in hastats.get_stat_backends(): print line['svname'] + ', ' + line['status'] time.sleep(sleeptime) except KeyboardInterrupt: write_data()
def main(): # Starting the first time # getting current cum connections try: if not metrics: print("Gathering initial data...") # Gathering first data initiate() while True: current = new_metrics(hastats.get_backend_cum_requests()['stot']) print metrics[-1] print "Needed servers: %s" % str(needed_servers(diff=current['diff'])) # What to do? Scale up/down or are we happy? stack = openstack() active_backends = stack.active_backends() up_backends = hastats.get_backends_up() needed = needed_servers(diff=current['diff']) if needed > len(active_backends): print "Scaling up" scale_up(needed-len(active_backends)) elif needed < len(active_backends): print "Scaling down" if not scale_down(Needed=needed): print "Lowest number" else: # Sleeping print "Sleeping one more round" if update_conf(): print "HAproxy config reloaded" print ha_last_reload for line in hastats.get_stat_backends(): print line['svname'] + ', ' + line['status'] time.sleep(sleeptime) except KeyboardInterrupt: write_data()
def new_metrics(current_cumulated, hareset=False): global ha_reloaded global ha_last_reload current = {} current['acu'] = current_cumulated current['date'] = datetime.datetime.now() if ha_reloaded: last_cumulated = 0 difference = int(ceil((float(current_cumulated) - float(last_cumulated)) \ / float((current['date'] - ha_last_reload).seconds))) diffpt = int(difference) * (current['date'] - ha_last_reload).seconds try: print "Current new cumulated connections: %s" % str(current_cumulated) print "Calculation: float(%s) - float(%s) / float(%s-%s.seconds (%s))" % \ (str(current_cumulated), metrics[-1]['acu'], str(current['date']), str(metrics[-1]['date']),\ str((current['date'] - metrics[-1]['date']).seconds)) if ha_reloaded: current['diff'] = difference current['diffpt'] = diffpt ha_reloaded = False else: current['diff'] = int(ceil((float(current_cumulated) - float(metrics[-1]['acu'])) \ / float((current['date']-metrics[-1]['date']).seconds))) current['diffpt'] = current['diff'] * (current['date'] - metrics[-1]['date']).seconds except ZeroDivisionError: current['diff'] = 0 stack = openstack() current['needed'] = needed_servers(acu=current['acu'], diff=current['diff']) current['active'] = len( stack.active_backends()) #len(hastats.get_backends_up()) current['haactive'] = len(hastats.get_backends_up()) current['epoch'] = (datetime.datetime.now() - epoch_start).seconds metrics.append(current) return current
def new_metrics(current_cumulated, hareset=False): global ha_reloaded global ha_last_reload current = {} current['acu'] = current_cumulated current['date'] = datetime.datetime.now() if ha_reloaded: last_cumulated = 0 difference = int(ceil((float(current_cumulated) - float(last_cumulated)) \ / float((current['date'] - ha_last_reload).seconds))) diffpt = int(difference) * (current['date'] - ha_last_reload).seconds try: print "Current new cumulated connections: %s" % str(current_cumulated) print "Calculation: float(%s) - float(%s) / float(%s-%s.seconds (%s))" % \ (str(current_cumulated), metrics[-1]['acu'], str(current['date']), str(metrics[-1]['date']),\ str((current['date'] - metrics[-1]['date']).seconds)) if ha_reloaded: current['diff'] = difference current['diffpt'] = diffpt ha_reloaded = False else: current['diff'] = int(ceil((float(current_cumulated) - float(metrics[-1]['acu'])) \ / float((current['date']-metrics[-1]['date']).seconds))) current['diffpt'] = current['diff'] * (current['date']-metrics[-1]['date']).seconds except ZeroDivisionError: current['diff'] = 0 stack = openstack() current['needed'] = needed_servers(acu=current['acu'], diff=current['diff']) current['active'] = len(stack.active_backends())#len(hastats.get_backends_up()) current['haactive'] = len(hastats.get_backends_up()) current['epoch'] = (datetime.datetime.now()-epoch_start).seconds metrics.append(current) return current