阿里云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 { // 目前 ...
随机推荐
- 数据文件实时同步(rsync + sersync2)
因近期项目需求,需要同步云端服务器的数据给**方做大数据分析. 思路: 起初只要数据同步,准备开放数据采集接口.但实时性较差,会有延迟. 故而寻觅各种解决方案,最终确定使用 rsync 进行文件同步, ...
- idea Maven项目找不到相关依赖包(红色波浪线)
前两天做项目的时候,把团队其他人的代码从git同步到自己电脑上,出现了冲突.发现是maven依赖出现了问题,之前的截图找不到了,我就简单描述一下.就是下图箭头所示位置出现了红色波浪线. 在网上找了很多 ...
- 前端开发之基础知识-HTML(一)
1.1 html概述和基本结构 html概述 HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网 ...
- SQL Server 取日期时间格式 日期与字符串之间的转换
SQL Server 取日期时间部分 在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate() 用DateName()就可以获得相应的 ...
- ztree搜索节点并展开
web <div class="zTreeC"> <div class="searchL" lay-filter="searchL& ...
- javaEmail发邮件是问号乱码,已解决
寒假学习了ssm,就把之前看过的一个商城项目用ssm重构了. 然后在本地一切都正常,放到个人服务器上就凉了. 因为这个项目注册需要邮箱激活,然后就在发邮件的时候出了问题. 一.发送端口 因为源程序是用 ...
- docker安装与测试 及 安装docker compose
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口 ...
- NW.js使用及打包
简介 NW.js (原名 node-webkit)是一个结合了 Chromium 和 node.js 的应用运行时,通过它可以用 HTML 和 JavaScript 编写原生应用程序.它还允许开发者从 ...
- 简单解析nestJS目录
使用Nest CLI设置新项目非常简单 .只需确保 安装了npm,然后在OS终端中使用以下命令: $ npm i -g @nestjs/cli $ nest new project-name $ cd ...
- Java的properties文件读取和属性修改
package Test; import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileO ...