#!/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. java笔记----property文件读写

    package com.test.property; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...

  2. SQLServer之创建Transact-SQL游标

    什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据 ...

  3. c/c++ 继承与多态 文本查询的小例子(智能指针版本)

    为了更好的理解继承和多态,做一个文本查询的小例子. 接口类:Query有2个方法. eval:查询,返回查询结果类QueryResult rep:得到要查询的文本 客户端程序的使用方法: //查询包含 ...

  4. Linux常用保护机制

    Linux程序常见用的一些保护机制 一.NX(Windows中的DEP) NX:No-eXecute.DEP:Data Execute Prevention 也就是数据不可执行,防止因为程序运行出现溢 ...

  5. Pycharm安装并配置jupyter notebook

    Pycharm安装并配置jupyter notebook Pycharm安装并配置jupyter notebook 一: 安装命令jupyter: pip install jupyter 如果缺少依赖 ...

  6. 来自学长&师兄们的应届校招经验

    PART1        记得三月的第一个星期五吧,小操场打球,偶遇一位研三师兄,就主动跟师兄聊起了校招求职.很高兴,能遇到一位愿意跟你分享他自己求职经验的师兄,师兄也很热情,我们聊了好多.下面,开始 ...

  7. json和java对象相互转换

    json和java对象相互转换 springboot中json转换默认使用的是jackson包,通过spring-boot-starter-web依赖的 1 在属性上添加注解@JsonFormat(p ...

  8. ccpc杭州站 赛后总结

    Ccpc杭州站赛后总结 2017年11月4号五号,我参加了ccpc杭州站的比赛,我的队友是聂少飞和王艳,在4号一点半,举行了比赛开幕式,听着教练代表的发言,听着参赛选手代表的发言,听着志愿者的发言,都 ...

  9. 转载泡泡机器人——IMU预积分总结与公式推导2

    本文为IMU预积分总结与公式推导系列技术报告的第二篇. 承接第一篇的内容,本篇将推导IMU预积分的测量值,并分析其测量误差的分布形式. 传统捷联惯性导航的递推算法,以初始状态为基础,利用IMU测量得到 ...

  10. react-navigation使用之嵌套和跳转

    1. 新版react-native已经将react-navigation作为官方版本发布,基础Demo可以从官方网站获得,比较困扰的问题是组件的嵌套和第二.第三页面的跳转. 2. 组件嵌套问题: 要在 ...