python实现监控阿里云账户余额功能
背景
由于阿里云oss,cdn消耗钱的速度比较快,在不知道的情况下,服务就被停了,影响比较大。所以想做个监控。百度一下阿里云账户余额api还真有;于是开启了踩坑之路。
查阅资料创建accessKeyId和accessKeySecret
- 官方文档(感觉并不细致)https://help.aliyun.com/document_detail/87997.html?spm=a2c6h.13066369.0.0.59e4581eaxXH1O
- sdkhttps://developer.aliyun.com/sdk?spm=5176.12818093.resource-links.dsdk_platform.488716d022QXo0
- 看了官方文档后还是有点懵逼,后面Google了这个关键字QueryAccountBalanceRequest才看到真正的样例代码https://developer.aliyun.com/ask/132002(感觉这块资料很少呀,aliyun-python-sdk-bssopenapi居然没写在sdk安装列表里面,在社区找到的)。
- 创建accessKeyId,鼠标悬停到右上角
撸码阶段
要安装的依赖
sudopipinstallaliyun-python-sdk-core-ihttps://mirrors.aliyun.com/pypi/simple/ sudopipinstallaliyun-python-sdk-bssopenapi-ihttps://mirrors.aliyun.com/pypi/simple/ fromaliyunsdkcoreimportclient fromaliyunsdkbssopenapi.request.v20171214importQueryAccountBalanceRequest fromaliyunsdkcore.profileimportregion_provider #检查账户余额 defcheck_account(name,accessKeyId,accessKeySecret,valve,notify_emails): region_provider.add_endpoint('BssOpenApi','cn-hangzhou','business.aliyuncs.com') clt=client.AcsClient(accessKeyId,accessKeySecret,'cn-hangzhou') request=QueryAccountBalanceRequest.QueryAccountBalanceRequest() request.set_accept_format("JSON") result=clt.do_action_with_exception(request) print(result)
下面是我封装的检查账户余额,如果低于阀值就给要通知的人发邮件。monitor_balance.py
#-*-coding:UTF-8-*- ''' 监控阿里云账户余额 zhouzhongqing 2019年12月14日20:21:11 sudopipinstallaliyun-python-sdk-core-ihttps://mirrors.aliyun.com/pypi/simple/ sudopipinstallaliyun-python-sdk-bssopenapi-ihttps://mirrors.aliyun.com/pypi/simple/ https://developer.aliyun.com/ask/132002 ''' importos importtime importsched importsmtplib fromemail.mime.textimportMIMEText fromemail.headerimportHeader fromaliyunsdkcoreimportclient fromaliyunsdkbssopenapi.request.v20171214importQueryAccountBalanceRequest fromaliyunsdkcore.profileimportregion_provider importjson fromdecimalimportDecimal #qq邮箱smtp服务器 host_server='smtp.qq.com' #sender_qq为发件人的qq号码 sender_qq='1030907690@qq.com' #pwd为qq邮箱的授权码 pwd='xxxxxx' #发件人的邮箱 sender_qq_mail='1030907690@qq.com' #第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 #第二个参数以某种人为的方式衡量时间 schedule=sched.scheduler(time.time,time.sleep); defsend_mail(receiver,name,balance,valve): #收件人邮箱 #receiver='1030907690@qq.com' #邮件的正文内容 mail_content='您好,目前账户%s,余额为%s,低于阀值%s,请知悉!'%(name,balance,valve) #邮件标题 mail_title='%s余额监控通知邮件'%(name) #ssl登录 smtp=smtplib.SMTP_SSL(host_server) #set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式 smtp.set_debuglevel(0) smtp.ehlo(host_server) smtp.login(sender_qq,pwd) msg=MIMEText(mail_content,"plain",'utf-8') msg["Subject"]=Header(mail_title,'utf-8') msg["From"]=sender_qq_mail msg["To"]=receiver smtp.sendmail(sender_qq_mail,receiver,msg.as_string()) smtp.quit() #解析配置 defparse_account(): f=open("monitor.json") lines=f.read() data=json.loads(lines) f.close() returndata #检查账户余额 defcheck_account(name,accessKeyId,accessKeySecret,valve,notify_emails): region_provider.add_endpoint('BssOpenApi','cn-hangzhou','business.aliyuncs.com') clt=client.AcsClient(accessKeyId,accessKeySecret,'cn-hangzhou') request=QueryAccountBalanceRequest.QueryAccountBalanceRequest() request.set_accept_format("JSON") result=clt.do_action_with_exception(request) #print(result) res_json=json.loads(str(result,encoding="utf-8")) print(res_json) ifres_jsonisnotNoneandres_json["Code"]=="200": availableAmount=res_json["Data"]["AvailableAmount"] ifDecimal(availableAmount)
- 还有个json文件配置monitor.json
- 里面分别代表的是名称,发起邮件通知账户余额阀值,id,密钥,通知的邮箱(可以多个,逗号,分割)。
[{"name":"恭喜你888","valve":"100","accessKeyId":"xxx","accessKeySecret":"xxx","notifyEmail":1030907690@qq.com}]运行效果
如果是正式环境部署的话可以用这个命令,可以后台运行,日志输出到nohup.out: nohuppython-umonitor_balance.py>nohup.out2>&1&总结 以上所述是小编给大家介绍的python实现监控阿里云账户余额功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。