Added some sys admin scripts in progress
parent
be510587ff
commit
08528fe352
|
@ -0,0 +1,76 @@
|
|||
from pprint import pprint
|
||||
import boto
|
||||
|
||||
# connect up parts of the Amazon infrastructure
|
||||
|
||||
ec2 = boto.connect_ec2()
|
||||
cw = boto.connect_cloudwatch()
|
||||
rds = boto.connect_rds()
|
||||
|
||||
def all_instances():
|
||||
reservations = ec2.get_all_instances()
|
||||
instances = [i for r in reservations for i in r.instances]
|
||||
return instances
|
||||
|
||||
def all_zones():
|
||||
print ec2.get_all_zones()
|
||||
|
||||
def all_rds():
|
||||
return rds.get_all_dbinstances()
|
||||
|
||||
def instance(tag_name):
|
||||
try:
|
||||
return ec2.get_all_instances(filters={'tag:Name' : tag_name})[0].instances[0]
|
||||
except Exception, e:
|
||||
return None
|
||||
|
||||
def console_output(instance):
|
||||
"""returnn console output of instance"""
|
||||
try:
|
||||
return instance.get_console_output().output
|
||||
except Exception, e:
|
||||
return None
|
||||
|
||||
def instance_metrics(instance):
|
||||
"""metrics that apply to given instance"""
|
||||
metrics = cw.list_metrics()
|
||||
my_metrics = []
|
||||
|
||||
for metric in metrics:
|
||||
if 'InstanceId' in metric.dimensions:
|
||||
if instance.id in metric.dimensions['InstanceId']:
|
||||
my_metrics.append(metric)
|
||||
|
||||
return my_metrics
|
||||
|
||||
# how to get average CPU utilization of web1?
|
||||
# filter(lambda x: x.name == 'CPUUtilization', m)
|
||||
# metric.query(start_time, end_time,'Average', period=6000)
|
||||
|
||||
def instance_metric(instance, metric_name):
|
||||
m = instance_metrics(instance)
|
||||
return filter(lambda x: x.name == metric_name, m)
|
||||
|
||||
def launch_time(instance):
|
||||
return boto.utils.parse_ts(instance.launch_time)
|
||||
|
||||
def max_cpu(instance):
|
||||
pass
|
||||
|
||||
|
||||
def stats_for_instances(instances=None):
|
||||
"""return basic stats for input instances"""
|
||||
if instances is None:
|
||||
instances = all_instances()
|
||||
stats = []
|
||||
for instance in instances:
|
||||
instance.update() # to get latest update
|
||||
stats.append((instance.id, instance.key_name, instance.state, instance.ip_address, instance.dns_name))
|
||||
|
||||
return stats
|
||||
|
||||
if __name__ == '__main__':
|
||||
pprint (stats_for_instances(all_instances()))
|
||||
web1 = instance('web1')
|
||||
print instance_metrics(web1)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
import threading
|
||||
import datetime
|
||||
|
||||
class ThreadClass(threading.Thread):
|
||||
def run(self):
|
||||
now = datetime.datetime.now()
|
||||
print "%s says Hello World at time: %s" % (self.getName(), now)
|
||||
|
||||
for i in range(10):
|
||||
t = ThreadClass()
|
||||
t.start()
|
||||
|
Loading…
Reference in New Issue