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 添 ...
随机推荐
- audio 预加载
http://www.w3school.com.cn/tags/av_event_loadeddata.asp var audio = document.createElement("aud ...
- C库函数-fgets()
函数声明:char *fgets(char *str,int n,FILE *stream) 函数介绍:从指定的stream流中读取一行,并把它存储在str所指向的字符串中.当读取到(n-1)个字符时 ...
- codeforces402B
Trees in a Row CodeForces - 402B The Queen of England has n trees growing in a row in her garden. At ...
- HTML标签功能分类
按功能类别对HTML标签进行分类,源自HTML 参考手册 基础 标签 描述 <!DOCTYPE> 定义文档类型. html 定义 HTML 文档. title 定义文档的标题. body ...
- Ranger使用solrCloud存储审计日志
Ranger使用solrCloud存储审计日志 标签(空格分隔): Ranger 1, Zookeeper 搭建 1,忽略.默认已经搭建好zk 集群. VECS17820:2181,VECS17821 ...
- [CSP-S模拟测试]:射手座之日(dsu on tree)
题目传送门(内部题103) 输入格式 第一行一个数$n$,表示结点的个数. 第二行$n–1$个数,第$i$个数是$p[i+1]$.$p[i]$表示结点$i$的父亲是$p[i]$.数据保证$p[i]&l ...
- HTTP服务器(2)
import socket import re import multiprocessing def service_client(new_socket): """为这个 ...
- (转)linux中wget未找到命令
转:https://blog.csdn.net/djj_alice/article/details/80407769 在装数据库的时候发现无法使用wget命令,提示未找到命令,如图所示 那是因为没有安 ...
- TCP层accept系统调用的实现分析
inet_csk_accept函数实现了tcp协议accept操作,其主要完成的功能是,从已经完成三次握手的队列中取控制块,如果没有已经完成的连接,则需要根据阻塞标记来来区分对待,若非阻塞则直接返回, ...
- 去掉input type=file的默认样式
原样式: 解决: 加style="opacity: 0;"变成透明的 然后可以外面套个div,在div上自定义样式.