阿里云OSS的Bucket容量大小采集
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
# 获取阿里云云监控中 OSS 中的bucket 的bucket大小
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from datetime import datetime
import json
import oss2
import time
import requests
accessKeyId = "XXXXXXXXXX"
accessSecret = "XXXXXXXXXXXX"
# 接口调用
def QueryMetricList():
#client = AcsClient(accessKeyId, accessSecret, 'default')
client = AcsClient(accessKeyId, accessSecret)
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('metrics.aliyuncs.com')
request.set_method('POST')
request.set_version('2018-03-08')
request.set_action_name('QueryMetricList')
request.add_query_param('Metric', 'MeteringStorageUtilization')
request.add_query_param('Project', 'acs_oss')
response = client.do_action_with_exception(request)
json_data = str(response, encoding='utf-8')
oss_data_dict = json.loads(json_data, encoding='utf8')
return oss_data_dict
# 时间戳转换成标准时间
def get_date(timestamp):
time_local = time.localtime(timestamp)
covert_time = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
return covert_time
# 获取整点时间戳 + 转换为阿里云时间戳
def get_integral_time_timestamp(hour):
hour_stamp = datetime.now().replace(hour=hour,minute=0, second=0, microsecond=0).timestamp() * 1000
return hour_stamp
# 字节单位换算
def bytes_conversion(number):
symbols = ('K','M','G','T','P','E','Z','Y')
prefix = dict()
for i,s in enumerate(symbols):
prefix[s] = 1<<(i+1) *10
for s in reversed(symbols):
if int(number) >= prefix[s]:
value = float(number) / prefix[s]
return '%.2f%s' %(value,s)
return "%sB" %number
def get_oss_list():
oss_data_dict = QueryMetricList()
oss_data_str=oss_data_dict["Datapoints"]
oss_data_list = json.loads(oss_data_str,encoding='utf8')
return oss_data_list
def get_oss_backets(oss_data_list, timestamp, BucketName):
for oss_bucket in oss_data_list:
if oss_bucket['timestamp']==timestamp and oss_bucket['BucketName']==BucketName:
return oss_bucket
def sendmessage(content):
url = 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXXXXXXX'
HEADERS = {
"Content-Type": "application/json ;charset=utf-8 "
}
message = content
String_textMsg = {
"msgtype": "text",
"text": {"content": message},
}
String_textMsg = json.dumps(String_textMsg)
res = requests.post(url, data=String_textMsg, headers=HEADERS)
def Output(oss_data_list):
temp = []
# 采集时间点的时间戳
current_timestamp = get_integral_time_timestamp(0)
# 30天前的时间戳 2592000000 = 3600 * 24 * 30 * 1000
before_timestamp = current_timestamp - 1728000000
all_bucket_names = [ bucketname['BucketName'] for bucketname in oss_data_list]
all_bucket_name = list(set(all_bucket_names))
for bucketname in all_bucket_name:
data = {}
current_oss_bucket = get_oss_backets(oss_data_list, current_timestamp, bucketname)
before_oss_bucket = get_oss_backets(oss_data_list, before_timestamp, bucketname)
time_interval = ("%s 至 %s" % (get_date(int(current_timestamp / 1000)), get_date(int(before_timestamp / 1000))))
data["采集时间段"] = time_interval
data["Bucket"] = bucketname
MeteringStorageUtilization= current_oss_bucket["MeteringStorageUtilization"] - before_oss_bucket["MeteringStorageUtilization"]
data["Bucket大小差值"]= bytes_conversion(MeteringStorageUtilization)
temp.append(data)
return temp
if __name__ == '__main__':
oss_data_list=get_oss_list()
# temp=get_oss_backets(oss_data_list,1546959600000.0, "fhn213")
# for k,v in temp.items():
# print(k,v,type(v))
temp=Output(oss_data_list)
print(temp)
# sendmessage(temp)
阿里云OSS的Bucket容量大小采集的更多相关文章
- 解决阿里云OSS The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint的办法
以前有一个上海节点的存储包,一直使用正常.最近购买了一个全国的存储包,发现在上传文件的时候有这个问题. 尝试了很多办法,还提交了工单,都没有解决. 最后解决办法如下: 1.在阿里云OSS管理控制台下, ...
- ThinkPHP 文件上传到阿里云OSS上(干货)
参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...
- Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)
1.此文章主要介绍内容 本文主要介绍如何利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将所有访问本地Ngin ...
- php阿里云oss文件上传
php的文件上传 文件上传 php的文件上传放在了$_FILES数组里,单文件和多文件上传的区别在于$_FILES['userfile']['name']是否为数组, 不熟悉的可以读一下官方文档 单文 ...
- TP框架上传图片至阿里云oss
首先安装阿里云oss扩展: composer require aliyuncs/oss-sdk-php 如果这个安装不上可以直接下载SDK的包: 链接:https://pan.baidu.com/s/ ...
- 用OSS给阿里云ECS扩展硬盘容量
阿里云的虚拟机ECS在创建时可以指定一个云盘,但在使用过程中,随着时间推移数据越来越多,难免硬盘就不够用了.当然你可以在另外加个云盘,不过总还有用完的时候,而且价格也不便宜.今天给大家介绍一个方法,给 ...
- 一招教你写博客,Typora+PicGo+阿里云oss,最好用的Markdown+最好用的图床工具!
博客 写博客的好处 1.使自己变得更善于观察.一旦你养成了记博客的习惯,与此同时你也赋予了一个更好的机会给自己,让自己去更细致地观察生活.一个人的生活经历本就是价值连城的,从中学习到的知识,教训更是异 ...
- phpcmsv9 阿里云OSS云存储整合教程
该教程算不上是phpcmsv9阿里云oss插件,所以整个修改及其代码覆盖前请一定记得备份.还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:1.个人的需求是前台页面需要使用t ...
- angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)
2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...
随机推荐
- c/c++ 网络编程 read,write函数深入理解
read,write函数深入理解 1,服务端的write函数,可以指定发送数据的长度(第三个参数length) write(connfd, &buff[i], length); 2,客户端的r ...
- dom4j创建和解析xml文档
DOM4J解析 特征: 1.JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能. 2.它使用接口和抽象基本类方法. 3.具有性能优异.灵活性好.功能强大和极端易用的特点. 4.是一个开 ...
- iOS中Safari浏览器select下拉列表文字太长被截断的处理方法
网页中的select下拉列表,文字太长的话在iOS的Safari浏览器里会被自动截断,显示成下面这种: 安卓版的浏览器则没有这个问题. 如何让下拉列表中的文字在iOS的Safari浏览器里显示完整呢? ...
- 数据库【mongodb篇】基本命令学习笔记
MongoDB基本命令用 MongoDB基本命令用 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs ...
- Linux:Day20(上) openssh和CA
ssh:secure shell protocol,22/tcp,安全的远程登陆 OpenSSH:ssh协议的开源实现: dripbear:另一个开源实现: SSH协议版本 v1:基于CRC-32做M ...
- nginx 常见正则匹配符号表示
1.^: 匹配字符串的开始位置: 2. $:匹配字符串的结束位置: 3..*: .匹配任意字符,*匹配数量0到正无穷: 4.\. 斜杠用来转义,\.匹配 . 特殊使用方法,记住记性了: 5.(值1|值 ...
- VMware 安装 centos6.8
参考文档:https://jingyan.baidu.com/article/49711c61964328fa441b7c93.html 准备工作 VMware Workstation Pro 下载地 ...
- iptables之语法
一iptables概念 防火墙分类 分为硬件防火墙和软件防火墙 硬件防火墙一般放在外网的最前面,公司的拓扑的最外面 iptables虽然称为防火墙,但是不能当做整个公司的出口防火墙,和动戈几千万,几百 ...
- git 拉取远程分支到本地
步骤: 1.新建一个空文件,文件名为hhhh 2.初始化 git init 3.自己要与origin master建立连接(下划线为远程仓库链接) git remote add origin git@ ...
- Ubuntu常用软件
//latex公式识别 sudo snap install mathpix-snipping-tool //markdown # or run: # sudo apt-key adv --keyser ...