Request edge metrics only if prometheus metrics data is empty

Signed-off-by: zhu733756 <talonzhu@yunify.com>
This commit is contained in:
zhu733756
2021-03-26 10:30:18 +08:00
parent 8ca0c86b39
commit 5b3bced5d7

View File

@@ -115,19 +115,28 @@ func (mo monitoringOperator) GetNamedMetrics(metrics []string, time time.Time, o
ress := mo.prometheus.GetNamedMetrics(metrics, time, opt) ress := mo.prometheus.GetNamedMetrics(metrics, time, opt)
if mo.metricsserver != nil { if mo.metricsserver != nil {
mr := mo.metricsserver.GetNamedMetrics(metrics, time, opt)
//Merge edge node metrics data //Merge edge node metrics data
edgeMetrics := make(map[string]monitoring.MetricData) edgeMetrics := make(map[string]monitoring.MetricData)
for _, metric := range mr {
edgeMetrics[metric.MetricName] = metric.MetricData
}
for i, metric := range ress { for i, ressMetric := range ress {
if val, ok := edgeMetrics[metric.MetricName]; ok { metircName := ressMetric.MetricName
ressMetricValues := ressMetric.MetricData.MetricValues
if len(ressMetricValues) == 0 {
// this metric has no prometheus metrics data
if len(edgeMetrics) == 0 {
// start to request monintoring metricsApi data
mr := mo.metricsserver.GetNamedMetrics(metrics, time, opt)
for _, mrMetric := range mr {
edgeMetrics[mrMetric.MetricName] = mrMetric.MetricData
}
}
if val, ok := edgeMetrics[metircName]; ok {
ress[i].MetricData.MetricValues = append(ress[i].MetricData.MetricValues, val.MetricValues...) ress[i].MetricData.MetricValues = append(ress[i].MetricData.MetricValues, val.MetricValues...)
} }
} }
}
} }
return Metrics{Results: ress} return Metrics{Results: ress}
@@ -137,20 +146,28 @@ func (mo monitoringOperator) GetNamedMetricsOverTime(metrics []string, start, en
ress := mo.prometheus.GetNamedMetricsOverTime(metrics, start, end, step, opt) ress := mo.prometheus.GetNamedMetricsOverTime(metrics, start, end, step, opt)
if mo.metricsserver != nil { if mo.metricsserver != nil {
mr := mo.metricsserver.GetNamedMetricsOverTime(metrics, start, end, step, opt)
//Merge edge node metrics data //Merge edge node metrics data
edgeMetrics := make(map[string]monitoring.MetricData) edgeMetrics := make(map[string]monitoring.MetricData)
for _, metric := range mr {
edgeMetrics[metric.MetricName] = metric.MetricData
}
for i, metric := range ress { for i, ressMetric := range ress {
if val, ok := edgeMetrics[metric.MetricName]; ok { metircName := ressMetric.MetricName
ressMetricValues := ressMetric.MetricData.MetricValues
if len(ressMetricValues) == 0 {
// this metric has no prometheus metrics data
if len(edgeMetrics) == 0 {
// start to request monintoring metricsApi data
mr := mo.metricsserver.GetNamedMetricsOverTime(metrics, start, end, step, opt)
for _, mrMetric := range mr {
edgeMetrics[mrMetric.MetricName] = mrMetric.MetricData
}
}
if val, ok := edgeMetrics[metircName]; ok {
ress[i].MetricData.MetricValues = append(ress[i].MetricData.MetricValues, val.MetricValues...) ress[i].MetricData.MetricValues = append(ress[i].MetricData.MetricValues, val.MetricValues...)
} }
} }
} }
}
return Metrics{Results: ress} return Metrics{Results: ress}
} }