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)
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)
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)
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)
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)
'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' )