Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@ import (
"github.com/tencentyun/tencentcloud-exporter/pkg/config"
)

func NewMonitorClient(cred common.CredentialIface, conf *config.TencentConfig) (*monitor.Client, error) {
func NewMonitorClient(cred common.CredentialIface, conf *config.TencentConfig, region string) (*monitor.Client, error) {
cpf := profile.NewClientProfile()
if conf.Credential.IsInternal == true {
cpf.HttpProfile.Endpoint = "monitor.internal.tencentcloudapi.com"
} else {
cpf.HttpProfile.Endpoint = "monitor.tencentcloudapi.com"
}
return monitor.NewClient(cred, conf.Credential.Region, cpf)
return monitor.NewClient(cred, region, cpf)
}

func NewMongodbClient(cred common.CredentialIface, conf *config.TencentConfig) (*mongodb.Client, error) {
Expand Down
7 changes: 7 additions & 0 deletions pkg/instance/repository_cos.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ func init() {
}

type CosTcInstanceRepository struct {
region string
client *sdk.Client
logger log.Logger
}
Expand Down Expand Up @@ -62,6 +63,11 @@ func (repo *CosTcInstanceRepository) ListByFilters(filters map[string]string) (i
return
}
for _, meta := range resp.Buckets {
// when region is ap-guangzhou, will get all buckets in every region.
// need to filter by region
if meta.Region != repo.region {
continue
}
ins, e := NewCosTcInstance(meta.Name, &meta)
if e != nil {
level.Error(repo.logger).Log("msg", "Create Cos instance fail", "id", meta.Name)
Expand All @@ -84,6 +90,7 @@ func NewCosTcInstanceRepository(cred common.CredentialIface, c *config.TencentCo
return
}
repo = &CosTcInstanceRepository{
region: c.Credential.Region,
client: cli,
logger: logger,
}
Expand Down
45 changes: 31 additions & 14 deletions pkg/metric/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"golang.org/x/time/rate"

monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724"
v20180724 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724"
"github.com/tencentyun/tencentcloud-exporter/pkg/client"
"github.com/tencentyun/tencentcloud-exporter/pkg/config"
)
Expand All @@ -35,10 +36,11 @@ type TcmMetricRepository interface {
}

type TcmMetricRepositoryImpl struct {
credential common.CredentialIface
monitorClient *monitor.Client
limiter *rate.Limiter // 限速
ctx context.Context
credential common.CredentialIface
monitorClient *monitor.Client
monitorClientInGuangzhou *monitor.Client
limiter *rate.Limiter // 限速
ctx context.Context

queryMetricBatchSize int

Expand Down Expand Up @@ -130,7 +132,12 @@ func (repo *TcmMetricRepositoryImpl) GetSamples(s *TcmSeries, st int64, et int64
request.EndTime = &etStr
}

response, err := repo.monitorClient.GetMonitorData(request)
response := &v20180724.GetMonitorDataResponse{}
if s.Metric.Meta.ProductName == "COS" {
response, err = repo.monitorClientInGuangzhou.GetMonitorData(request)
} else {
response, err = repo.monitorClient.GetMonitorData(request)
}
if err != nil {
return
}
Expand Down Expand Up @@ -175,9 +182,14 @@ func (repo *TcmMetricRepositoryImpl) listSampleByBatch(
return nil, err
}

//level.Info(repo.logger).Log("st", st, "et", et)
request := repo.buildGetMonitorDataRequest(m, seriesList, st, et)
response, err := repo.monitorClient.GetMonitorData(request)

response := &v20180724.GetMonitorDataResponse{}
if m.Meta.ProductName == "COS" {
response, err = repo.monitorClientInGuangzhou.GetMonitorData(request)
} else {
response, err = repo.monitorClient.GetMonitorData(request)
}
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -262,18 +274,23 @@ func (repo *TcmMetricRepositoryImpl) buildSamples(
}

func NewTcmMetricRepository(cred common.CredentialIface, conf *config.TencentConfig, logger log.Logger) (repo TcmMetricRepository, err error) {
monitorClient, err := client.NewMonitorClient(cred, conf)
monitorClient, err := client.NewMonitorClient(cred, conf, conf.Credential.Region)
if err != nil {
return
}
monitorClientInGuangzhou, err := client.NewMonitorClient(cred, conf, "ap-guangzhou")
if err != nil {
return
}

repo = &TcmMetricRepositoryImpl{
credential: cred,
monitorClient: monitorClient,
limiter: rate.NewLimiter(rate.Limit(conf.RateLimit), 1),
ctx: context.Background(),
queryMetricBatchSize: conf.MetricQueryBatchSize,
logger: logger,
credential: cred,
monitorClient: monitorClient,
monitorClientInGuangzhou: monitorClientInGuangzhou,
limiter: rate.NewLimiter(rate.Limit(conf.RateLimit), 1),
ctx: context.Background(),
queryMetricBatchSize: conf.MetricQueryBatchSize,
logger: logger,
}

return
Expand Down
Loading