开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

利用金山云SDK获取KS3存储值的办法

简介:
+关注继续查看

之前曾经写过获得金山云云存储KS3的方法,http://chenx1242.blog.51cto.com/10430133/1968857 但是这个方法的缺点很明显,就是“要先list再算值”,消耗时间太多。于是乎还是得用SDK来达到获取值得目的。


比如说我现在想的到js-online-private的"9.29TB"这个值,如图:

2acf391b89fefa11e223a40fdb9b8263.png


使用adk之前,需要先#pip install ksc-sdk-python,整个脚本内容如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
from kscore.session import get_session
import json
 
#密钥
ACCESS_KEY_ID = "这里填写帐号ak"
SECRET_ACCESS_KEY = "这里填写帐号sk"
= get_session()
 
def gettodayoss():
        client = s.create_client("monitor","区域名称",ks_access_key_id=ACCESS_KEY_ID, ks_secret_access_key=SECRET_ACCESS_KEY)
        m=client.get_metric_statistics(InstanceID="这里填写bucket名",Namespace="ks3",MetricName="ks3.bucket.capacity.total.sd",StartTime="2017-10-22T10:00:00Z",EndTime="2017-10-23T11:00:00Z",Period="86400",Aggregate="sum")
        data=json.dumps(m,sort_keys=True,indent=4)
        print(data)
 
if __name__ == "__main__":
        gettodayoss()


执行效果如图:

dad4b8ae28b86e75e6cfedce5c2a5b82.png


单位换算一下:

7cb9c572f1d2bebe6aa247b76eea9a50.png


metric支持如下几个参数:

    ks3.bucket.capacity.total: 总容量(存储量)

    ks3.bucket.capacity.add:增加容量(存储量)

    ks3.bucket.capacity.del: 删除容量(存储量)

    ks3.bucket.flow.up: 上传流量(外网)

    ks3.bucket.flow.down:下载流量(外网)

    ks3.bucket.bandwidth:下载带宽

    ks3.bucket.getcount: get次数

    ks3.bucket.putcount:put次数


这里有几点注意!

1)密钥一定是要填写帐号的ak/sk,而不是云存储权限的ak/sk,我也知道这样填写权限过大,是一个很危险的事儿,但是没办法,金山云就是这么设计的;

2)查看云存储的话,区域名称一定要写cn-beijing-6,因为ks3的监控数据都在北京存储;

3)StartTime和EndTime之间一定要大于24小时;

4)金山云的云存储统计跟阿里云的云存储统计一样都是有延迟的,不过金山云的延迟是一天,也就是说StartTime和EndTime要至少写昨天的;


新的知识点!

例子脚本获到的是一个json的数据结构,那么如何从那一大串内容里得到sum这个值呢?

json的数据结构其实是一个str类型,而它基本上是key/value的,这个类型在python里就是字典,那么就应该有字典的方式去读取。

将json转化成字典类型,一般来说用json模块的read方法。

1
a=json.read(data)

如果发现使用read方法出现了“AttributeError: 'module' object has no attribute 'read'”这个错误,那么就改成loads方法:

1
a=json.loads(data)

那么返回来看一下我们得到的这个json字符串,它最外的一层是getMetricStatisticsResult,然后datapoints,再然后member,然后就是两个值,分别是sum和timestamp,而我们要的是sum。于是乎,经过这一层层好像剥洋葱的过程,要得到sum这个值结尾处应该这么写:

1
2
3
data=json.dumps(m,sort_keys=True,indent=4)
today_storage=json.loads(data)
print "today:" +  today_storage['getMetricStatisticsResult']['datapoints']['member'][0]['sum']

这样得到的就是单纯的sum值了,如图:

6bd2361e86eede4a2c3e5b6b55df87d0.png



最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1976165

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
❤️【Android精进之路-02】安装Android Studio,认识Android SDK,一步步学习❤️
上一篇文章定好了Android学习计划,这篇文章就正式进入Android的学习之旅了。本文将重点介绍Android SDK的目录结构,如何安装Android Studio以及如何用Android Studio进行第一个Android应用的开发。
0 0
Android Studio下载SDK的链接
Android Studio下载SDK的链接
0 0
Please Select android SDK的解决办法
Please Select android SDK的解决办法
0 0
Please select Android SDK的解决
Please select Android SDK的解决
0 0
Android SDK Manager无法显示可供下载的未安装SDK解决方案
Android SDK Manager无法显示可供下载的未安装SDK解决方案
0 0
使用Android Studio爆SDK emulator directory is missing
使用Android Studio爆SDK emulator directory is missing
0 0
Android Sdk和安卓各个版本的匹配
Android Sdk和安卓各个版本的匹配
0 0
Android 百度地图SDK 自动定位、标记定位
Android 百度地图SDK 自动定位、标记定位
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
从 SDK 到编解码:视频直播架构解析
立即下载
跨平台的云服务SDK需要什么
立即下载
一个跨平台的云服务SDK需要什么
立即下载