使用 GO SDK访问云监控

最近更新时间:2019-06-25 15:07:03

目录


开发前准备

安装KS3 GO SDK

因为用户在查询某个Bucket的监控数据时,需要查询Bucket所在的Region,去云监控对应的服务地址查询相关的监控项,所以需要安装KS3 SDK。详见KS3 SDK for GO使用指南

安装云监控 GO SDK

详见云监控 SDK说明

运行环境

基于aws-sdk-go改造,适用于golang 1.8 开发环境。

初始化配置

1、用户首先需要在金山云控制台申请安全凭证,安全凭证包括access_key_id和secret_access_key。access_key_id 是用于标识API调用者的身份,secret_access_key是用于加密签名字符串和服务器端验证签名字符串的密钥。secret_access_key 必须严格保管,避免泄露。获取安全凭证方法: https://docs.ksyun.com/directories/1600

2、将获取到的access_key_id和secret_access_key(AK和SK)在程序进行配置。

Demo演示

此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: &region}, &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["StartTime"] = "2019-06-22T00:00:00Z"
    m_metrics["EndTime"] = "2019-06-23T00:00:00Z"
    m_metrics["Period"] = "86400"
    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",
        "HANGZHOU": "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: "HANGZHOU",
        Credentials: cre,
        Endpoint:"kss.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)
    }

}

金山云,开启您的云计算之旅

立即注册