使用 GO SDK访问云监控

最近更新时间:2021-05-14 15:49:26

查看PDF

目录


开发前准备

安装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/documents/904

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["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)
	}

}

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈