加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

aws 预留实例到期监控

发布时间:2020-12-20 12:57:56 所属栏目:Python 来源:网络整理
导读:环境准备 安装python的aws 开发工具包 pip install boto3 配置aws账号 [[email?protected] service]# aws configureAWS Access Key ID [None]: xxxxxxAWS Secret Access Key [None]: xxxxxDefault region name [None]:Default output format [None]: 监控脚

环境准备

安装python的aws 开发工具包

pip install boto3

配置aws账号

[[email?protected] service]# aws configure
AWS Access Key ID [None]: xxxxxx
AWS Secret Access Key [None]: xxxxx
Default region name [None]:
Default output format [None]:

监控脚本:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import boto3,os
import datetime
from ReservedInstancesMonitor_message import *
def reserved_instances_info():
    data=response[ReservedInstances]
    #send_message=""
    reserved_instances_number=0
    for info in data:
        #购买时长
        purchase_time=info[Duration]
        #购买起始时间
        purchase_start_time=info[Start]
        #print(purchase_time,purchase_start_time)
        #获取当前时间
        current_time=datetime.datetime.now()
        #print(current_time)
        #获取过期时间
        retired_time=datetime.datetime.strptime( str(purchase_start_time).split(+)[0],"%Y-%m-%d %H:%M:%S.%f") + datetime.timedelta(seconds=purchase_time)
        #剩余过期时间
        retired_left_time=(retired_time -current_time).days
        if retired_left_time <= 7:
           #send_message +=info[‘InstanceType‘] +" "+str(info[‘InstanceCount‘])+"n"
            reserved_instances_number+=info[InstanceCount]
        #print("预留实例类型:   " + info[‘InstanceType‘],"   过期数量:   ",info[‘InstanceCount‘],"   多少天后过期:  ",retired_left_time)
    return reserved_instances_number
if __name__==__main__:
    region_list=[ap-northeast-2,eu-central-1]
    for region in region_list:
        print("-"*100)
        client=boto3.client(ec2,region_name=region)
        response = client.describe_reserved_instances(Filters=[{Name:state,Values:[active,]},])
        instances_number=reserved_instances_info()
        if instances_number != 0:
           message="【xx告警】区域: " +region+ " " + str(instances_number) +" "+ "台预留实例将于7天后到期,请及时购置!"
           print (message)
           send_sms(apikey,message,mobile)

发短信脚本:

#!/usr/bin/python
#-*- coding:utf-8 -*-
# apikey:成功注册后登录云片官网,进入后台可查看
# text:需要使用已审核通过的模板或者默认模板
# mobile:接收的手机号,仅支持单号码发送
import os
import urllib,urllib2,httplib,time
from subprocess import Popen,PIPE
apikey=xxxx
mobile=xxxx
def send_sms(apikey,text,mobile):
     #服务地址
     sms_host = "sms.yunpian.com"
     #端口号
     port = 443
     #版本号
     version = "v2"
     #智能匹配模板短信接口的URI
     sms_send_uri = "/" + version + "/sms/single_send.json"
     params = urllib.urlencode({apikey: apikey,text: text,mobile:mobile})
     headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
     conn = httplib.HTTPSConnection(sms_host,port=port,timeout=30)
     conn.request("POST",sms_send_uri,params,headers)
     response = conn.getresponse()
     response_str = response.read()
     conn.close()
     return response_str
if __name__==__main__:
     pass
     #message="【小慕告警】区域: %s %s 台预留实例将于7天后到期,请及时购置!" %(region,instances_number)
     #print send_message
     #send_sms(apikey,mobile)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读