From 0dafd391d3e172eb0488990aa0181419f33e4f68 Mon Sep 17 00:00:00 2001 From: Ericsssss Date: Wed, 11 Oct 2023 17:51:13 +0800 Subject: [PATCH] [Tagrecorder] modify app_label_map - run automation test (basic) pass --- server/controller/tagrecorder/ch_app_label.go | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/server/controller/tagrecorder/ch_app_label.go b/server/controller/tagrecorder/ch_app_label.go index d3b30ce8e4d..4048294fbb8 100644 --- a/server/controller/tagrecorder/ch_app_label.go +++ b/server/controller/tagrecorder/ch_app_label.go @@ -17,6 +17,8 @@ package tagrecorder import ( + "golang.org/x/exp/slices" + "github.com/deepflowio/deepflow/server/controller/db/mysql" ) @@ -47,6 +49,7 @@ func (l *ChAPPLabel) generateNewData() (map[PrometheusAPPLabelKey]mysql.ChAPPLab if !ok { return nil, false } + appLabelSlice, ok := l.generateAPPLabelData() labelNameIDMap, valueNameIDMap, ok := l.generateNameIDData() if !ok { @@ -58,14 +61,17 @@ func (l *ChAPPLabel) generateNewData() (map[PrometheusAPPLabelKey]mysql.ChAPPLab labelID := prometheusMetricLabel.LabelID labelNameValueData := metricLabelIDNameValueMap[labelID] labelName := labelNameValueData["label_name"] - labelNameID := labelNameIDMap[labelName] - labelValue := labelNameValueData["label_value"] - labelValueID := valueNameIDMap[labelValue] - keyToItem[PrometheusAPPLabelKey{LabelNameID: labelNameID, LabelValueID: labelValueID}] = mysql.ChAPPLabel{ - LabelNameID: labelNameID, - LabelValue: labelValue, - LabelValueID: labelValueID, + if slices.Contains(appLabelSlice, labelName) { + labelNameID := labelNameIDMap[labelName] + labelValue := labelNameValueData["label_value"] + labelValueID := valueNameIDMap[labelValue] + keyToItem[PrometheusAPPLabelKey{LabelNameID: labelNameID, LabelValueID: labelValueID}] = mysql.ChAPPLabel{ + LabelNameID: labelNameID, + LabelValue: labelValue, + LabelValueID: labelValueID, + } } + } return keyToItem, true } @@ -101,6 +107,22 @@ func (l *ChAPPLabel) generateLabelIDNameValueData() (map[int]map[string]string, return metricLabelIDNameValueMap, true } +func (l *ChAPPLabel) generateAPPLabelData() ([]string, bool) { + appLabelSlice := []string{} + var prometheusAPPMetricAPPLabelLayouts []mysql.ChPrometheusMetricAPPLabelLayout + err := mysql.Db.Unscoped().Select("app_label_name").Group("app_label_name").Find(&prometheusAPPMetricAPPLabelLayouts).Error + + if err != nil { + log.Errorf(dbQueryResourceFailed(l.resourceTypeName, err)) + return appLabelSlice, false + } + + for _, prometheusAPPMetricAPPLabelLayout := range prometheusAPPMetricAPPLabelLayouts { + appLabelSlice = append(appLabelSlice, prometheusAPPMetricAPPLabelLayout.APPLabelName) + } + return appLabelSlice, true +} + func (l *ChAPPLabel) generateNameIDData() (map[string]int, map[string]int, bool) { labelNameIDMap := make(map[string]int) valueNameIDMap := make(map[string]int)