Skip to content

Commit

Permalink
use struct instead of map assert
Browse files Browse the repository at this point in the history
Signed-off-by: ZhangJian He <shoothzj@gmail.com>
  • Loading branch information
shoothzj committed Mar 9, 2023
1 parent da074bb commit 3820f92
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions pkg/scheduler/metrics/source/metrics_client_elasticsearch.go
Expand Up @@ -40,11 +40,11 @@ type ElasticsearchMetricsClient struct {

func NewElasticsearchMetricsClient(address string, conf map[string]string) (*ElasticsearchMetricsClient, error) {
e := &ElasticsearchMetricsClient{address: address}
indexConf := conf["elasticsearch.index"]
if len(indexConf) == 0 {
indexName := conf["elasticsearch.index"]
if len(indexName) == 0 {
e.indexName = "metricbeat-*"
} else {
e.indexName = indexConf
e.indexName = indexName
}
var err error
e.es, err = elasticsearch.NewClient(elasticsearch.Config{
Expand Down Expand Up @@ -100,25 +100,27 @@ func (e *ElasticsearchMetricsClient) NodeMetricsAvg(ctx context.Context, nodeNam
}
res, err := e.es.Search(
e.es.Search.WithContext(ctx),
e.es.Search.WithIndex("metricbeat-*"),
e.es.Search.WithIndex(e.indexName),
e.es.Search.WithBody(&buf),
)
if err != nil {
return nil, err
}
defer res.Body.Close()
var r map[string]interface{}
var r struct {
Aggregations struct {
Cpu struct {
Value float64 `json:"value"`
}
Mem struct {
Value float64 `json:"value"`
}
} `json:"aggregations"`
}
if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
return nil, err
}
aggs := r["aggregations"].(map[string]interface{})
cpuUsage, ok := aggs["cpu"].(map[string]interface{})["value"].(float64)
if ok {
nodeMetrics.Cpu = cpuUsage
}
memUsage, ok := aggs["mem"].(map[string]interface{})["value"].(float64)
if ok {
nodeMetrics.Memory = memUsage
}
nodeMetrics.Cpu = r.Aggregations.Cpu.Value
nodeMetrics.Memory = r.Aggregations.Mem.Value
return nodeMetrics, nil
}

0 comments on commit 3820f92

Please sign in to comment.