diff --git a/clients/pkg/promtail/targets/lokipush/pushtargetmanager.go b/clients/pkg/promtail/targets/lokipush/pushtargetmanager.go index 5356e06ee7..be29037544 100644 --- a/clients/pkg/promtail/targets/lokipush/pushtargetmanager.go +++ b/clients/pkg/promtail/targets/lokipush/pushtargetmanager.go @@ -3,11 +3,11 @@ package lokipush import ( "errors" "fmt" - "strings" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/prometheus/util/strutil" "github.com/grafana/loki/clients/pkg/logentry/stages" "github.com/grafana/loki/clients/pkg/promtail/api" @@ -69,7 +69,7 @@ func validateJobName(scrapeConfigs []scrapeconfig.Config) error { } jobNames[cfg.JobName] = struct{}{} - scrapeConfigs[i].JobName = strings.Replace(cfg.JobName, " ", "_", -1) + scrapeConfigs[i].JobName = strutil.SanitizeLabelName(cfg.JobName) } return nil } diff --git a/clients/pkg/promtail/targets/lokipush/pushtargetmanager_test.go b/clients/pkg/promtail/targets/lokipush/pushtargetmanager_test.go index 1e176547d8..2c6267ac72 100644 --- a/clients/pkg/promtail/targets/lokipush/pushtargetmanager_test.go +++ b/clients/pkg/promtail/targets/lokipush/pushtargetmanager_test.go @@ -58,6 +58,19 @@ func Test_validateJobName(t *testing.T) { }, wantErr: true, }, + { + name: "validate with special characters", + configs: []scrapeconfig.Config{ + { + JobName: "job$1-2!3@4*job", + PushConfig: &scrapeconfig.PushTargetConfig{ + Server: server.Config{}, + }, + }, + }, + wantErr: false, + expectedJob: "job_1_2_3_4_job", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {