美文网首页
腾讯云API对接

腾讯云API对接

作者: heliping_peter | 来源:发表于2022-02-09 10:32 被阅读0次

    腾讯云的golang SDK非常好用,接入非常方便。

    1. 腾讯云使用golang的SDK,不用数字签名,只需要获取到key
    2. 腾讯云的接口返回,不用解析,可以直接使用其结构体,结构体内都是指针,需要注意
    3. 如下代码是获取腾讯云的历史告警
    package services
    
    import (
        "fmt"
        "time"
        
    
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
        monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724"
    
        
        //"huaxkeeper/logs"
        "huaxkeeper/models"
    )       
    
    func TengxunUpdate() {
        //获取起始时间戳,时间间隔5分钟
        now := time.Now()
        m, _ := time.ParseDuration("-5m")   
        EndTime := time.Now().Unix() 
        StartTime := now.Add(m).Unix() 
        alarminfo := models.Alarm{}
        credential := common.NewCredential(
                "keyid",
                "key",
        )
        cpf := profile.NewClientProfile()
        cpf.HttpProfile.Endpoint = "monitor.tencentcloudapi.com"
        client, _ := monitor.NewClient(credential, "ap-shanghai", cpf)
    
        request := monitor.NewDescribeAlarmHistoriesRequest()
        
        request.Module = common.StringPtr("monitor")
        request.PageNumber = common.Int64Ptr(1)
        request.PageSize = common.Int64Ptr(100)
        request.StartTime = common.Int64Ptr(StartTime)
        request.EndTime = common.Int64Ptr(EndTime)
    
        response, err := client.DescribeAlarmHistories(request)
        if _, ok := err.(*errors.TencentCloudSDKError); ok {
                fmt.Printf("An API error has returned: %s", err)
                return
        }
        if err != nil {
                panic(err)
        }
        //fmt.Printf("%s", response.ToJsonString())
        tmp := response.Response.Histories
        //写入数据库
        for _,i := range tmp {
            alarminfo.Name = *i.PolicyName
            alarminfo.Summary = *i.Content
            alarminfo.Project = *i.ProjectName
            alarminfo.Message = *i.AlarmObject      
            priword := *i.MetricsInfo[0].Description
            if priword == "致命级风险" {
                alarminfo.Priority = "critical"
            } else {
                alarminfo.Priority = "major"
            }
            alarminfo.Type = "云产品监控"
            //时间戳转时间
            s_time := *i.FirstOccurTime
            alarminfo.StartTime = time.Unix(s_time, 0).Format("2006-01-02 15:04:05")
            if *i.AlarmStatus == "OK" {
                alarminfo.State = "solved"
            } else {
                alarminfo.State = "alerting"
            }       
            alarminfo.AlarmId = *i.AlarmId
            alarminfo.Create(alarminfo)
        }
    } 
    

    相关文章

      网友评论

          本文标题:腾讯云API对接

          本文链接:https://www.haomeiwen.com/subject/nfrwkrtx.html