最近更新时间:2023-01-03 11:58:44
因为用户在查询某个Bucket的监控数据时,需要查询Bucket所在的Region,去云监控对应的服务地址查询相关的监控项,所以需要安装KS3 SDK。详见KS3 SDK for GO使用指南。
详见云监控 SDK说明。
基于aws-sdk-go改造,适用于golang 1.8 开发环境。
1、用户首先需要在金山云控制台申请安全凭证,安全凭证包括access_key_id和secret_access_key。access_key_id 是用于标识API调用者的身份,secret_access_key是用于加密签名字符串和服务器端验证签名字符串的密钥。secret_access_key 必须严格保管,避免泄露。获取安全凭证方法:点击查看。
2、将获取到的access_key_id和secret_access_key(AK和SK)在程序进行配置。
此Demo演示了:如果获取某一账号下所有bukcet的标准存储量。
package main
import (
"encoding/json"
"fmt"
"github.com/ks3sdklib/aws-sdk-go/aws"
"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
"github.com/ks3sdklib/aws-sdk-go/service/s3"
"github.com/ksc/ksc-sdk-go/ksc"
"github.com/ksc/ksc-sdk-go/ksc/utils"
"github.com/ksc/ksc-sdk-go/service/monitor"
)
func query_monitor(bucket string, region string, ak string, sk string) {
//debug模式的话 打开这个开关
svc := monitor.SdkNew(ksc.NewClient(ak, sk /*true*/), &ksc.Config{Region: ®ion}, &utils.UrlInfo{
UseSSL: true,
})
//****************************************获取监控项(ListMetrics)***************************************************
m_metrics := make(map[string]interface{})
m_metrics["Namespace"] = "KS3"
m_metrics["InstanceID"] = bucket
m_metrics["MetricName"] = "ks3.bucket.capacity.total.sd"
m_metrics["Period"] = "86400"
//如果要查询带宽,MeticName设置为"ks3.bucket.bandwidth.down",Period设置为300
//m_metrics["MetricName"] = "ks3.bucket.bandwidth.down"
//m_metrics["Period"] = "300"
m_metrics["StartTime"] = "2019-06-22T00:00:00Z"
m_metrics["EndTime"] = "2019-06-23T00:00:00Z"
m_metrics["Aggregate"] ="Max,min,avg"
resp, err := svc.GetMetricStatistics(&m_metrics)
if err != nil {
fmt.Println(err.Error())
}
if resp != nil {
str, _ := json.Marshal(&resp)
fmt.Printf("%+v\n", string(str))
}
}
func main() {
ak := "your_ak"
sk := "your_sk"
region_map := map[string]string {
"BEIJING": "cn-beijing-6",
"SHANGHAI": "cn-shanghai-2",
"GUANGZHOU": "cn-guangzhou-1",
"HONGKONG": "cn-hongkong-2",
"RUSSIA": "eu-east-1",
"SINGAPORE": "ap-singapore-1",
}
var cre = credentials.NewStaticCredentials(ak, sk,"")
var svcKs3 = s3.New(&aws.Config{
Region: "BEIJING",
Credentials: cre,
Endpoint:"ks3-cn-beijing.ksyun.com",
DisableSSL:true,
LogLevel:1,
S3ForcePathStyle:true,
LogHTTPBody:true,
})
out,err := svcKs3.ListBuckets(nil)
if err != nil {
fmt.Println(err)
return
}
buckets := out.Buckets
for i:=0;i<len(buckets);i++{
fmt.Println(*buckets[i].Name)
fmt.Println(*buckets[i].Region)
query_monitor(*buckets[i].Name, region_map[*buckets[i].Region], ak, sk)
}
}
纯净模式