diff --git a/pkg/hostman/hostinfo/hostinfo.go b/pkg/hostman/hostinfo/hostinfo.go index a533fcd392..53232bc12e 100644 --- a/pkg/hostman/hostinfo/hostinfo.go +++ b/pkg/hostman/hostinfo/hostinfo.go @@ -926,7 +926,7 @@ func (h *SHostInfo) getDomainInfo(hostId string) { domain_id, _ := host.GetString("domain_id") project_domain, _ := host.GetString("project_domain") h.Domain_id = domain_id - h.Project_domain = project_domain + h.Project_domain = strings.ReplaceAll(project_domain, " ", "+") } func (h *SHostInfo) setHostname(name string) { diff --git a/pkg/hostman/hostmetrics/hostmetrics.go b/pkg/hostman/hostmetrics/hostmetrics.go index faab9b0f9d..77b1de280e 100644 --- a/pkg/hostman/hostmetrics/hostmetrics.go +++ b/pkg/hostman/hostmetrics/hostmetrics.go @@ -289,7 +289,7 @@ func (s *SGuestMonitorCollector) addTelegrafLine( var tagArr = []string{} for k, v := range tags { - tagArr = append(tagArr, fmt.Sprintf("%s=%s", k, v)) + tagArr = append(tagArr, fmt.Sprintf("%s=%s", k, strings.ReplaceAll(v, " ", "+"))) } tagStr := strings.Join(tagArr, ",") diff --git a/pkg/monitor/models/datasource.go b/pkg/monitor/models/datasource.go index e0191da24d..5a3e99ef1a 100644 --- a/pkg/monitor/models/datasource.go +++ b/pkg/monitor/models/datasource.go @@ -885,6 +885,7 @@ func (self *SDataSourceManager) getFilterMeasurementTagValue(tagValueChan *influ tagMap, _ := rtn[rtnIndex][serieIndex].Tags.GetMap() for key, valObj := range tagMap { valStr, _ := valObj.GetString() + valStr = self._renderTagVal(valStr) if len(valStr) == 0 || valStr == "null" || filterTagValue(valStr) { continue } @@ -908,6 +909,9 @@ func (self *SDataSourceManager) getFilterMeasurementTagValue(tagValueChan *influ return nil } +func (self *SDataSourceManager) _renderTagVal(val string) string { + return strings.ReplaceAll(val, "+", " ") +} func floatEquals(a, b float64) bool { eps := 0.000000001 if math.Abs(a-b) < eps { diff --git a/pkg/monitor/tsdb/driver/influxdb/query.go b/pkg/monitor/tsdb/driver/influxdb/query.go index e7711c1611..35069b2787 100644 --- a/pkg/monitor/tsdb/driver/influxdb/query.go +++ b/pkg/monitor/tsdb/driver/influxdb/query.go @@ -85,13 +85,17 @@ func (query *Query) renderTags() []string { textValue = fmt.Sprintf("'%s'", strings.Replace(tag.Value, `\`, `\\`, -1)) } } - + textValue = query.renderTagValue(textValue) res = append(res, fmt.Sprintf(`%s"%s" %s %s`, str, tag.Key, tag.Operator, textValue)) } return res } +func (query *Query) renderTagValue(val string) string { + return strings.ReplaceAll(val, " ", "+") +} + func (query *Query) renderTimeFilter(queryCtx *tsdb.TsdbQuery) string { from := "" if strings.Contains(queryCtx.TimeRange.From, "now-") { diff --git a/pkg/monitor/tsdb/driver/influxdb/response_parser.go b/pkg/monitor/tsdb/driver/influxdb/response_parser.go index 61144cc31c..f78bc0df8f 100644 --- a/pkg/monitor/tsdb/driver/influxdb/response_parser.go +++ b/pkg/monitor/tsdb/driver/influxdb/response_parser.go @@ -94,11 +94,16 @@ func (rp *ResponseParser) transformRowsV2(rows []Row, queryResult *tsdb.QueryRes points = append(points, point) } } + tags := make(map[string]string) + for key, val := range row.Tags { + val_ := strings.ReplaceAll(val, "+", " ") + tags[key] = val_ + } result = append(result, &tsdb.TimeSeries{ Name: rp.formatSerieName(row, col, query), Columns: columns, Points: points, - Tags: row.Tags, + Tags: tags, }) }