aws 预留实例到期监控
环境准备
安装python的aws 开发工具包
pip install boto3
配置aws账号
[root@zabbix 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="【xx告警】区域: %s %s 台预留实例将于7天后到期,请及时购置!" %(region,instances_number)
#print send_message
#send_sms(apikey,message,mobile)
云片网配置短信模板
【xx告警】区域: #region# #instance_number# 台预留实例将于7天后到期,请及时购置!
将过期时间调长,测试脚本执行
开启定时任务:
0 2 * * * python /root/monitor/service/ReservedInstancesMonitor.py >>/var/log/aws_reservedinstances.log 2>&1
aws 预留实例到期监控的更多相关文章
- AWS EC2 实例 SSH 无法登录故障
文章链接 故障表现 在使用 jumperver 登录 AWS ec2 实例的时候发现 ssh 配合秘钥登录的时候无法登录, 具体报错如下: ssh -i /path/xx.pem user@10.0. ...
- python3 获取阿里云ECS 实例及监控的方法
#!/usr/bin/env python3.5 # -*- coding:utf8 -*- try: import httplib except ImportError: import http.c ...
- AWS EC2实例Linux系统创建root用户并更改为root用户登录
对于刚创建AWS EC2实例,或者经常使用AWS 实例的小伙伴们来说,刚创建的EC2实例是没有ROOT权限的,因此不能直接使用ROOT用户去登陆实例,也无法获取到root权限.一般情况下,EC2实例默 ...
- 阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除
阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除 4. ECS 实例释放后,自定义镜像是否还存在? 存在. 5. ECS 实例释放后,快照是否还存在? 保留手动快照,清除自动 ...
- AWS探索及创建一个aws EC2实例
一.AWS登陆 1.百度搜索aws,或者浏览器输入:http://aws.amazon.com 2.输入账户及密码登陆(注册流程按照提示走即可) 二.创建EC2实例(相当于阿里云的ecs) 1.找到E ...
- AWS CentOS7 实例修改主机名
问题描述: AWS EC2 实例在升级到CentOS7以后,我们发现主机名的修改不再像之前的版本(CentOS 5/6)一样简单. 每次新建实例之后,修改好主机名,重启或者克隆之后的机器,主机名还是会 ...
- AWS EC2实例Ubuntu系统设置root用户密码并使用root/ubuntu用户登录
参考链接:http://www.wangchao.info/1137.html 注意:链接中写的简化了,其中重启服务的命令似乎不太适用,可能是不通用,我下面描述的方式亲测可行,如有其他疑问请留言: ...
- shell脚本实例-系统监控
shell脚本监控网站并实现邮件.短信报警shell进程监控脚本(发送邮件报警)Shell脚本监控服务器在线状态和邮件报警的方法 http://www.jbxue.com/jb/shell/ 11. ...
- 亚马逊aws 一个实例双网卡-两个弹性ip设置
一个实例默认只有1个网络接口: 步骤一.创建一个新的网络接口,附加到实例. 步骤二.手动添加路由 增加两个路由表,为后续的双网关做点小准备: vim /etc/iproute2/rt_tables 添 ...
随机推荐
- Java 实现在固定区间内随机生成整数
1.random.nextInt(num) public static void main(String args[]) { Random rdom = new Random(); int max = ...
- mac重启php7.0
killall php-fpm /usr/local/opt/php70/sbin/php70-fpm restart
- Vuex的基本原理与使用
我们需要知道 vue 是单向数据流的方式驱动的 什么是vuex? 为什么要使用vuex ? - 多个视图依赖于同一状态. - 来自不同视图的行为需要变更同一状态. vuex 类似Redux 的状态管理 ...
- SSRF和XSS-filter_var(), preg_match() 和 parse_url()绕过学习
0x01:url标准的灵活性导致绕过filter_var与parse_url进行ssrf filter_var() (PHP 5 >= 5.2.0, PHP 7) filter_var — 使用 ...
- mini dc(选做)
一.任务详情 提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 二.源代码 1.MyDC类 import java.util.StringTokenizer; impor ...
- JS基础_使用工厂方法创建对象
创建一个对象 var obj={ name:"hhh", age:28, gender:"男", say:function(){ console.log(&qu ...
- spark streaming 5: InputDStream
InputDStream的继承关系.他们都是使用InputDStream这个抽象类的接口进行操作的.特别注意ReceiverInputDStream这个类,大部分时候我们使用的是它作为扩展的基类,因为 ...
- 域名到IP 报错socket.gaierror: [Errno 8] nodename nor servname provided, or not known
Python中如何通过域名,查看对应的IP? 请看如下代码: import socket hostname="www.baidu.com" ip = socket.gethostb ...
- StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法
这里使用的是 org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下: //左侧补齐 第一个参数:原始字符串,第二个 ...
- 图片加载框架之fresco
FaceBook推出的图片处理框架主页: https://github.com/facebook/fresco中文文档:http://fresco-cn.org/docs/index.html 功能 ...