利用金山雲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,整個腳本內容如下:


#!/usr/bin/env python
# -*- encoding:utf-8 -*-
from kscore.session import get_session
import json

#密鑰
ACCESS_KEY_ID = "這裏填寫帳號ak"
SECRET_ACCESS_KEY = "這裏填寫帳號sk"
s = 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方法。

a=json.read(data)

如果發現使用read方法出現了“AttributeError: 'module' object has no attribute 'read'”這個錯誤,那麼就改成loads方法:

a=json.loads(data)

那麼返回來看一下我們得到的這個json字符串,它最外的一層是getMetricStatisticsResult,然後datapoints,再然後member,然後就是兩個值,分別是sum和timestamp,而我們要的是sum。於是乎,經過這一層層好像剝洋蔥的過程,要得到sum這個值結尾處應該這麼寫:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章