diff --git a/cores/server_it_test.go b/cores/server_it_test.go index 638113044..982791509 100644 --- a/cores/server_it_test.go +++ b/cores/server_it_test.go @@ -151,6 +151,7 @@ func testServeHHTPFail(t *testing.T) { "invalid_port_format", cfgDflt.HTTPCfg().JsonRPCURL, cfgDflt.HTTPCfg().WSURL, + cfgDflt.HTTPCfg().PrometheusURL, cfgDflt.HTTPCfg().UseBasicAuth, cfgDflt.HTTPCfg().AuthUsers, ) diff --git a/data/conf/samples/ees/cgrates.json b/data/conf/samples/ees/cgrates.json index 0f96440e8..3d1d3e73f 100644 --- a/data/conf/samples/ees/cgrates.json +++ b/data/conf/samples/ees/cgrates.json @@ -127,7 +127,7 @@ "attempts": 1, "field_separator": ",", "synchronous": true, - "fields":[ + "fields":[ {"tag": "Number", "path": "*hdr.Number", "type": "*constant", "value": "NumberOfEvent"}, {"tag": "CGRID", "path": "*hdr.CGRID", "type": "*constant", "value": "CGRID"}, {"tag": "RunID", "path": "*hdr.RunID", "type": "*constant", "value": "RunID"}, diff --git a/data/conf/samples/stats_mysql/cgrates.json b/data/conf/samples/stats_mysql/cgrates.json index ac5695068..5d8d05863 100644 --- a/data/conf/samples/stats_mysql/cgrates.json +++ b/data/conf/samples/stats_mysql/cgrates.json @@ -30,12 +30,12 @@ "enabled": true, "store_interval": "-1", "thresholds_conns": ["*internal"], - "opts": { // - "*prometheusMetrics": [ + "opts": { + "*prometheusStatIDs": [ { "Tenant": "*any", "FilterIDs": [], - "Value": ["SQ_1", "SQ_2"], + "Value": ["SQ_1"], }, ], }, diff --git a/engine/statmetrics.go b/engine/statmetrics.go index 0c4e422e2..8b8d7f1c2 100644 --- a/engine/statmetrics.go +++ b/engine/statmetrics.go @@ -854,7 +854,10 @@ func exportToPrometheus(matchSQs StatQueues, promIDs utils.StringSet) (err error if _, has := promIDs[qos.ID]; !has { continue } - tntID := strings.Replace(qos.TenantID(), ".", "_", -1) + tntID, err := getStatTenantID(qos.TenantID()) + if err != nil { + return err + } gaugeVal := prometheus.NewGaugeVec(prometheus.GaugeOpts{ Subsystem: "stats", Name: tntID, @@ -877,3 +880,12 @@ func exportToPrometheus(matchSQs StatQueues, promIDs utils.StringSet) (err error } return } + +func getStatTenantID(tntID string) (promTntID string, err error) { + for _, char := range tntID { + if strings.ContainsAny(string(char), `/,.'"\`) { + tntID = strings.Replace(tntID, string(char), "_", -1) + } + } + return tntID, nil +} diff --git a/engine/stats.go b/engine/stats.go index 97e0f27f5..55fc8f237 100644 --- a/engine/stats.go +++ b/engine/stats.go @@ -342,8 +342,8 @@ func (sS *StatS) processEvent(ctx *context.Context, tnt string, args *utils.CGRE } var promIDs []string - if promIDs, err = GetStringSliceOpts(ctx, tnt, args, sS.fltrS, sS.cfg.StatSCfg().Opts.PrometheusMetrics, - []string{}, utils.OptsPrometheusMetrics); err != nil { + if promIDs, err = GetStringSliceOpts(ctx, tnt, args, sS.fltrS, sS.cfg.StatSCfg().Opts.PrometheusStatIDs, + []string{}, utils.OptsPrometheusStatIDs); err != nil { return } if len(promIDs) != 0 { diff --git a/utils/consts.go b/utils/consts.go index 09072d78e..ab652bcd2 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -2334,7 +2334,7 @@ const ( // Stats OptsStatsProfileIDs = "*statsProfileIDs" OptsRoundingDecimals = "*roundingDecimals" - OptsPrometheusMetrics = "*prometheusMetrics" + OptsPrometheusStatIDs = "*prometheusStatIDs" // Thresholds OptsThresholdsProfileIDs = "*thdProfileIDs"