#!/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容量大小采集的更多相关文章

  1. 解决阿里云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管理控制台下, ...

  2. ThinkPHP 文件上传到阿里云OSS上(干货)

    参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...

  3. Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)

    1.此文章主要介绍内容 本文主要介绍如何利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将所有访问本地Ngin ...

  4. php阿里云oss文件上传

    php的文件上传 文件上传 php的文件上传放在了$_FILES数组里,单文件和多文件上传的区别在于$_FILES['userfile']['name']是否为数组, 不熟悉的可以读一下官方文档 单文 ...

  5. TP框架上传图片至阿里云oss

    首先安装阿里云oss扩展: composer require aliyuncs/oss-sdk-php 如果这个安装不上可以直接下载SDK的包: 链接:https://pan.baidu.com/s/ ...

  6. 用OSS给阿里云ECS扩展硬盘容量

    阿里云的虚拟机ECS在创建时可以指定一个云盘,但在使用过程中,随着时间推移数据越来越多,难免硬盘就不够用了.当然你可以在另外加个云盘,不过总还有用完的时候,而且价格也不便宜.今天给大家介绍一个方法,给 ...

  7. 一招教你写博客,Typora+PicGo+阿里云oss,最好用的Markdown+最好用的图床工具!

    博客 写博客的好处 1.使自己变得更善于观察.一旦你养成了记博客的习惯,与此同时你也赋予了一个更好的机会给自己,让自己去更细致地观察生活.一个人的生活经历本就是价值连城的,从中学习到的知识,教训更是异 ...

  8. phpcmsv9 阿里云OSS云存储整合教程

    该教程算不上是phpcmsv9阿里云oss插件,所以整个修改及其代码覆盖前请一定记得备份.还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:1.个人的需求是前台页面需要使用t ...

  9. angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

    2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...

随机推荐

  1. CG-CTF simple-machine

    运行一下,输入flag: 用ida打开: input_length和input_byte_804B0C0为重命名的变量:现在一个个看调用的函数. sub_8048526(): 这个函数使用了mmap分 ...

  2. Ubuntu 16.04 屏幕亮度无法调节怎么办

    安装好ubuntu 16.04之后,发现屏幕超亮,找不到调节按钮,这应该是系统的一个漏洞, 不过可以安装工具来操作,从而解决亮度调节问题,下面是安装  Brightness Controller 的方 ...

  3. windows PHP 安装 redis 外加扩展

    前置条件:为php7.2搭建redis扩展的前提是在本机上已经成功搭建好php的运行环境,我的电脑的运行环境时 apache2.4+mysql5.5+php7.2. 操作系统为64位,编译环境为Mic ...

  4. WinForm -- 为TextBox文本框添加鼠标右键菜单

    WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...

  5. MATLAB中“fitgmdist”的用法及其GMM聚类算法

    MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...

  6. SQL FIRST() 函数

    FIRST() 函数 FIRST() 函数返回指定的字段中第一个记录的值. 提示:可使用 ORDER BY 语句对记录进行排序. SQL FIRST() 语法 SELECT FIRST(column_ ...

  7. WIFI KILL神器

    https://anky.cc/esp8266-deauther-wifi-jammer/ https://github.com/spacehuhn http://tieba.baidu.com/p/ ...

  8. 三十七、小程序页面跳转传参参数值为url时参数丢失

    当参数的值为url的时候,在options中的值没有参数“?”之后字符串被截取.例如:let url="http://baidu.com/?a=1&b=2"wx.navig ...

  9. Django3 Django 路由分发,反向解析,2.0版本的path

    urls配置像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行. 1.简 ...

  10. springboot项目中配置swagger-ui

    Git官方地址:https://github.com/SpringForAll/spring-boot-starter-swagger Demo:https://github.com/dyc87112 ...