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