Example #1
0
def watch_loop(app):
    
    cloudwatch = get_connection(app)
    while 1:
        status = conf_man.update_creds_from_metadata_server(app)
        if status :
            cloudwatch = get_connection(app)

        for q in app.config["sqs.conn"].get_all_queues():
            q_attr   = q.get_attributes()
            visible  = q_attr['ApproximateNumberOfMessages']
            inflight = q_attr['ApproximateNumberOfMessagesNotVisible']        
            total    = visible+inflight            
            r= cloudwatch.put_metric_data("SQS", 
                                          "ApproximateNumberOfTotalMessages", 
                                          value=total, 
                                          unit="Count",
                                          dimensions = {"QueueName" : q.name})
            logging.debug("[{0}] queue:{1} Total:{2} Visible:{3} Inflight:{4}".format(datetime.now().isoformat(),
                                                                                      q.name,
                                                                                      total,
                                                                                      visible,
                                                                                      inflight))
            print r
        time.sleep(60)
Example #2
0
def watch_loop(app):

    cloudwatch = get_connection(app)
    while 1:
        status = conf_man.update_creds_from_metadata_server(app)
        if status:
            cloudwatch = get_connection(app)

        for q in app.config["sqs.conn"].get_all_queues():
            q_attr = q.get_attributes()
            visible = q_attr['ApproximateNumberOfMessages']
            inflight = q_attr['ApproximateNumberOfMessagesNotVisible']
            total = visible + inflight
            r = cloudwatch.put_metric_data("SQS",
                                           "ApproximateNumberOfTotalMessages",
                                           value=total,
                                           unit="Count",
                                           dimensions={"QueueName": q.name})
            logging.debug(
                "[{0}] queue:{1} Total:{2} Visible:{3} Inflight:{4}".format(
                    datetime.now().isoformat(), q.name, total, visible,
                    inflight))
            print r
        time.sleep(60)
Example #3
0
            if match:
                info[match.group(1)] = float(match.group(2))

    usage = 100 - (info['MemFree'] + info['Buffers'] + info['Cached']) / info['MemTotal'] * 100
    return usage


def user_data():
    user_data = {}
    items = boto.utils.get_instance_userdata().split('&')
    for item in items:
        name, value = item.partition('=')[::2]
        user_data[name] = value
    return user_data


if __name__ == '__main__':
    user_data = user_data()
    metadata = boto.utils.get_instance_metadata()
    instance_id = metadata['instance-id']
    region = metadata['placement']['availability-zone'][0:-1]

    mem_usage = mem_usage()

    metrics = {'MemUsage': mem_usage}
    dimensions = {'instanceId': instance_id, 'env': user_data['env'], 'id': user_data['id'], 'name': user_data['name']}

    cloudwatch = boto.ec2.cloudwatch.connect_to_region(region)
    cloudwatch.put_metric_data(user_data['env'], metrics.keys(), metrics.values(),
                               unit='Percent',
                               dimensions=dimensions)
Example #4
0
    return info['thread_count']


def user_data():
    user_data = {}
    items = boto.utils.get_instance_userdata().split('&')
    for item in items:
        name, value = item.partition('=')[::2]
        user_data[name] = value
    return user_data


if __name__ == '__main__':
    user_data = user_data()
    metadata = boto.utils.get_instance_metadata()
    instance_id = metadata['instance-id']
    region = metadata['placement']['availability-zone'][0:-1]

    heap = heap_usage()
    thread = thread_count()

    metric_keys = ['JavaHeapUsage', 'JavaThreadCount']
    metric_values = [heap, thread]
    metric_units = ['Percent', 'Count']

    dimensions = {'instanceId': instance_id, 'env': user_data['env'], 'id': user_data['id'], 'name': user_data['name']}

    cloudwatch = boto.ec2.cloudwatch.connect_to_region(region)
    cloudwatch.put_metric_data(user_data['env'], metric_keys, metric_values,
                               unit=metric_units,
                               dimensions=dimensions)
Example #5
0
def to_monitor(event, dimensions={}, n=1, unit='Count'):
    if environment.local:
        print('[monitor] {}'.format(event))
    else:
        cloudwatch.put_metric_data('social-shares', event, 
            value=n, unit=unit, dimensions=dimensions)
Example #6
0
        'AWS/EC2',
        'Average',
        dimensions={'InstanceId':instance_id},
        unit='Percent'
    )
    return metric

reservations = ec2.get_all_reservations(filters={'instance-state-name': 'running', 'tag:Usage' : tag})

ave_count = 0
cpu_value = 0

for reservation in reservations:
    for instance in reservation.instances:
        for metric in (metric_series(instance.id)):
            cpu_value = cpu_value + metric['Average']
            ave_count = ave_count + 1

average = cpu_value / ave_count
print ave_count
print cpu_value
print average

cloudwatch.put_metric_data(
    'HPC',
    'CPU',
    value = average,
    timestamp = datetime.datetime.utcnow(),
    unit = 'Percent'
    )