千家信息网

python如何获取到预留实例

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关python如何获取到预留实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。boto3是aws提供给python开发者的SDK,我们通过
千家信息网最后更新 2025年02月01日python如何获取到预留实例

这篇文章将为大家详细讲解有关python如何获取到预留实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

boto3是aws提供给python开发者的SDK,我们通过boto3可以获取到预留实例的相关信息。

boto3部署按照方法:

可以参照官方网站https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html。

值得注意的是,因为我们使用zabbix进行监控,所以.aws目录需要在zabbix用户的根目录下创建。

监控脚本:

rinViewer.py:

import datetimeimport jsonimport timeimport sysfrom pytz import timezoneclass rinViewer:        def __init__(self,botoclient):                self.client = botoclient;                self.info = self.client.describe_reserved_instances()["ReservedInstances"];        def simList(self): #return a simple list of reservedinstance and days left.                ans = []                for i in self.info:                        if i["State"] == "active":                                rins = {"instanceType":i["InstanceType"]}                                dayleft = self.dayLeft(i["End"]);                                rins["leftday"] = dayleft;                                ans.append(rins)                return ans;        def dayLeft(self,time):    #input datetime,return the days left.                cst_tz = timezone('Asia/Shanghai');                now = datetime.datetime.now(cst_tz);                return (time-now).days;        def leftDaysCheck(self,days=30):   #if all reinstance left days over 30(default) it will return true,else return false and reason                info = self.simList();                for i in info:                        if i["leftday"] < days:                                return {"status":False,"reason":i["instanceType"]+" will be expired in "+str(i["leftday"])+"."}                return {"status":True};        def typeSum(self,type,count=-1):   # return sum of ec2 with the type if count is not set.Or return bool which the sum of ec2 is correct.                siminfo = self.simList();                n = 0;                for i in siminfo:                        if i["instanceType"] == type:                                n = n + 1;                if count == -1:                        return n;                elif count == n:                        return {"status":True}                else:                        return {"status":False,"reason":"Only "+str(n)+" "+type+" reserved instances.Expect "+str(count)}        def typeCheck(self,typelist):      # return bool that the ec2 reinstances is match the type list or not.                for i in typelist:                        ans = self.typeSum(i["type"],i["sum"]);                                   if ans["status"] == False:                                return ans;                return {"status":True}if __name__ == "__main__":        client = boto3.client('ec2');        rinsList=[{"type":"c5.large","sum":2}},{"type":"t2.medium","sum":1},{"type":"m4.large","sum":1}]        reqStr = sys.argv[1];        riv = rinViewer(client);        if reqStr == "leftdays":                if len(sys.argv) > 2:                        res =  riv.leftDaysCheck(int(sys.argv[2]))["status"];                else:                        res =  riv.leftDaysCheck()["status"];                print res;        elif reqStr == "typecount":                res =  riv.typeCheck(rinsList)["status"];                print res;

使用说明

支持两个参数:leftdaystypecount

python rinViewer.py leftdays [days]

会检索你所有的预留实例的到期时间,如果有预留实例到期天数小于days(默认是30),返回false,如果没有临近到期返回true。

python rinViewer.py typecount

在函数中我们定义了rinsList=[{"type":"c5.large","sum":2}},{"type":"t2.medium","sum":1},这里记录了所在region所需要的预留实例数量,当执行时,会比较预留实例数量和rinsList中指定的数量是否存在出入,如果满足了指定的数量则返回true,反之返回false.

当然如果有配置中心,或者其他入口能够获得所需预留实例信息,只要提供给rinViewer.typeCheck对应的list即可。

添加到监控系统:

怎么添加到zabbix,网上文档很多,这里就不介绍了,给个效果图:

关于"python如何获取到预留实例"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

实例 数量 篇文章 监控 信息 更多 不错 实用 两个 中指 使用说明 入口 内容 函数 参数 天数 官方 官方网站 开发者 所在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全情报种类 利川r740服务器价格 智能选股票软件开发源码 天谕手游春心萌动属于哪个服务器 成都采购设备管理软件开发 软件开发部长工作 北京微信软件开发平台 fm数据库版本 安卓短信自动上传到服务器 广州大学方滨兴网络安全 用美颜相机拍照会上传到数据库吗 学校网络安全应急预案预案 服务器数据库的备份与恢复 计算机网络技术文档心得 魔兽世界燃烧的远征服务器怎么看 集群服务器同步 江苏智铭网络技术有限公司官网 中央人民共和国网络安全法 广州市天河区软件开发公司 mc服务器白名单 服务器上的文件夹映射 想从软件开发转行 国家网信办发布网络安全数据办法 通过api查询数据库 福州快搜网络技术有限 思科录播服务器tcs配置手册 软件开发设计与管理工资 网络安全舆情研判制度 创造模式服务器怎样才可以加入 附件是什么类型数据库
0