diff --git a/CHANGELOG.md b/CHANGELOG.md index 253af850f..1908550ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## v0.129 + +### Changed + +- Switched logging from zerolog to slog. Log output format has changed. +- Removed `fatal` and `panic` log levels, use `error` instead. +- Removed [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs). + ## v0.128 ### Fixed diff --git a/README.md b/README.md index 9c816f8d4..473a3de32 100644 --- a/README.md +++ b/README.md @@ -265,9 +265,6 @@ Images are built automatically for: - release tags in git - `ghcr.io/prymitive/karma:vX.Y.Z` - main branch commits - `ghcr.io/prymitive/karma:latest` -_NOTE_ karma uses [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs) -to automatically adjust `GOMAXPROCS` to match Linux container CPU quota. - #### Examples To start a release image run: diff --git a/cmd/karma/alert_history.go b/cmd/karma/alert_history.go index 358704a0f..4a7c543dc 100644 --- a/cmd/karma/alert_history.go +++ b/cmd/karma/alert_history.go @@ -6,6 +6,7 @@ import ( "encoding/hex" "fmt" "io" + "log/slog" "net/http" "net/url" "slices" @@ -20,7 +21,6 @@ import ( "github.com/prometheus/client_golang/api" v1 "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/common/model" - "github.com/rs/zerolog/log" "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" @@ -133,7 +133,7 @@ type historyPoller struct { } func newHistoryPoller(queueSize int, queryTimeout time.Duration) *historyPoller { - log.Debug().Int("queue", queueSize).Dur("timeout", queryTimeout).Msg("Starting history poller") + slog.Debug("Starting history poller", slog.Int("queue", queueSize), slog.Duration("timeout", queryTimeout)) cache, _ := lru.New[string, *cachedOffsets](1000) knownBad, _ := lru.New[string, *knownBadUpstream](100) return &historyPoller{ @@ -156,7 +156,7 @@ func (hp *historyPoller) run(workers int) { } func (hp *historyPoller) stop() { - log.Debug().Msg("Stopping history poller") + slog.Debug("Stopping history poller") hp.isRunning.Store(false) close(hp.queue) } @@ -190,50 +190,54 @@ func (hp *historyPoller) knownBadLookup(key string) (*knownBadUpstream, bool) { } func (hp *historyPoller) startWorker(wid int) { - log.Debug().Int("worker", wid).Int("queue", cap(hp.queue)).Dur("timeout", hp.queryTimeout).Msg("Starting history poller") + slog.Debug("Starting history poller", slog.Int("worker", wid), slog.Int("queue", cap(hp.queue)), slog.Duration("timeout", hp.queryTimeout)) for j := range hp.queue { sourceURI, headers := rewriteSource(config.Config.History.Rewrite, j.uri) expiredAt := time.Now().Add(time.Minute * -5) key := hashQuery(sourceURI, j.labels) if kb, found := hp.knownBadLookup(key); found && kb.timestamp.After(expiredAt) { - log.Debug(). - Int("worker", wid). - Str("uri", sourceURI). - Interface("labels", j.labels). - Str("key", key). - Msg("Upstream already marked as invalid, skipping") + slog.Debug( + "Upstream already marked as invalid, skipping", + slog.Int("worker", wid), + slog.String("uri", sourceURI), + slog.Any("labels", j.labels), + slog.String("key", key), + ) j.result <- historyQueryResult{values: nil, err: kb.err} continue } if v := hp.cacheLookup(key); v != nil && v.timestamp.After(expiredAt) { - log.Debug(). - Int("worker", wid). - Str("uri", sourceURI). - Interface("labels", j.labels). - Str("key", key). - Msg("Got results from cache") + slog.Debug( + "Got results from cache", + slog.Int("worker", wid), + slog.String("uri", sourceURI), + slog.Any("labels", j.labels), + slog.String("key", key), + ) j.result <- historyQueryResult{values: v.values, err: nil} continue } transport, err := rewriteTransport(config.Config.History.Rewrite, j.uri) if err != nil { - log.Warn(). - Int("worker", wid). - Str("uri", sourceURI). - Err(err). - Msg("Error while configuring HTTP transport for history request") + slog.Warn( + "Error while configuring HTTP transport for history request", + slog.Int("worker", wid), + slog.String("uri", sourceURI), + slog.Any("error", err), + ) } if len(headers) > 0 { transport = mapper.SetHeaders(transport, headers) } values, err := countAlerts(sourceURI, hp.queryTimeout, transport, j.labels) if err != nil { - log.Error(). - Err(err). - Int("worker", wid). - Str("uri", sourceURI). - Interface("labels", j.labels). - Msg("History query failed") + slog.Error( + "History query failed", + slog.Any("error", err), + slog.Int("worker", wid), + slog.String("uri", sourceURI), + slog.Any("labels", j.labels), + ) hp.knownBadSave(key, knownBadUpstream{timestamp: time.Now(), err: err}) } else { hp.cacheSave(key, values) @@ -265,7 +269,7 @@ func rewriteSource(rules []config.HistoryRewrite, uri string) (string, map[strin for _, submatches := range rule.SourceRegex.FindAllStringSubmatchIndex(uri, -1) { result = rule.SourceRegex.ExpandString(result, rule.URI, uri, submatches) } - log.Debug().Str("source", uri).Str("uri", string(result)).Msg("Alert history source rewrite") + slog.Debug("Alert history source rewrite", slog.String("source", uri), slog.String("uri", string(result))) return string(result), rule.Headers } return uri, nil @@ -341,12 +345,13 @@ func countAlerts(uri string, timeout time.Duration, transport http.RoundTripper, } } q := fmt.Sprintf("changes(ALERTS_FOR_STATE%s[1h])", lv) - log.Debug(). - Str("uri", uri). - Interface("labels", labels). - Str("query", q). - Dur("timeout", timeout). - Msg("Send alert count query") + slog.Debug( + "Send alert count query", + slog.String("uri", uri), + slog.Any("labels", labels), + slog.String("query", q), + slog.Duration("timeout", timeout), + ) result, _, err := v1api.QueryRange(ctx, q, r) if err != nil { @@ -355,9 +360,9 @@ func countAlerts(uri string, timeout time.Duration, transport http.RoundTripper, if samples, ok := result.(model.Matrix); ok { for _, sample := range samples { - log.Debug().Int("values", len(sample.Values)).Msg("Sample values") + slog.Debug("Sample values", slog.Int("values", len(sample.Values))) for _, pair := range sample.Values { - log.Debug().Int("value", int(pair.Value)).Time("timestamp", pair.Timestamp.Time()).Msg("Sample") + slog.Debug("Sample", slog.Int("value", int(pair.Value)), slog.Time("timestamp", pair.Timestamp.Time())) ret = append(ret, OffsetSample{ Timestamp: pair.Timestamp.Time(), Value: int(pair.Value), diff --git a/cmd/karma/alert_history_test.go b/cmd/karma/alert_history_test.go index a1a1be796..1565a36df 100644 --- a/cmd/karma/alert_history_test.go +++ b/cmd/karma/alert_history_test.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/json" "fmt" + "log/slog" "net/http/httptest" "regexp" "strconv" @@ -13,9 +14,9 @@ import ( "github.com/google/go-cmp/cmp" "github.com/jarcoal/httpmock" "github.com/prometheus/common/model" - "github.com/rs/zerolog" "github.com/prymitive/karma/internal/config" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/regex" ) @@ -608,7 +609,7 @@ func TestAlertHistory(t *testing.T) { return true }) - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) for i, tc := range testCases { t.Run(fmt.Sprintf("%d/enabled=%v", i, tc.config.enabled), func(t *testing.T) { httpmock.Activate() diff --git a/cmd/karma/alerts.go b/cmd/karma/alerts.go index dce940b5f..072547d23 100644 --- a/cmd/karma/alerts.go +++ b/cmd/karma/alerts.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "log/slog" "maps" "math" "slices" @@ -9,7 +10,6 @@ import ( "github.com/fvbommel/sortorder" promlabels "github.com/prometheus/prometheus/model/labels" - "github.com/rs/zerolog/log" "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" @@ -288,7 +288,7 @@ func autoGridLabel(dedupedAlerts []models.AlertGroup) string { }) } } - log.Debug().Int("alerts", alertsCount).Int("groups", alertGroupsCount).Msg("Alerts count for automatic grid label") + slog.Debug("Alerts count for automatic grid label", slog.Int("alerts", alertsCount), slog.Int("groups", alertGroupsCount)) candidates := map[string]int{} for key, vals := range labelToAlertCount { @@ -301,7 +301,7 @@ func autoGridLabel(dedupedAlerts []models.AlertGroup) string { total += cnt uniqueValues[val] = struct{}{} } - log.Debug().Str("label", key).Int("alerts", total).Msg("Number of alerts per label") + slog.Debug("Number of alerts per label", slog.String("label", key), slog.Int("alerts", total)) if total < alertsCount { continue } @@ -312,10 +312,16 @@ func autoGridLabel(dedupedAlerts []models.AlertGroup) string { var lastCnt int for key, uniqueValues := range candidates { if uniqueValues == 1 || uniqueValues >= alertsCount || uniqueValues >= alertGroupsCount { - log.Debug().Int("variants", uniqueValues).Int("alerts", alertsCount).Int("groups", alertGroupsCount).Str("label", key).Msg("Excluding label from automatic grid selection") + slog.Debug( + "Excluding label from automatic grid selection", + slog.Int("variants", uniqueValues), + slog.Int("alerts", alertsCount), + slog.Int("groups", alertGroupsCount), + slog.String("label", key), + ) continue } - log.Debug().Int("variants", uniqueValues).Str("label", key).Msg("Automatic grid label candidate") + slog.Debug("Automatic grid label candidate", slog.Int("variants", uniqueValues), slog.String("label", key)) if lastCnt == 0 || uniqueValues < lastCnt || (uniqueValues == lastCnt && isPreferredLabel(key, lastLabel)) { lastLabel = key lastCnt = uniqueValues diff --git a/cmd/karma/assets.go b/cmd/karma/assets.go index ca4131c13..7dbde412d 100644 --- a/cmd/karma/assets.go +++ b/cmd/karma/assets.go @@ -2,6 +2,7 @@ package main import ( "io" + "log/slog" "mime" "net/http" "os" @@ -9,8 +10,6 @@ import ( "strings" "time" - "github.com/rs/zerolog/log" - "github.com/prymitive/karma/ui" ) @@ -46,22 +45,28 @@ func serverStaticFiles(prefix, root string) func(next http.Handler) http.Handler fixedPath := strings.TrimPrefix(r.URL.Path, prefix) filePath := strings.TrimSuffix(root, "/") + "/" + strings.TrimPrefix(fixedPath, "/") - log.Debug().Str("path", r.URL.Path).Str("root", root).Str("prefix", prefix).Str("filePath", filePath).Msg("Static file request") + slog.Debug( + "Static file request", + slog.String("path", r.URL.Path), + slog.String("root", root), + slog.String("prefix", prefix), + slog.String("filePath", filePath), + ) if !strings.HasPrefix(r.URL.Path, prefix) { - log.Debug().Str("path", r.URL.Path).Str("prefix", prefix).Msg("Ignoring static file request") + slog.Debug("Ignoring static file request", slog.String("path", r.URL.Path), slog.String("prefix", prefix)) next.ServeHTTP(w, r) return } fl, err := ui.StaticFiles.Open(filePath) if err != nil { - log.Debug().Str("path", r.URL.Path).Msg("Static file not found") + slog.Debug("Static file not found", slog.String("path", r.URL.Path)) next.ServeHTTP(w, r) return } defer fl.Close() - log.Debug().Str("path", r.URL.Path).Msg("Static file found") + slog.Debug("Static file found", slog.String("path", r.URL.Path)) ct := mime.TypeByExtension(filepath.Ext(filePath)) if ct == "" { diff --git a/cmd/karma/benchmark_test.go b/cmd/karma/benchmark_test.go index 72157b850..39d5d5d8b 100644 --- a/cmd/karma/benchmark_test.go +++ b/cmd/karma/benchmark_test.go @@ -4,17 +4,17 @@ import ( "bytes" "encoding/json" "fmt" + "log/slog" "net/http/httptest" "testing" - "github.com/rs/zerolog" - + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/mock" "github.com/prymitive/karma/internal/models" ) func BenchmarkPullAlerts(b *testing.B) { - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) mockConfig(b.Setenv) for _, version := range mock.ListAllMocks() { @@ -29,7 +29,7 @@ func BenchmarkPullAlerts(b *testing.B) { } func BenchmarkAlertsAPIMisses(b *testing.B) { - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) payload, err := json.Marshal(models.AlertsRequest{ Filters: []string{}, @@ -65,7 +65,7 @@ func BenchmarkAlertsAPIMisses(b *testing.B) { } func BenchmarkAlertsAPIMissesAutoGrid(b *testing.B) { - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) mockConfig(b.Setenv) for _, version := range mock.ListAllMocks() { @@ -102,7 +102,7 @@ func BenchmarkAlertsAPIMissesAutoGrid(b *testing.B) { } func BenchmarkAlertsAPIHits(b *testing.B) { - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) payload, err := json.Marshal(models.AlertsRequest{ Filters: []string{}, diff --git a/cmd/karma/exporter.go b/cmd/karma/exporter.go index c1df48002..35c9d8659 100644 --- a/cmd/karma/exporter.go +++ b/cmd/karma/exporter.go @@ -1,6 +1,7 @@ package main import ( + "log/slog" "net/http" "strconv" "strings" @@ -9,7 +10,6 @@ import ( "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/prometheus/client_golang/prometheus" - "github.com/rs/zerolog/log" "github.com/prymitive/karma/internal/config" ) @@ -69,13 +69,15 @@ func promMiddleware(next http.Handler) http.Handler { ww.Header().Set("Content-Length", strconv.Itoa(ww.BytesWritten())) if config.Config.Log.Requests { - log.Log(). - Str("address", r.RemoteAddr). - Str("path", r.URL.RequestURI()). - Str("duration", time.Since(start).String()). - Str("method", r.Method).Int("code", ww.Status()). - Int("bytes", ww.BytesWritten()). - Msg("Request completed") + slog.Info( + "Request completed", + slog.String("address", r.RemoteAddr), + slog.String("path", r.URL.RequestURI()), + slog.String("duration", time.Since(start).String()), + slog.String("method", r.Method), + slog.Int("code", ww.Status()), + slog.Int("bytes", ww.BytesWritten()), + ) } }) } diff --git a/cmd/karma/main.go b/cmd/karma/main.go index bfc681d39..9f19cb5c3 100644 --- a/cmd/karma/main.go +++ b/cmd/karma/main.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "html/template" + "log/slog" "mime" "net" "net/http" @@ -20,6 +21,7 @@ import ( "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/models" "github.com/prymitive/karma/internal/transform" "github.com/prymitive/karma/internal/uri" @@ -31,10 +33,7 @@ import ( lru "github.com/hashicorp/golang-lru/v2" "github.com/klauspost/compress/flate" "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" "github.com/spf13/pflag" - "go.uber.org/automaxprocs/maxprocs" ) var ( @@ -172,18 +171,13 @@ func setupRouter(router *chi.Mux, historyPoller *historyPoller) { for _, am := range alertmanager.GetAlertmanagers() { if am.ProxyRequests { - log.Info(). - Str("alertmanager", am.Name). - Msg("Setting up proxy endpoints") + slog.Info("Setting up proxy endpoints", slog.String("alertmanager", am.Name)) setupRouterProxyHandlers(router, am) } } walkFunc := func(method, route string, _ http.Handler, _ ...func(http.Handler) http.Handler) error { - log.Debug(). - Str("method", method). - Str("route", route). - Msg("Registered handler") + slog.Debug("Registered handler", slog.String("method", method), slog.String("route", route)) return nil } _ = chi.Walk(router, walkFunc) @@ -245,93 +239,14 @@ func setupUpstreams() error { return nil } -func msgFormatter(msg any) string { - return fmt.Sprintf("msg=%q", msg) -} - -func lvlFormatter(level any) string { - if level == nil { - return "" - } - return fmt.Sprintf("level=%s", level) -} - -func discardFormatter(_ any) string { - return "" -} - -func initLogger() { - log.Logger = log.Logger.Output(zerolog.ConsoleWriter{ - Out: os.Stderr, - NoColor: true, - FormatLevel: lvlFormatter, - FormatMessage: msgFormatter, - FormatTimestamp: func(any) string { - return "" - }, - }) -} - func setupLogger() error { - zerolog.DurationFieldUnit = time.Second - - switch config.Config.Log.Format { - case "text": - if config.Config.Log.Timestamp { - log.Logger = log.Logger.Output(zerolog.ConsoleWriter{ - Out: os.Stderr, - NoColor: true, - FormatLevel: lvlFormatter, - FormatMessage: msgFormatter, - TimeFormat: "15:04:05", - }) - } else { - log.Logger = zerolog.New(os.Stderr).Output(zerolog.ConsoleWriter{ - Out: os.Stderr, - NoColor: true, - FormatLevel: lvlFormatter, - FormatMessage: msgFormatter, - FormatTimestamp: discardFormatter, - }) - } - case "json": - if config.Config.Log.Timestamp { - log.Logger = zerolog.New(os.Stderr).With().Timestamp().Logger() - } else { - log.Logger = zerolog.New(os.Stderr).With().Logger() - } - default: - return fmt.Errorf("unknown log format '%s'", config.Config.Log.Format) - } - - switch config.Config.Log.Level { - case "debug": - zerolog.SetGlobalLevel(zerolog.DebugLevel) - case "info": - zerolog.SetGlobalLevel(zerolog.InfoLevel) - case "warning": - zerolog.SetGlobalLevel(zerolog.WarnLevel) - case "error": - zerolog.SetGlobalLevel(zerolog.ErrorLevel) - case "fatal": - zerolog.SetGlobalLevel(zerolog.FatalLevel) - case "panic": - zerolog.SetGlobalLevel(zerolog.PanicLevel) - default: - return fmt.Errorf("unknown log level '%s'", config.Config.Log.Level) - } - - return nil -} - -func loadTemplates() error { - var t *template.Template - t, err := template.ParseFS(ui.StaticFiles, "dist/index.html") + level, err := log.ParseLevel(config.Config.Log.Level) if err != nil { - return fmt.Errorf("failed to load template: %w", err) + return err } - indexTemplate = t - return nil + log.SetLevel(level) + + return log.SetupLogger(config.Config.Log.Format, config.Config.Log.Timestamp) } func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, error) { @@ -363,9 +278,7 @@ func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, err } if configFile != "" { - log.Info(). - Str("path", configFile). - Msg("Reading configuration file") + slog.Info("Reading configuration file", slog.String("path", configFile)) } // timer duration cannot be zero second or a negative one @@ -373,7 +286,7 @@ func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, err return nil, nil, fmt.Errorf("invalid alertmanager.interval value '%v'", config.Config.Alertmanager.Interval) } - log.Info().Msgf("Version: %s", version) + slog.Info("Version: " + version) if config.Config.Log.Config { config.Config.LogValues() } @@ -400,9 +313,7 @@ func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, err } if config.Config.Authorization.ACL.Silences != "" { - log.Info(). - Str("path", config.Config.Authorization.ACL.Silences). - Msg("Reading silence ACL config file") + slog.Info("Reading silence ACL config file", slog.String("path", config.Config.Authorization.ACL.Silences)) var aclConfig *config.SilencesACLSchema aclConfig, err = config.ReadSilenceACLConfig(config.Config.Authorization.ACL.Silences) if err != nil { @@ -417,13 +328,10 @@ func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, err } silenceACLs = append(silenceACLs, acl) } - log.Info().Int("rules", len(silenceACLs)).Msg("Parsed ACL rules") + slog.Info("Parsed ACL rules", slog.Int("rules", len(silenceACLs))) } - err = loadTemplates() - if err != nil { - return nil, nil, err - } + indexTemplate, _ = template.ParseFS(ui.StaticFiles, "dist/index.html") router := chi.NewRouter() @@ -431,7 +339,7 @@ func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, err setupRouter(router, historyPoller) if *validateConfig { - log.Info().Msg("Configuration is valid") + slog.Info("Configuration is valid") return nil, nil, nil } @@ -440,7 +348,7 @@ func mainSetup(errorHandling pflag.ErrorHandling) (*chi.Mux, *historyPoller, err func writePidFile() error { if pidFile != "" { - log.Info().Str("path", pidFile).Msg("Writing PID file") + slog.Info("Writing PID file", slog.String("path", pidFile)) pid := os.Getpid() err := os.WriteFile(pidFile, []byte(strconv.Itoa(pid)), 0o644) if err != nil { @@ -452,7 +360,7 @@ func writePidFile() error { func removePidFile() error { if pidFile != "" { - log.Info().Str("path", pidFile).Msg("Removing PID file") + slog.Info("Removing PID file", slog.String("path", pidFile)) err := os.Remove(pidFile) if err != nil { return fmt.Errorf("failed to remove PID file: %w", err) @@ -475,18 +383,14 @@ func serve(errorHandling pflag.ErrorHandling) error { return err } - _, _ = maxprocs.Set(maxprocs.Logger(func(format string, v ...any) { - log.Debug().Msgf(format, v) - })) - if config.Config.History.Enabled { go historyPoller.run(config.Config.History.Workers) } // before we start try to fetch data from Alertmanager - log.Info().Msg("Initial Alertmanager collection") + slog.Info("Initial Alertmanager collection") pullFromAlertmanager() - log.Info().Msg("Done, starting HTTP server") + slog.Info("Done, starting HTTP server") // background loop that will fetch updates from Alertmanager ticker = time.NewTicker(config.Config.Alertmanager.Interval) @@ -508,20 +412,20 @@ func serve(errorHandling pflag.ErrorHandling) error { quit := make(chan os.Signal, 1) if config.Config.Listen.TLS.Cert != "" { - log.Info().Str("address", listener.Addr().String()).Msg("Starting HTTPS server") + slog.Info("Starting HTTPS server", slog.String("address", listener.Addr().String())) go func() { err := httpServer.ServeTLS(listener, config.Config.Listen.TLS.Cert, config.Config.Listen.TLS.Key) if !errors.Is(err, http.ErrServerClosed) { - log.Error().Err(err).Msg("HTTPS server startup error") + slog.Error("HTTPS server startup error", slog.Any("error", err)) quit <- syscall.SIGTERM } }() } else { - log.Info().Str("address", listener.Addr().String()).Msg("Starting HTTP server") + slog.Info("Starting HTTP server", slog.String("address", listener.Addr().String())) go func() { err := httpServer.Serve(listener) if !errors.Is(err, http.ErrServerClosed) { - log.Error().Err(err).Msg("HTTP server startup error") + slog.Error("HTTP server startup error", slog.Any("error", err)) quit <- syscall.SIGTERM } }() @@ -529,7 +433,7 @@ func serve(errorHandling pflag.ErrorHandling) error { signal.Notify(quit, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) s := <-quit - log.Info().Stringer("signal", s).Msg("Shutting down HTTP server") + slog.Info("Shutting down HTTP server", slog.Any("signal", s)) historyPoller.stop() @@ -540,14 +444,15 @@ func serve(errorHandling pflag.ErrorHandling) error { return fmt.Errorf("shutdown error: %w", err) } - log.Info().Msg("HTTP server shut down") + slog.Info("HTTP server shut down") return removePidFile() } func main() { - initLogger() + _ = log.SetupLogger("text", false) err := serve(pflag.ExitOnError) if err != nil { - log.Fatal().Err(err).Msg("Execution failed") + slog.Error("Execution failed", slog.Any("error", err)) + os.Exit(1) } } diff --git a/cmd/karma/main_test.go b/cmd/karma/main_test.go index aaeefc8c6..86e46eff4 100644 --- a/cmd/karma/main_test.go +++ b/cmd/karma/main_test.go @@ -2,24 +2,22 @@ package main import ( "fmt" + "log/slog" "net/http" "net/http/httptest" "strings" "testing" "github.com/prymitive/karma/internal/config" - - "github.com/rs/zerolog" + "github.com/prymitive/karma/internal/log" ) func TestLogConfig(t *testing.T) { - logLevels := map[string]zerolog.Level{ - "debug": zerolog.DebugLevel, - "info": zerolog.InfoLevel, - "warning": zerolog.WarnLevel, - "error": zerolog.ErrorLevel, - "fatal": zerolog.FatalLevel, - "panic": zerolog.PanicLevel, + logLevels := map[string]slog.Level{ + "debug": slog.LevelDebug, + "info": slog.LevelInfo, + "warning": slog.LevelWarn, + "error": slog.LevelError, } for val, level := range logLevels { @@ -29,8 +27,8 @@ func TestLogConfig(t *testing.T) { if err != nil { t.Error(err) } - if zerolog.GlobalLevel() != level { - t.Errorf("Config.Log.Level=%s resulted in invalid log level %s", val, zerolog.GlobalLevel()) + if log.Level.Level() != level { + t.Errorf("Config.Log.Level=%s resulted in invalid log level %s", val, log.Level.Level()) } } } diff --git a/cmd/karma/proxy.go b/cmd/karma/proxy.go index d555e074a..3fc4793d9 100644 --- a/cmd/karma/proxy.go +++ b/cmd/karma/proxy.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" "io" + "log/slog" "net/http" "net/http/httputil" "net/url" @@ -16,8 +17,6 @@ import ( "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" "github.com/prymitive/karma/internal/mapper" - - "github.com/rs/zerolog/log" ) func proxyPathPrefix(name string) string { @@ -63,11 +62,12 @@ func NewAlertmanagerProxy(alertmanager *alertmanager.Alertmanager) *httputil.Rev req.URL.Path = strings.TrimSuffix(upstreamURL.Path, "/") + req.URL.Path } - log.Debug(). - Str("alertmanager", alertmanager.Name). - Str("uri", req.RequestURI). - Str("forwardedURI", req.URL.String()). - Msg("Forwarding request") + slog.Debug( + "Forwarding request", + slog.String("alertmanager", alertmanager.Name), + slog.String("uri", req.RequestURI), + slog.String("forwardedURI", req.URL.String()), + ) }, Transport: alertmanager.HTTPTransport, ModifyResponse: func(resp *http.Response) error { @@ -82,19 +82,18 @@ func NewAlertmanagerProxy(alertmanager *alertmanager.Alertmanager) *httputil.Rev func handlePostRequest(alertmanager *alertmanager.Alertmanager, h http.Handler) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - log.Debug(). - Str("alertmanager", alertmanager.Name). - Str("uri", r.RequestURI). - Msg("Proxy request") + slog.Debug("Proxy request", slog.String("alertmanager", alertmanager.Name), slog.String("uri", r.RequestURI)) defer r.Body.Close() body, err := io.ReadAll(r.Body) if err != nil { - log.Error().Err(err). - Str("alertmanager", alertmanager.Name). - Str("method", r.Method). - Str("uri", r.RequestURI). - Msg("Failed to read proxied request") + slog.Error( + "Failed to read proxied request", + slog.Any("error", err), + slog.String("alertmanager", alertmanager.Name), + slog.String("method", r.Method), + slog.String("uri", r.RequestURI), + ) http.Error(w, err.Error(), http.StatusInternalServerError) return } @@ -102,11 +101,13 @@ func handlePostRequest(alertmanager *alertmanager.Alertmanager, h http.Handler) ver := alertmanager.Version() m, err := mapper.GetSilenceMapper(ver) if err != nil { - log.Error().Err(err). - Str("alertmanager", alertmanager.Name). - Str("method", r.Method). - Str("uri", r.RequestURI). - Msg("Failed to proxy a request") + slog.Error( + "Failed to proxy a request", + slog.Any("error", err), + slog.String("alertmanager", alertmanager.Name), + slog.String("method", r.Method), + slog.String("uri", r.RequestURI), + ) http.Error(w, err.Error(), http.StatusInternalServerError) return } @@ -114,12 +115,13 @@ func handlePostRequest(alertmanager *alertmanager.Alertmanager, h http.Handler) if len(silenceACLs) > 0 { silence, err := m.Unmarshal(body) if err != nil { - log.Error(). - Err(err). - Str("alertmanager", alertmanager.Name). - Str("method", r.Method). - Str("uri", r.RequestURI). - Msg("Failed to unmarshal silence body") + slog.Error( + "Failed to unmarshal silence body", + slog.Any("error", err), + slog.String("alertmanager", alertmanager.Name), + slog.String("method", r.Method), + slog.String("uri", r.RequestURI), + ) http.Error(w, err.Error(), http.StatusInternalServerError) return } @@ -127,13 +129,15 @@ func handlePostRequest(alertmanager *alertmanager.Alertmanager, h http.Handler) for i, acl := range silenceACLs { groups := getGroupsFromContext(r) isAllowed, err := acl.isAllowed(alertmanager.Name, silence, groups) - log.Debug().Int("index", i).Bool("allowed", isAllowed).Err(err).Msg("ACL rule check") + slog.Debug("ACL rule check", slog.Int("index", i), slog.Bool("allowed", isAllowed), slog.Any("error", err)) if err != nil { - log.Warn().Err(err). - Str("alertmanager", alertmanager.Name). - Str("method", r.Method). - Str("uri", r.RequestURI). - Msg("Proxy request was blocked by ACL rule") + slog.Warn( + "Proxy request was blocked by ACL rule", + slog.Any("error", err), + slog.String("alertmanager", alertmanager.Name), + slog.String("method", r.Method), + slog.String("uri", r.RequestURI), + ) http.Error(w, err.Error(), http.StatusBadRequest) return } @@ -147,11 +151,13 @@ func handlePostRequest(alertmanager *alertmanager.Alertmanager, h http.Handler) username := getUserFromContext(r) newBody, err := m.RewriteUsername(body, username) if err != nil { - log.Error().Err(err). - Str("alertmanager", alertmanager.Name). - Str("method", r.Method). - Str("uri", r.RequestURI). - Msg("Failed to rewrite silence body") + slog.Error( + "Failed to rewrite silence body", + slog.Any("error", err), + slog.String("alertmanager", alertmanager.Name), + slog.String("method", r.Method), + slog.String("uri", r.RequestURI), + ) http.Error(w, err.Error(), http.StatusInternalServerError) return } diff --git a/cmd/karma/proxy_test.go b/cmd/karma/proxy_test.go index 6e7f4fc10..cbd17d264 100644 --- a/cmd/karma/proxy_test.go +++ b/cmd/karma/proxy_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + "log/slog" "net/http" "net/http/httptest" "regexp" @@ -15,10 +16,10 @@ import ( lru "github.com/hashicorp/golang-lru/v2" "github.com/jarcoal/httpmock" "github.com/pmezard/go-difflib/difflib" - "github.com/rs/zerolog" "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/mock" ) @@ -530,7 +531,7 @@ func TestProxyUserRewrite(t *testing.T) { httpmock.Activate() defer httpmock.DeactivateAndReset() - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) t.Run(testCase.name, func(t *testing.T) { for _, version := range mock.ListAllMocks() { t.Logf("Testing alerts using mock files from Alertmanager %s", version) @@ -1294,7 +1295,7 @@ func TestProxySilenceACL(t *testing.T) { httpmock.Activate() defer httpmock.DeactivateAndReset() - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) t.Run(testCase.name, func(t *testing.T) { for _, version := range mock.ListAllMocks() { t.Logf("Testing alerts using mock files from Alertmanager %s", version) @@ -1395,7 +1396,7 @@ func TestProxyRequestReadFailure(t *testing.T) { } func TestProxyRequestToUnsupportedAlertmanager(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) httpmock.Activate() defer httpmock.DeactivateAndReset() diff --git a/cmd/karma/tests/testscript/001_acl_example.txt b/cmd/karma/tests/testscript/001_acl_example.txt index 9fa4e2a4b..d647e8bab 100644 --- a/cmd/karma/tests/testscript/001_acl_example.txt +++ b/cmd/karma/tests/testscript/001_acl_example.txt @@ -4,12 +4,12 @@ exec karma --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=info msg="Parsed ACL rules" rules=6 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=INFO msg="Parsed ACL rules" rules=6 +level=INFO msg="Configuration is valid" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/002_acl_invalid_file.txt b/cmd/karma/tests/testscript/002_acl_invalid_file.txt index effd9885a..31a1e318e 100644 --- a/cmd/karma/tests/testscript/002_acl_invalid_file.txt +++ b/cmd/karma/tests/testscript/002_acl_invalid_file.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="failed to parse silence ACL configuration file \"acl.yaml\": yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `This Is...` into config.SilencesACLSchema" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="failed to parse silence ACL configuration file \"acl.yaml\": yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `This Is...` into config.SilencesACLSchema" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/003_acl_missing_file.txt b/cmd/karma/tests/testscript/003_acl_missing_file.txt index e8957e35e..bb99ce77d 100644 --- a/cmd/karma/tests/testscript/003_acl_missing_file.txt +++ b/cmd/karma/tests/testscript/003_acl_missing_file.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="failed to load silence ACL configuration file \"acl.yaml\": open acl.yaml: no such file or directory" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="failed to load silence ACL configuration file \"acl.yaml\": open acl.yaml: no such file or directory" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/004_acl_rule_invalid_action.txt b/cmd/karma/tests/testscript/004_acl_rule_invalid_action.txt index d7f0cc368..cfbe0d004 100644 --- a/cmd/karma/tests/testscript/004_acl_rule_invalid_action.txt +++ b/cmd/karma/tests/testscript/004_acl_rule_invalid_action.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule requires 'action' to be one of [allow block requireMatcher], got \"foo\"" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule requires 'action' to be one of [allow block requireMatcher], got \"foo\"" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/005_acl_rule_invalid_alertmanager.txt b/cmd/karma/tests/testscript/005_acl_rule_invalid_alertmanager.txt index 334055660..02dad1510 100644 --- a/cmd/karma/tests/testscript/005_acl_rule_invalid_alertmanager.txt +++ b/cmd/karma/tests/testscript/005_acl_rule_invalid_alertmanager.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, no alertmanager with name \"unknown\" found" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, no alertmanager with name \"unknown\" found" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/006_acl_rule_invalid_filter_name_re.txt b/cmd/karma/tests/testscript/006_acl_rule_invalid_filter_name_re.txt index fe0d62a81..c548a2d65 100644 --- a/cmd/karma/tests/testscript/006_acl_rule_invalid_filter_name_re.txt +++ b/cmd/karma/tests/testscript/006_acl_rule_invalid_filter_name_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse name_re \"cluster***\": error parsing regexp: invalid nested repetition operator: `**`" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse name_re \"cluster***\": error parsing regexp: invalid nested repetition operator: `**`" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/007_acl_rule_invalid_filter_value_re.txt b/cmd/karma/tests/testscript/007_acl_rule_invalid_filter_value_re.txt index d9843c2d3..d41c16b70 100644 --- a/cmd/karma/tests/testscript/007_acl_rule_invalid_filter_value_re.txt +++ b/cmd/karma/tests/testscript/007_acl_rule_invalid_filter_value_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse value_re \"prod***\": error parsing regexp: invalid nested repetition operator: `**`" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse value_re \"prod***\": error parsing regexp: invalid nested repetition operator: `**`" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/008_acl_rule_invalid_group.txt b/cmd/karma/tests/testscript/008_acl_rule_invalid_group.txt index 5fc1c21f3..2fafc1c37 100644 --- a/cmd/karma/tests/testscript/008_acl_rule_invalid_group.txt +++ b/cmd/karma/tests/testscript/008_acl_rule_invalid_group.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: invalid silence ACL rule, no group with name \"unknown\" found in authorization.groups configuration" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: invalid silence ACL rule, no group with name \"unknown\" found in authorization.groups configuration" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/009_acl_rule_invalid_matcher_name_re.txt b/cmd/karma/tests/testscript/009_acl_rule_invalid_matcher_name_re.txt index bd04e5d28..c4b2c0059 100644 --- a/cmd/karma/tests/testscript/009_acl_rule_invalid_matcher_name_re.txt +++ b/cmd/karma/tests/testscript/009_acl_rule_invalid_matcher_name_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse name_re \"cluster.++++\": error parsing regexp: invalid nested repetition operator: `++`" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse name_re \"cluster.++++\": error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/010_acl_rule_invalid_matcher_value_re.txt b/cmd/karma/tests/testscript/010_acl_rule_invalid_matcher_value_re.txt index 62d9a60bb..de4f3e7e9 100644 --- a/cmd/karma/tests/testscript/010_acl_rule_invalid_matcher_value_re.txt +++ b/cmd/karma/tests/testscript/010_acl_rule_invalid_matcher_value_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse value_re \".+++\": error parsing regexp: invalid nested repetition operator: `++`" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: invalid ACL rule, failed to parse value_re \".+++\": error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/011_acl_rule_matcher_missing_both_name_and_name_re.txt b/cmd/karma/tests/testscript/011_acl_rule_matcher_missing_both_name_and_name_re.txt index 9bf594c48..af89969c6 100644 --- a/cmd/karma/tests/testscript/011_acl_rule_matcher_missing_both_name_and_name_re.txt +++ b/cmd/karma/tests/testscript/011_acl_rule_matcher_missing_both_name_and_name_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher can only have 'name' or 'name_re' set, not both" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher can only have 'name' or 'name_re' set, not both" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/012_acl_rule_matcher_missing_both_value_and_value_re.txt b/cmd/karma/tests/testscript/012_acl_rule_matcher_missing_both_value_and_value_re.txt index 927a5993c..c13389b55 100644 --- a/cmd/karma/tests/testscript/012_acl_rule_matcher_missing_both_value_and_value_re.txt +++ b/cmd/karma/tests/testscript/012_acl_rule_matcher_missing_both_value_and_value_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher can only have 'value' or 'value_re' set, not both" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher can only have 'value' or 'value_re' set, not both" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/013_acl_rule_missing_filter_name.txt b/cmd/karma/tests/testscript/013_acl_rule_missing_filter_name.txt index 2f2919a72..1898d0e06 100644 --- a/cmd/karma/tests/testscript/013_acl_rule_missing_filter_name.txt +++ b/cmd/karma/tests/testscript/013_acl_rule_missing_filter_name.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter requires 'name' or 'name_re' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter requires 'name' or 'name_re' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/014_acl_rule_missing_filter_value.txt b/cmd/karma/tests/testscript/014_acl_rule_missing_filter_value.txt index 4e7d70009..faecd25a3 100644 --- a/cmd/karma/tests/testscript/014_acl_rule_missing_filter_value.txt +++ b/cmd/karma/tests/testscript/014_acl_rule_missing_filter_value.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter requires 'value' or 'value_re' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter requires 'value' or 'value_re' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/015_acl_rule_missing_matcher_name.txt b/cmd/karma/tests/testscript/015_acl_rule_missing_matcher_name.txt index ec7298a98..35cfc3a2f 100644 --- a/cmd/karma/tests/testscript/015_acl_rule_missing_matcher_name.txt +++ b/cmd/karma/tests/testscript/015_acl_rule_missing_matcher_name.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'name' or 'name_re' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'name' or 'name_re' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/016_acl_rule_missing_matcher_name_re.txt b/cmd/karma/tests/testscript/016_acl_rule_missing_matcher_name_re.txt index ebcdc4ecb..95c013618 100644 --- a/cmd/karma/tests/testscript/016_acl_rule_missing_matcher_name_re.txt +++ b/cmd/karma/tests/testscript/016_acl_rule_missing_matcher_name_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'name' or 'name_re' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'name' or 'name_re' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/017_acl_rule_missing_matcher_value.txt b/cmd/karma/tests/testscript/017_acl_rule_missing_matcher_value.txt index 0681f4363..1448ee74a 100644 --- a/cmd/karma/tests/testscript/017_acl_rule_missing_matcher_value.txt +++ b/cmd/karma/tests/testscript/017_acl_rule_missing_matcher_value.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'value' or 'value_re' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'value' or 'value_re' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/018_acl_rule_missing_matcher_value_re.txt b/cmd/karma/tests/testscript/018_acl_rule_missing_matcher_value_re.txt index 65f9e77af..b8e359a6b 100644 --- a/cmd/karma/tests/testscript/018_acl_rule_missing_matcher_value_re.txt +++ b/cmd/karma/tests/testscript/018_acl_rule_missing_matcher_value_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'value' or 'value_re' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule matcher requires 'value' or 'value_re' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/019_acl_rule_missing_reason.txt b/cmd/karma/tests/testscript/019_acl_rule_missing_reason.txt index 607934fc5..e30f5a24d 100644 --- a/cmd/karma/tests/testscript/019_acl_rule_missing_reason.txt +++ b/cmd/karma/tests/testscript/019_acl_rule_missing_reason.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule requires 'reason' to be set" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule requires 'reason' to be set" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/020_acl_rule_scope_missing_both_name_and_name_re.txt b/cmd/karma/tests/testscript/020_acl_rule_scope_missing_both_name_and_name_re.txt index b0fb4fec4..23b38c32e 100644 --- a/cmd/karma/tests/testscript/020_acl_rule_scope_missing_both_name_and_name_re.txt +++ b/cmd/karma/tests/testscript/020_acl_rule_scope_missing_both_name_and_name_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter can only have 'name' or 'name_re' set, not both" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter can only have 'name' or 'name_re' set, not both" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/021_acl_rule_scope_missing_both_value_and_value_re.txt b/cmd/karma/tests/testscript/021_acl_rule_scope_missing_both_value_and_value_re.txt index 94550ea87..0b8d57fb4 100644 --- a/cmd/karma/tests/testscript/021_acl_rule_scope_missing_both_value_and_value_re.txt +++ b/cmd/karma/tests/testscript/021_acl_rule_scope_missing_both_value_and_value_re.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter can only have 'value' or 'value_re' set, not both" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="invalid silence ACL rule at position 0: silence ACL rule filter can only have 'value' or 'value_re' set, not both" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/022_auth_basicAuth_no_credentials.txt b/cmd/karma/tests/testscript/022_auth_basicAuth_no_credentials.txt index cac5d7652..d0ad36fc0 100644 --- a/cmd/karma/tests/testscript/022_auth_basicAuth_no_credentials.txt +++ b/cmd/karma/tests/testscript/022_auth_basicAuth_no_credentials.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.basicAuth.users require both username and password to be set" +level=ERROR msg="Execution failed" error="authentication.basicAuth.users require both username and password to be set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/023_auth_basicAuth_no_password.txt b/cmd/karma/tests/testscript/023_auth_basicAuth_no_password.txt index 4a667b5d8..44f7f37d2 100644 --- a/cmd/karma/tests/testscript/023_auth_basicAuth_no_password.txt +++ b/cmd/karma/tests/testscript/023_auth_basicAuth_no_password.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.basicAuth.users require both username and password to be set" +level=ERROR msg="Execution failed" error="authentication.basicAuth.users require both username and password to be set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/024_auth_basicAuth_no_username.txt b/cmd/karma/tests/testscript/024_auth_basicAuth_no_username.txt index 73b0ca32e..8e4970bbd 100644 --- a/cmd/karma/tests/testscript/024_auth_basicAuth_no_username.txt +++ b/cmd/karma/tests/testscript/024_auth_basicAuth_no_username.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.basicAuth.users require both username and password to be set" +level=ERROR msg="Execution failed" error="authentication.basicAuth.users require both username and password to be set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/025_auth_group_missing_members.txt b/cmd/karma/tests/testscript/025_auth_group_missing_members.txt index 7580364c4..5af94275f 100644 --- a/cmd/karma/tests/testscript/025_auth_group_missing_members.txt +++ b/cmd/karma/tests/testscript/025_auth_group_missing_members.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="'members' is required for every authorization group" +level=ERROR msg="Execution failed" error="'members' is required for every authorization group" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/026_auth_group_missing_name.txt b/cmd/karma/tests/testscript/026_auth_group_missing_name.txt index d42339f6d..2ec7545a3 100644 --- a/cmd/karma/tests/testscript/026_auth_group_missing_name.txt +++ b/cmd/karma/tests/testscript/026_auth_group_missing_name.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="'name' is required for every authorization group" +level=ERROR msg="Execution failed" error="'name' is required for every authorization group" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/027_auth_header_and_basicAuth.txt b/cmd/karma/tests/testscript/027_auth_header_and_basicAuth.txt index b6ee79d0a..732b9e8bb 100644 --- a/cmd/karma/tests/testscript/027_auth_header_and_basicAuth.txt +++ b/cmd/karma/tests/testscript/027_auth_header_and_basicAuth.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="both authentication.basicAuth.users and authentication.header.name is set, only one can be enabled" +level=ERROR msg="Execution failed" error="both authentication.basicAuth.users and authentication.header.name is set, only one can be enabled" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/028_auth_header_no_name.txt b/cmd/karma/tests/testscript/028_auth_header_no_name.txt index b1daed35d..85fa2547e 100644 --- a/cmd/karma/tests/testscript/028_auth_header_no_name.txt +++ b/cmd/karma/tests/testscript/028_auth_header_no_name.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.header.name is required when authentication.header.value_re is set" +level=ERROR msg="Execution failed" error="authentication.header.name is required when authentication.header.value_re is set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/029_auth_header_no_regex.txt b/cmd/karma/tests/testscript/029_auth_header_no_regex.txt index a816c27c5..34307dcc1 100644 --- a/cmd/karma/tests/testscript/029_auth_header_no_regex.txt +++ b/cmd/karma/tests/testscript/029_auth_header_no_regex.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.header.value_re is required when authentication.header.name is set" +level=ERROR msg="Execution failed" error="authentication.header.value_re is required when authentication.header.name is set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/030_auth_header_regex_invalid.txt b/cmd/karma/tests/testscript/030_auth_header_regex_invalid.txt index e4b6bae85..fa63a75e5 100644 --- a/cmd/karma/tests/testscript/030_auth_header_regex_invalid.txt +++ b/cmd/karma/tests/testscript/030_auth_header_regex_invalid.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="invalid regex for authentication.header.value_re: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="invalid regex for authentication.header.value_re: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/032_config_file_flag_over_env.txt b/cmd/karma/tests/testscript/032_config_file_flag_over_env.txt index 3269f8ceb..baa655fef 100644 --- a/cmd/karma/tests/testscript/032_config_file_flag_over_env.txt +++ b/cmd/karma/tests/testscript/032_config_file_flag_over_env.txt @@ -5,10 +5,10 @@ exec karma --check-config --config.file=flag.yaml cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=flag.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=flag name=flag proxy=false readonly=false uri=http://127.0.0.1:8080 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=flag.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=flag cluster=flag uri=http://127.0.0.1:8080 proxy=false readonly=false +level=INFO msg="Configuration is valid" -- flag.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/033_config_file_from_env.txt b/cmd/karma/tests/testscript/033_config_file_from_env.txt index e164923c0..665a3a2d4 100644 --- a/cmd/karma/tests/testscript/033_config_file_from_env.txt +++ b/cmd/karma/tests/testscript/033_config_file_from_env.txt @@ -5,11 +5,11 @@ exec karma --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=foo.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=cwd name=cwd proxy=true readonly=false uri=http://127.0.0.1:8080 -level=info msg="Setting up proxy endpoints" alertmanager=cwd -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=foo.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=cwd cluster=cwd uri=http://127.0.0.1:8080 proxy=true readonly=false +level=INFO msg="Setting up proxy endpoints" alertmanager=cwd +level=INFO msg="Configuration is valid" -- foo.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/034_config_file_from_flag.txt b/cmd/karma/tests/testscript/034_config_file_from_flag.txt index f58d9808c..b8d2fdaec 100644 --- a/cmd/karma/tests/testscript/034_config_file_from_flag.txt +++ b/cmd/karma/tests/testscript/034_config_file_from_flag.txt @@ -5,11 +5,11 @@ exec karma --check-config --config.file foo.yaml cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=foo.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=cwd name=cwd proxy=true readonly=false uri=http://127.0.0.1:8080 -level=info msg="Setting up proxy endpoints" alertmanager=cwd -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=foo.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=cwd cluster=cwd uri=http://127.0.0.1:8080 proxy=true readonly=false +level=INFO msg="Setting up proxy endpoints" alertmanager=cwd +level=INFO msg="Configuration is valid" -- foo.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/035_log_requests.txt b/cmd/karma/tests/testscript/035_log_requests.txt index 5a4dc75df..cd5df3cc5 100644 --- a/cmd/karma/tests/testscript/035_log_requests.txt +++ b/cmd/karma/tests/testscript/035_log_requests.txt @@ -3,8 +3,8 @@ exec bash -x ./test.sh & exec karma --pid-file=karma.pid --alertmanager.uri=http://127.0.0.1:7035 --listen.address=127.0.0.1 --listen.port=8035 --log.requests ! stdout . -stderr 'msg="Request completed" address=127.0.0.1:[0-9]+ bytes=[0-9]+ code=200 duration=.+ method=POST path=/alerts.json' -stderr 'msg="Request completed" address=127.0.0.1:[0-9]+ bytes=[0-9]+ code=200 duration=.+ method=POST path=/alerts.json' +stderr 'level=INFO msg="Request completed" address=127.0.0.1:[0-9]+ path=/alerts.json duration=.+ method=POST code=200 bytes=[0-9]+' +stderr 'level=INFO msg="Request completed" address=127.0.0.1:[0-9]+ path=/alerts.json duration=.+ method=POST code=200 bytes=[0-9]+' wait -- test.sh -- diff --git a/cmd/karma/tests/testscript/036_default_config_file.txt b/cmd/karma/tests/testscript/036_default_config_file.txt index 6d3b2e088..9517e5de9 100644 --- a/cmd/karma/tests/testscript/036_default_config_file.txt +++ b/cmd/karma/tests/testscript/036_default_config_file.txt @@ -4,11 +4,11 @@ exec karma --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=cwd name=cwd proxy=true readonly=false uri=http://127.0.0.1:8080 -level=info msg="Setting up proxy endpoints" alertmanager=cwd -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=cwd cluster=cwd uri=http://127.0.0.1:8080 proxy=true readonly=false +level=INFO msg="Setting up proxy endpoints" alertmanager=cwd +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/037_duplicated_alertmanager_default_name.txt b/cmd/karma/tests/testscript/037_duplicated_alertmanager_default_name.txt index c326a4e20..74dae67f5 100644 --- a/cmd/karma/tests/testscript/037_duplicated_alertmanager_default_name.txt +++ b/cmd/karma/tests/testscript/037_duplicated_alertmanager_default_name.txt @@ -4,10 +4,10 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=fatal msg="Execution failed" error="failed to register Alertmanager 'default' with URI 'https://127.0.0.1:9094': alertmanager upstream 'default' already exist" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=ERROR msg="Execution failed" error="failed to register Alertmanager 'default' with URI 'https://127.0.0.1:9094': alertmanager upstream 'default' already exist" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/038_duplicated_alertmanager_name.txt b/cmd/karma/tests/testscript/038_duplicated_alertmanager_name.txt index 469e45c9d..3827d74e0 100644 --- a/cmd/karma/tests/testscript/038_duplicated_alertmanager_name.txt +++ b/cmd/karma/tests/testscript/038_duplicated_alertmanager_name.txt @@ -4,10 +4,10 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=am1 name=am1 proxy=false readonly=false uri=https://127.0.0.1:9093 -level=fatal msg="Execution failed" error="failed to register Alertmanager 'am1' with URI 'https://127.0.0.1:9094': alertmanager upstream 'am1' already exist" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=am1 cluster=am1 uri=https://127.0.0.1:9093 proxy=false readonly=false +level=ERROR msg="Execution failed" error="failed to register Alertmanager 'am1' with URI 'https://127.0.0.1:9094': alertmanager upstream 'am1' already exist" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/039_alert_history_invalid_regex.txt b/cmd/karma/tests/testscript/039_alert_history_invalid_regex.txt index 41b0e26ab..a89b9326b 100644 --- a/cmd/karma/tests/testscript/039_alert_history_invalid_regex.txt +++ b/cmd/karma/tests/testscript/039_alert_history_invalid_regex.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="history.rewrite source regex \"foo.++++++\" is invalid: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="history.rewrite source regex \"foo.++++++\" is invalid: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/040_empty_alertmanager_name.txt b/cmd/karma/tests/testscript/040_empty_alertmanager_name.txt index 1a0d7d218..6081ddd70 100644 --- a/cmd/karma/tests/testscript/040_empty_alertmanager_name.txt +++ b/cmd/karma/tests/testscript/040_empty_alertmanager_name.txt @@ -4,10 +4,10 @@ exec karma --config.file=karma.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:9093 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/041_invalid_alertmanager_cors_credentials.txt b/cmd/karma/tests/testscript/041_invalid_alertmanager_cors_credentials.txt index 7e56a6eed..dc0640ea9 100644 --- a/cmd/karma/tests/testscript/041_invalid_alertmanager_cors_credentials.txt +++ b/cmd/karma/tests/testscript/041_invalid_alertmanager_cors_credentials.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="invalid cors.credentials value 'foo' for alertmanager 'am1', allowed options: omit, include, same-origin" +level=ERROR msg="Execution failed" error="invalid cors.credentials value 'foo' for alertmanager 'am1', allowed options: omit, include, same-origin" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/042_invalid_config_alertmanager_timeout.txt b/cmd/karma/tests/testscript/042_invalid_config_alertmanager_timeout.txt index 373a01dac..134b1b9e0 100644 --- a/cmd/karma/tests/testscript/042_invalid_config_alertmanager_timeout.txt +++ b/cmd/karma/tests/testscript/042_invalid_config_alertmanager_timeout.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="failed to unmarshal configuration: decoding failed due to the following error(s):\n\n'Alertmanager.Interval' time: invalid duration" +level=ERROR msg="Execution failed" error="failed to unmarshal configuration: decoding failed due to the following error(s):\n\n'Alertmanager.Interval' time: invalid duration" -- karma.yaml -- alertmanager: interval: abc123 diff --git a/cmd/karma/tests/testscript/043_invalid_flag.txt b/cmd/karma/tests/testscript/043_invalid_flag.txt index 5fee6526f..da00c4398 100644 --- a/cmd/karma/tests/testscript/043_invalid_flag.txt +++ b/cmd/karma/tests/testscript/043_invalid_flag.txt @@ -64,7 +64,7 @@ Usage of karma: --listen.tls.key string TLS key path (enables HTTPS) --log.config Log used configuration to log on startup --log.format string Log format, one of: text, json (default "text") - --log.level string Log level, one of: debug, info, warning, error, fatal and panic (default "info") + --log.level string Log level, one of: debug, info, warning, error (default "info") --log.requests Enable request logging --log.timestamp Add timestamps to all log messages --pid-file string If set PID of karma process will be written to this file diff --git a/cmd/karma/tests/testscript/044_invalid_flag_alertmanager_timeout.txt b/cmd/karma/tests/testscript/044_invalid_flag_alertmanager_timeout.txt index 86dc49438..b273b07d7 100644 --- a/cmd/karma/tests/testscript/044_invalid_flag_alertmanager_timeout.txt +++ b/cmd/karma/tests/testscript/044_invalid_flag_alertmanager_timeout.txt @@ -63,7 +63,7 @@ Usage of karma: --listen.tls.key string TLS key path (enables HTTPS) --log.config Log used configuration to log on startup --log.format string Log format, one of: text, json (default "text") - --log.level string Log level, one of: debug, info, warning, error, fatal and panic (default "info") + --log.level string Log level, one of: debug, info, warning, error (default "info") --log.requests Enable request logging --log.timestamp Add timestamps to all log messages --pid-file string If set PID of karma process will be written to this file diff --git a/cmd/karma/tests/testscript/045_invalid_listen_prefix.txt b/cmd/karma/tests/testscript/045_invalid_listen_prefix.txt index 12baed64b..079331617 100644 --- a/cmd/karma/tests/testscript/045_invalid_listen_prefix.txt +++ b/cmd/karma/tests/testscript/045_invalid_listen_prefix.txt @@ -4,4 +4,4 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="listen.prefix must start with '/', got \"karma\"" +level=ERROR msg="Execution failed" error="listen.prefix must start with '/', got \"karma\"" diff --git a/cmd/karma/tests/testscript/046_invalid_log_format.txt b/cmd/karma/tests/testscript/046_invalid_log_format.txt index 5113aa45b..a31350446 100644 --- a/cmd/karma/tests/testscript/046_invalid_log_format.txt +++ b/cmd/karma/tests/testscript/046_invalid_log_format.txt @@ -4,4 +4,4 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="unknown log format 'xml'" +level=ERROR msg="Execution failed" error="unknown log format 'xml'" diff --git a/cmd/karma/tests/testscript/047_invalid_log_level.txt b/cmd/karma/tests/testscript/047_invalid_log_level.txt index 9912a85c8..ea053aabf 100644 --- a/cmd/karma/tests/testscript/047_invalid_log_level.txt +++ b/cmd/karma/tests/testscript/047_invalid_log_level.txt @@ -4,4 +4,4 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="unknown log level 'foobar'" +level=ERROR msg="Execution failed" error="unknown log level 'foobar'" diff --git a/cmd/karma/tests/testscript/048_invalid_proxy_config.txt b/cmd/karma/tests/testscript/048_invalid_proxy_config.txt index fbfca8bb0..fa49b7c2a 100644 --- a/cmd/karma/tests/testscript/048_invalid_proxy_config.txt +++ b/cmd/karma/tests/testscript/048_invalid_proxy_config.txt @@ -4,9 +4,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create Alertmanager 'proxied' with URI 'httpz://127.0.0.1': unsupported URI scheme 'httpz' in 'httpz://127.0.0.1'" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create Alertmanager 'proxied' with URI 'httpz://127.0.0.1': unsupported URI scheme 'httpz' in 'httpz://127.0.0.1'" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/049_invalid_proxy_url.txt b/cmd/karma/tests/testscript/049_invalid_proxy_url.txt index f334fa63a..46c88ffb1 100644 --- a/cmd/karma/tests/testscript/049_invalid_proxy_url.txt +++ b/cmd/karma/tests/testscript/049_invalid_proxy_url.txt @@ -4,9 +4,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to parse provided proxy url \"%gh&%ij\": parse \"%gh&%ij\": invalid URL escape \"%gh\"" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to parse provided proxy url \"%gh&%ij\": parse \"%gh&%ij\": invalid URL escape \"%gh\"" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/050_invalid_ttl.txt b/cmd/karma/tests/testscript/050_invalid_ttl.txt index 96027de45..a9c85a101 100644 --- a/cmd/karma/tests/testscript/050_invalid_ttl.txt +++ b/cmd/karma/tests/testscript/050_invalid_ttl.txt @@ -4,4 +4,4 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="invalid alertmanager.interval value '-4s'" +level=ERROR msg="Execution failed" error="invalid alertmanager.interval value '-4s'" diff --git a/cmd/karma/tests/testscript/051_invalid_uri.txt b/cmd/karma/tests/testscript/051_invalid_uri.txt index f8afc45e3..234277e3e 100644 --- a/cmd/karma/tests/testscript/051_invalid_uri.txt +++ b/cmd/karma/tests/testscript/051_invalid_uri.txt @@ -4,5 +4,5 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create Alertmanager 'default' with URI 'httpz://username:xxx@127.0.0.1': unsupported URI scheme 'httpz' in 'httpz://username:xxx@127.0.0.1'" +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create Alertmanager 'default' with URI 'httpz://username:xxx@127.0.0.1': unsupported URI scheme 'httpz' in 'httpz://username:xxx@127.0.0.1'" diff --git a/cmd/karma/tests/testscript/052_labels_color_custom_invalid_regex.txt b/cmd/karma/tests/testscript/052_labels_color_custom_invalid_regex.txt index 335108efd..13df956bd 100644 --- a/cmd/karma/tests/testscript/052_labels_color_custom_invalid_regex.txt +++ b/cmd/karma/tests/testscript/052_labels_color_custom_invalid_regex.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="failed to parse custom color regex rule '.++++' for 'region' label: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="failed to parse custom color regex rule '.++++' for 'region' label: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/053_labels_color_custom_missing_value.txt b/cmd/karma/tests/testscript/053_labels_color_custom_missing_value.txt index 50d1f10e6..e85c1d394 100644 --- a/cmd/karma/tests/testscript/053_labels_color_custom_missing_value.txt +++ b/cmd/karma/tests/testscript/053_labels_color_custom_missing_value.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="custom label color for 'region' is missing 'value' or 'value_re'" +level=ERROR msg="Execution failed" error="custom label color for 'region' is missing 'value' or 'value_re'" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/054_linkDetect_invalid_regex.txt b/cmd/karma/tests/testscript/054_linkDetect_invalid_regex.txt index bd1ba88b0..99188feeb 100644 --- a/cmd/karma/tests/testscript/054_linkDetect_invalid_regex.txt +++ b/cmd/karma/tests/testscript/054_linkDetect_invalid_regex.txt @@ -4,9 +4,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="invalid link detect rule 'foo++++++': error parsing regexp: invalid nested repetition operator: `++`" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="invalid link detect rule 'foo++++++': error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/055_linkDetect_no_regex.txt b/cmd/karma/tests/testscript/055_linkDetect_no_regex.txt index 947abe7e7..1abd94fab 100644 --- a/cmd/karma/tests/testscript/055_linkDetect_no_regex.txt +++ b/cmd/karma/tests/testscript/055_linkDetect_no_regex.txt @@ -4,9 +4,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="invalid link detect rule, regex '' uriTemplate 'https://jira.example.com/'" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="invalid link detect rule, regex '' uriTemplate 'https://jira.example.com/'" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/056_linkDetect_no_uri.txt b/cmd/karma/tests/testscript/056_linkDetect_no_uri.txt index ec5e8ab53..6655fdb62 100644 --- a/cmd/karma/tests/testscript/056_linkDetect_no_uri.txt +++ b/cmd/karma/tests/testscript/056_linkDetect_no_uri.txt @@ -4,9 +4,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="invalid link detect rule, regex 'DEVOPS-[0-9]+' uriTemplate ''" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="invalid link detect rule, regex 'DEVOPS-[0-9]+' uriTemplate ''" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/057_linkDetect_valid_config.txt b/cmd/karma/tests/testscript/057_linkDetect_valid_config.txt index e4ca5230e..a5920991c 100644 --- a/cmd/karma/tests/testscript/057_linkDetect_valid_config.txt +++ b/cmd/karma/tests/testscript/057_linkDetect_valid_config.txt @@ -4,10 +4,10 @@ exec karma --config.file=karma.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/058_log_format_json.txt b/cmd/karma/tests/testscript/058_log_format_json.txt index 1edac26eb..9a785b3bf 100644 --- a/cmd/karma/tests/testscript/058_log_format_json.txt +++ b/cmd/karma/tests/testscript/058_log_format_json.txt @@ -7,16 +7,16 @@ cmp stderr stderr.txt wait -- stderr.txt -- -{"level":"info","message":"Version: dev"} -{"level":"info","path":"karma.pid","message":"Writing PID file"} -{"level":"info","message":"Initial Alertmanager collection"} -{"level":"info","message":"Pulling latest alerts and silences from Alertmanager"} -{"level":"info","message":"Collection completed"} -{"level":"info","message":"Done, starting HTTP server"} -{"level":"info","address":"127.0.0.1:8058","message":"Starting HTTP server"} -{"level":"info","signal":"terminated","message":"Shutting down HTTP server"} -{"level":"info","message":"HTTP server shut down"} -{"level":"info","path":"karma.pid","message":"Removing PID file"} +{"level":"INFO","msg":"Version: dev"} +{"level":"INFO","msg":"Writing PID file","path":"karma.pid"} +{"level":"INFO","msg":"Initial Alertmanager collection"} +{"level":"INFO","msg":"Pulling latest alerts and silences from Alertmanager"} +{"level":"INFO","msg":"Collection completed"} +{"level":"INFO","msg":"Done, starting HTTP server"} +{"level":"INFO","msg":"Starting HTTP server","address":"127.0.0.1:8058"} +{"level":"INFO","msg":"Shutting down HTTP server","signal":15} +{"level":"INFO","msg":"HTTP server shut down"} +{"level":"INFO","msg":"Removing PID file","path":"karma.pid"} -- test.sh -- while [ ! -f karma.pid ]; do sleep 1 ; done sleep 5 diff --git a/cmd/karma/tests/testscript/059_log_full_config_env.txt b/cmd/karma/tests/testscript/059_log_full_config_env.txt index 39292a086..46d5b819a 100644 --- a/cmd/karma/tests/testscript/059_log_full_config_env.txt +++ b/cmd/karma/tests/testscript/059_log_full_config_env.txt @@ -81,174 +81,174 @@ exec karma --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: X-Auth" -level=info msg=" value_re: ^(.+)$" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 10s" -level=info msg=" servers:" -level=info msg=" - cluster: \"\"" -level=info msg=" name: ro" -level=info msg=" uri: http://127.0.0.1:9093" -level=info msg=" external_uri: http://127.0.0.1:9093" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 10s" -level=info msg=" proxy: false" -level=info msg=" readonly: true" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: true" -level=info msg=" duration: 5m0s" -level=info msg=" author: karma" -level=info msg=" comment: '\"ACK!'" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: true" -level=info msg=" hidden:" -level=info msg=" - help" -level=info msg=" - summary" -level=info msg=" visible:" -level=info msg=" - visible" -level=info msg=" keep:" -level=info msg=" - keep" -level=info msg=" strip:" -level=info msg=" - strip1" -level=info msg=" - strip2" -level=info msg=" - strip3" -level=info msg=" order:" -level=info msg=" - summary" -level=info msg=" - help" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: true" -level=info msg="custom:" -level=info msg=" css: /custom.css" -level=info msg=" js: /custom.js" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default:" -level=info msg=" - '@receiver=by-cluster-service'" -level=info msg=" - '@state=active'" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: label" -level=info msg=" reverse: false" -level=info msg=" label: severity" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore:" -level=info msg=" - '\"region'" -level=info msg=" order:" -level=info msg=" - '\"severity'" -level=info msg=" groupLimit: 1" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma-demo" -level=info msg="labels:" -level=info msg=" order:" -level=info msg=" - job" -level=info msg=" - instance" -level=info msg=" keep:" -level=info msg=" - keep1" -level=info msg=" - keep2" -level=info msg=" keep_re:" -level=info msg=" - keep_re1" -level=info msg=" - keep_re2" -level=info msg=" strip:" -level=info msg=" - strip1" -level=info msg=" - strip2" -level=info msg=" strip_re:" -level=info msg=" - strip_re1" -level=info msg=" - strip_re2" -level=info msg=" valueOnly:" -level=info msg=" - value1" -level=info msg=" - value2" -level=info msg=" valueOnly_re:" -level=info msg=" - foo.+" -level=info msg=" color:" -level=info msg=" custom: {}" -level=info msg=" static:" -level=info msg=" - job" -level=info msg=" unique:" -level=info msg=" - '@receiver'" -level=info msg=" - instance" -level=info msg=" - cluster" -level=info msg="listen:" -level=info msg=" address: 127.0.0.1" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 1234" -level=info msg=" prefix: /prefix/" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep:" -level=info msg=" - keep1" -level=info msg=" - keep2" -level=info msg=" keep_re: []" -level=info msg=" strip:" -level=info msg=" - strip1" -level=info msg=" - strip2" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 1s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels:" -level=info msg=" - job" -level=info msg=" - severity" -level=info msg=" - region" -level=info msg=" defaultAlertmanagers:" -level=info msg=" - am1" -level=info msg="ui:" -level=info msg=" refresh: 10s" -level=info msg=" hideFiltersWhenIdle: false" -level=info msg=" colorTitlebar: true" -level=info msg=" theme: dark" -level=info msg=" animations: false" -level=info msg=" minimalGroupWidth: 300" -level=info msg=" alertsPerGroup: 2" -level=info msg=" collapseGroups: expanded" -level=info msg=" multiGridLabel: cluster" -level=info msg=" multiGridSortReverse: true" -level=info msg="Configured Alertmanager source" cluster=ro name=ro proxy=false readonly=true uri=http://127.0.0.1:9093 -level=info msg="Configuration is valid" +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: X-Auth" +level=INFO msg=" value_re: ^(.+)$" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 10s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: ro" +level=INFO msg=" uri: http://127.0.0.1:9093" +level=INFO msg=" external_uri: http://127.0.0.1:9093" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 10s" +level=INFO msg=" proxy: false" +level=INFO msg=" readonly: true" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: true" +level=INFO msg=" duration: 5m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: '\"ACK!'" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: true" +level=INFO msg=" hidden:" +level=INFO msg=" - help" +level=INFO msg=" - summary" +level=INFO msg=" visible:" +level=INFO msg=" - visible" +level=INFO msg=" keep:" +level=INFO msg=" - keep" +level=INFO msg=" strip:" +level=INFO msg=" - strip1" +level=INFO msg=" - strip2" +level=INFO msg=" - strip3" +level=INFO msg=" order:" +level=INFO msg=" - summary" +level=INFO msg=" - help" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: true" +level=INFO msg=custom: +level=INFO msg=" css: /custom.css" +level=INFO msg=" js: /custom.js" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default:" +level=INFO msg=" - '@receiver=by-cluster-service'" +level=INFO msg=" - '@state=active'" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: label" +level=INFO msg=" reverse: false" +level=INFO msg=" label: severity" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore:" +level=INFO msg=" - '\"region'" +level=INFO msg=" order:" +level=INFO msg=" - '\"severity'" +level=INFO msg=" groupLimit: 1" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma-demo" +level=INFO msg=labels: +level=INFO msg=" order:" +level=INFO msg=" - job" +level=INFO msg=" - instance" +level=INFO msg=" keep:" +level=INFO msg=" - keep1" +level=INFO msg=" - keep2" +level=INFO msg=" keep_re:" +level=INFO msg=" - keep_re1" +level=INFO msg=" - keep_re2" +level=INFO msg=" strip:" +level=INFO msg=" - strip1" +level=INFO msg=" - strip2" +level=INFO msg=" strip_re:" +level=INFO msg=" - strip_re1" +level=INFO msg=" - strip_re2" +level=INFO msg=" valueOnly:" +level=INFO msg=" - value1" +level=INFO msg=" - value2" +level=INFO msg=" valueOnly_re:" +level=INFO msg=" - foo.+" +level=INFO msg=" color:" +level=INFO msg=" custom: {}" +level=INFO msg=" static:" +level=INFO msg=" - job" +level=INFO msg=" unique:" +level=INFO msg=" - '@receiver'" +level=INFO msg=" - instance" +level=INFO msg=" - cluster" +level=INFO msg=listen: +level=INFO msg=" address: 127.0.0.1" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 1234" +level=INFO msg=" prefix: /prefix/" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep:" +level=INFO msg=" - keep1" +level=INFO msg=" - keep2" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip:" +level=INFO msg=" - strip1" +level=INFO msg=" - strip2" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 1s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels:" +level=INFO msg=" - job" +level=INFO msg=" - severity" +level=INFO msg=" - region" +level=INFO msg=" defaultAlertmanagers:" +level=INFO msg=" - am1" +level=INFO msg=ui: +level=INFO msg=" refresh: 10s" +level=INFO msg=" hideFiltersWhenIdle: false" +level=INFO msg=" colorTitlebar: true" +level=INFO msg=" theme: dark" +level=INFO msg=" animations: false" +level=INFO msg=" minimalGroupWidth: 300" +level=INFO msg=" alertsPerGroup: 2" +level=INFO msg=" collapseGroups: expanded" +level=INFO msg=" multiGridLabel: cluster" +level=INFO msg=" multiGridSortReverse: true" +level=INFO msg="Configured Alertmanager source" name=ro cluster=ro uri=http://127.0.0.1:9093 proxy=false readonly=true +level=INFO msg="Configuration is valid" diff --git a/cmd/karma/tests/testscript/060_log_full_config_file.txt b/cmd/karma/tests/testscript/060_log_full_config_file.txt index ce7e4fccf..3ae0aa96b 100644 --- a/cmd/karma/tests/testscript/060_log_full_config_file.txt +++ b/cmd/karma/tests/testscript/060_log_full_config_file.txt @@ -4,296 +4,296 @@ exec karma --config.file=custom.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=custom.yaml -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: X-Groups" -level=info msg=" group_value_re: .+" -level=info msg=" group_value_separator: ','" -level=info msg=" basicAuth:" -level=info msg=" users:" -level=info msg=" - username: number" -level=info msg=" password: '***'" -level=info msg=" - username: string" -level=info msg=" password: '***'" -level=info msg="authorization:" -level=info msg=" groups:" -level=info msg=" - name: admins" -level=info msg=" members:" -level=info msg=" - alice" -level=info msg=" - bob" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 10s" -level=info msg=" servers:" -level=info msg=" - cluster: HA" -level=info msg=" name: ha1" -level=info msg=" uri: http://127.0.0.1:9093" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 10s" -level=info msg=" proxy: true" -level=info msg=" readonly: false" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg=" - cluster: HA" -level=info msg=" name: ha2" -level=info msg=" uri: http://127.0.0.1:9094" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 10s" -level=info msg=" proxy: false" -level=info msg=" readonly: true" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: omit" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg=" - cluster: \"\"" -level=info msg=" name: local" -level=info msg=" uri: http://foo:xxx@127.0.0.1:9095" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 40s" -level=info msg=" proxy: true" -level=info msg=" readonly: false" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers:" -level=info msg=" X-Auth-Test: '***'" -level=info msg=" cors:" -level=info msg=" credentials: same-origin" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters:" -level=info msg=" prom1:" -level=info msg=" - alertname=DeadMansSwitch" -level=info msg=" - instance=prom1" -level=info msg=" prom2:" -level=info msg=" - alertname=DeadMansSwitch" -level=info msg=" - instance=prom2" -level=info msg=" - cluster: \"\"" -level=info msg=" name: client-auth" -level=info msg=" uri: https://127.0.0.1:9096" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 10s" -level=info msg=" proxy: false" -level=info msg=" readonly: false" -level=info msg=" tls:" -level=info msg=" ca: ca.pem" -level=info msg=" cert: cert.pem" -level=info msg=" key: key.pem" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: true" -level=info msg=" filters:" -level=info msg=" prom1:" -level=info msg=" - alertname=DeadMansSwitch" -level=info msg=" - instance=prom1" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: true" -level=info msg=" duration: 7m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This is comment" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: true" -level=info msg=" hidden:" -level=info msg=" - help" -level=info msg=" - summary" -level=info msg=" visible:" -level=info msg=" - visible" -level=info msg=" keep:" -level=info msg=" - keep" -level=info msg=" strip:" -level=info msg=" - strip1" -level=info msg=" - strip2" -level=info msg=" - strip3" -level=info msg=" order:" -level=info msg=" - summary" -level=info msg=" - help" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: true" -level=info msg="custom:" -level=info msg=" css: /custom.css" -level=info msg=" js: /custom.js" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default:" -level=info msg=" - '@receiver=by-cluster-service'" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: label" -level=info msg=" reverse: false" -level=info msg=" label: severity" -level=info msg=" customValues:" -level=info msg=" labels:" -level=info msg=" cluster:" -level=info msg=" DEV: \"3\"" -level=info msg=" Prod: \"1\"" -level=info msg=" staging: \"2\"" -level=info msg=" severity:" -level=info msg=" critical: \"1\"" -level=info msg=" info: \"3\"" -level=info msg=" warning: \"2\"" -level=info msg=" auto:" -level=info msg=" ignore:" -level=info msg=" - region" -level=info msg=" - instance" -level=info msg=" order:" -level=info msg=" - severity" -level=info msg=" - cluster" -level=info msg=" groupLimit: 1" -level=info msg="history:" -level=info msg=" enabled: false" -level=info msg=" workers: 123" -level=info msg=" timeout: 1h0m0s" -level=info msg=" rewrite:" -level=info msg=" - source: http://(.+).example.com" -level=info msg=" uri: https://prod-$1.example.com" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" proxy_url: \"\"" -level=info msg=" headers: {}" -level=info msg=" - source: (.+)" -level=info msg=" uri: $1" -level=info msg=" tls:" -level=info msg=" ca: /etc/ca.pem" -level=info msg=" cert: /etc/server.pem" -level=info msg=" key: /etc/server.key" -level=info msg=" insecureSkipVerify: true" -level=info msg=" proxy_url: \"\"" -level=info msg=" headers: {}" -level=info msg="karma:" -level=info msg=" name: karma-demo" -level=info msg="labels:" -level=info msg=" order:" -level=info msg=" - order1" -level=info msg=" - order2" -level=info msg=" keep:" -level=info msg=" - keep1" -level=info msg=" - keep2" -level=info msg=" keep_re:" -level=info msg=" - keep_re1" -level=info msg=" - keep_re2" -level=info msg=" strip:" -level=info msg=" - strip1" -level=info msg=" - strip2" -level=info msg=" strip_re:" -level=info msg=" - strip_re1" -level=info msg=" - strip_re2" -level=info msg=" valueOnly:" -level=info msg=" - severity" -level=info msg=" - job" -level=info msg=" valueOnly_re:" -level=info msg=" - custom_.*" -level=info msg=" color:" -level=info msg=" custom:" -level=info msg=" region:" -level=info msg=" - value_re: .*" -level=info msg=" color: '#736598'" -level=info msg=" severity:" -level=info msg=" - value: info" -level=info msg=" color: '#87c4e0'" -level=info msg=" - value: warning" -level=info msg=" color: '#ffae42'" -level=info msg=" - value: critical" -level=info msg=" color: '#ff220c'" -level=info msg=" static:" -level=info msg=" - job" -level=info msg=" unique:" -level=info msg=" - cluster" -level=info msg=" - instance" -level=info msg=" - '@receiver'" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep:" -level=info msg=" - keep1" -level=info msg=" - keep2" -level=info msg=" keep_re: []" -level=info msg=" strip:" -level=info msg=" - strip1" -level=info msg=" - strip2" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 5m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules:" -level=info msg=" - regex: (DEVOPS-[0-9]+)" -level=info msg=" uriTemplate: https://jira.example.com/browse/$1" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels:" -level=info msg=" - job" -level=info msg=" - severity" -level=info msg=" - region" -level=info msg=" defaultAlertmanagers: []" -level=info msg="ui:" -level=info msg=" refresh: 10s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: false" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: severity" -level=info msg=" multiGridSortReverse: true" -level=info msg="Configured Alertmanager source" cluster=HA name=ha1 proxy=true readonly=false uri=http://127.0.0.1:9093 -level=info msg="Configured Alertmanager source" cluster=HA name=ha2 proxy=false readonly=true uri=http://127.0.0.1:9094 -level=info msg="Configured Alertmanager source" cluster=local name=local proxy=true readonly=false uri=http://foo:xxx@127.0.0.1:9095 -level=info msg="Configured Alertmanager source" cluster=client-auth name=client-auth proxy=false readonly=false uri=https://127.0.0.1:9096 -level=info msg="Setting up proxy endpoints" alertmanager=ha1 -level=info msg="Setting up proxy endpoints" alertmanager=local -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=custom.yaml +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: X-Groups" +level=INFO msg=" group_value_re: .+" +level=INFO msg=" group_value_separator: ','" +level=INFO msg=" basicAuth:" +level=INFO msg=" users:" +level=INFO msg=" - username: number" +level=INFO msg=" password: '***'" +level=INFO msg=" - username: string" +level=INFO msg=" password: '***'" +level=INFO msg=authorization: +level=INFO msg=" groups:" +level=INFO msg=" - name: admins" +level=INFO msg=" members:" +level=INFO msg=" - alice" +level=INFO msg=" - bob" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 10s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: HA" +level=INFO msg=" name: ha1" +level=INFO msg=" uri: http://127.0.0.1:9093" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 10s" +level=INFO msg=" proxy: true" +level=INFO msg=" readonly: false" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=" - cluster: HA" +level=INFO msg=" name: ha2" +level=INFO msg=" uri: http://127.0.0.1:9094" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 10s" +level=INFO msg=" proxy: false" +level=INFO msg=" readonly: true" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: omit" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: local" +level=INFO msg=" uri: http://foo:xxx@127.0.0.1:9095" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 40s" +level=INFO msg=" proxy: true" +level=INFO msg=" readonly: false" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers:" +level=INFO msg=" X-Auth-Test: '***'" +level=INFO msg=" cors:" +level=INFO msg=" credentials: same-origin" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters:" +level=INFO msg=" prom1:" +level=INFO msg=" - alertname=DeadMansSwitch" +level=INFO msg=" - instance=prom1" +level=INFO msg=" prom2:" +level=INFO msg=" - alertname=DeadMansSwitch" +level=INFO msg=" - instance=prom2" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: client-auth" +level=INFO msg=" uri: https://127.0.0.1:9096" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 10s" +level=INFO msg=" proxy: false" +level=INFO msg=" readonly: false" +level=INFO msg=" tls:" +level=INFO msg=" ca: ca.pem" +level=INFO msg=" cert: cert.pem" +level=INFO msg=" key: key.pem" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: true" +level=INFO msg=" filters:" +level=INFO msg=" prom1:" +level=INFO msg=" - alertname=DeadMansSwitch" +level=INFO msg=" - instance=prom1" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: true" +level=INFO msg=" duration: 7m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This is comment" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: true" +level=INFO msg=" hidden:" +level=INFO msg=" - help" +level=INFO msg=" - summary" +level=INFO msg=" visible:" +level=INFO msg=" - visible" +level=INFO msg=" keep:" +level=INFO msg=" - keep" +level=INFO msg=" strip:" +level=INFO msg=" - strip1" +level=INFO msg=" - strip2" +level=INFO msg=" - strip3" +level=INFO msg=" order:" +level=INFO msg=" - summary" +level=INFO msg=" - help" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: true" +level=INFO msg=custom: +level=INFO msg=" css: /custom.css" +level=INFO msg=" js: /custom.js" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default:" +level=INFO msg=" - '@receiver=by-cluster-service'" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: label" +level=INFO msg=" reverse: false" +level=INFO msg=" label: severity" +level=INFO msg=" customValues:" +level=INFO msg=" labels:" +level=INFO msg=" cluster:" +level=INFO msg=" DEV: \"3\"" +level=INFO msg=" Prod: \"1\"" +level=INFO msg=" staging: \"2\"" +level=INFO msg=" severity:" +level=INFO msg=" critical: \"1\"" +level=INFO msg=" info: \"3\"" +level=INFO msg=" warning: \"2\"" +level=INFO msg=" auto:" +level=INFO msg=" ignore:" +level=INFO msg=" - region" +level=INFO msg=" - instance" +level=INFO msg=" order:" +level=INFO msg=" - severity" +level=INFO msg=" - cluster" +level=INFO msg=" groupLimit: 1" +level=INFO msg=history: +level=INFO msg=" enabled: false" +level=INFO msg=" workers: 123" +level=INFO msg=" timeout: 1h0m0s" +level=INFO msg=" rewrite:" +level=INFO msg=" - source: http://(.+).example.com" +level=INFO msg=" uri: https://prod-$1.example.com" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" headers: {}" +level=INFO msg=" - source: (.+)" +level=INFO msg=" uri: $1" +level=INFO msg=" tls:" +level=INFO msg=" ca: /etc/ca.pem" +level=INFO msg=" cert: /etc/server.pem" +level=INFO msg=" key: /etc/server.key" +level=INFO msg=" insecureSkipVerify: true" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" headers: {}" +level=INFO msg=karma: +level=INFO msg=" name: karma-demo" +level=INFO msg=labels: +level=INFO msg=" order:" +level=INFO msg=" - order1" +level=INFO msg=" - order2" +level=INFO msg=" keep:" +level=INFO msg=" - keep1" +level=INFO msg=" - keep2" +level=INFO msg=" keep_re:" +level=INFO msg=" - keep_re1" +level=INFO msg=" - keep_re2" +level=INFO msg=" strip:" +level=INFO msg=" - strip1" +level=INFO msg=" - strip2" +level=INFO msg=" strip_re:" +level=INFO msg=" - strip_re1" +level=INFO msg=" - strip_re2" +level=INFO msg=" valueOnly:" +level=INFO msg=" - severity" +level=INFO msg=" - job" +level=INFO msg=" valueOnly_re:" +level=INFO msg=" - custom_.*" +level=INFO msg=" color:" +level=INFO msg=" custom:" +level=INFO msg=" region:" +level=INFO msg=" - value_re: .*" +level=INFO msg=" color: '#736598'" +level=INFO msg=" severity:" +level=INFO msg=" - value: info" +level=INFO msg=" color: '#87c4e0'" +level=INFO msg=" - value: warning" +level=INFO msg=" color: '#ffae42'" +level=INFO msg=" - value: critical" +level=INFO msg=" color: '#ff220c'" +level=INFO msg=" static:" +level=INFO msg=" - job" +level=INFO msg=" unique:" +level=INFO msg=" - cluster" +level=INFO msg=" - instance" +level=INFO msg=" - '@receiver'" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep:" +level=INFO msg=" - keep1" +level=INFO msg=" - keep2" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip:" +level=INFO msg=" - strip1" +level=INFO msg=" - strip2" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 5m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules:" +level=INFO msg=" - regex: (DEVOPS-[0-9]+)" +level=INFO msg=" uriTemplate: https://jira.example.com/browse/$1" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels:" +level=INFO msg=" - job" +level=INFO msg=" - severity" +level=INFO msg=" - region" +level=INFO msg=" defaultAlertmanagers: []" +level=INFO msg=ui: +level=INFO msg=" refresh: 10s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: false" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: severity" +level=INFO msg=" multiGridSortReverse: true" +level=INFO msg="Configured Alertmanager source" name=ha1 cluster=HA uri=http://127.0.0.1:9093 proxy=true readonly=false +level=INFO msg="Configured Alertmanager source" name=ha2 cluster=HA uri=http://127.0.0.1:9094 proxy=false readonly=true +level=INFO msg="Configured Alertmanager source" name=local cluster=local uri=http://foo:xxx@127.0.0.1:9095 proxy=true readonly=false +level=INFO msg="Configured Alertmanager source" name=client-auth cluster=client-auth uri=https://127.0.0.1:9096 proxy=false readonly=false +level=INFO msg="Setting up proxy endpoints" alertmanager=ha1 +level=INFO msg="Setting up proxy endpoints" alertmanager=local +level=INFO msg="Configuration is valid" -- custom.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/061_log_full_config_file_invalid_values.txt b/cmd/karma/tests/testscript/061_log_full_config_file_invalid_values.txt index 1156819e9..695e005a1 100644 --- a/cmd/karma/tests/testscript/061_log_full_config_file_invalid_values.txt +++ b/cmd/karma/tests/testscript/061_log_full_config_file_invalid_values.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="failed to unmarshal configuration: decoding failed due to the following error(s):\n\n'Alertmanager.Interval' time: invalid duration\n'Alertmanager.Servers[0].Timeout' time: invalid duration\n'Alertmanager.Servers[0].Proxy' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'Alertmanager.Servers[2].Timeout' time: invalid duration\n'Alertmanager.Servers[2].Headers[0]' expected type 'map[string]string', got unconvertible type 'string'\n'alertAcknowledgement.Enabled' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'Annotations.Default.Hidden' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.Refresh' time: unknown unit\n'UI.hideFiltersWhenIdle' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.colorTitlebar' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.animations' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.minimalGroupWidth' cannot parse value as 'int': strconv.ParseInt: invalid syntax\n'UI.alertsPerGroup' cannot parse value as 'int': strconv.ParseInt: invalid syntax" +level=ERROR msg="Execution failed" error="failed to unmarshal configuration: decoding failed due to the following error(s):\n\n'Alertmanager.Interval' time: invalid duration\n'Alertmanager.Servers[0].Timeout' time: invalid duration\n'Alertmanager.Servers[0].Proxy' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'Alertmanager.Servers[2].Timeout' time: invalid duration\n'Alertmanager.Servers[2].Headers[0]' expected type 'map[string]string', got unconvertible type 'string'\n'alertAcknowledgement.Enabled' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'Annotations.Default.Hidden' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.Refresh' time: unknown unit\n'UI.hideFiltersWhenIdle' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.colorTitlebar' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.animations' cannot parse value as 'bool': strconv.ParseBool: invalid syntax\n'UI.minimalGroupWidth' cannot parse value as 'int': strconv.ParseInt: invalid syntax\n'UI.alertsPerGroup' cannot parse value as 'int': strconv.ParseInt: invalid syntax" -- karma.yaml -- alertmanager: interval: jjs88 diff --git a/cmd/karma/tests/testscript/062_log_timestamp.txt b/cmd/karma/tests/testscript/062_log_timestamp.txt index c519b894a..bbe8b5ca1 100644 --- a/cmd/karma/tests/testscript/062_log_timestamp.txt +++ b/cmd/karma/tests/testscript/062_log_timestamp.txt @@ -3,8 +3,8 @@ exec bash -x ./test.sh & exec karma --log.timestamp=true --pid-file=karma.pid --listen.address=127.0.0.1 --listen.port=8062 ! stdout . -stderr '[0-9][0-9]:[0-9][0-9]:[0-9][0-9] level=info msg="Version: dev"' -stderr '[0-9][0-9]:[0-9][0-9]:[0-9][0-9] level=info msg="Pulling latest alerts and silences from Alertmanager"' +stderr 'time=[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+.* level=INFO msg="Version: dev"' +stderr 'time=[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+.* level=INFO msg="Pulling latest alerts and silences from Alertmanager"' wait -- test.sh -- diff --git a/cmd/karma/tests/testscript/063_missing_config_file.txt b/cmd/karma/tests/testscript/063_missing_config_file.txt index 3e758fc91..d8e45e24e 100644 --- a/cmd/karma/tests/testscript/063_missing_config_file.txt +++ b/cmd/karma/tests/testscript/063_missing_config_file.txt @@ -4,4 +4,4 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="failed to load configuration file \"404.yaml\": open 404.yaml: no such file or directory" +level=ERROR msg="Execution failed" error="failed to load configuration file \"404.yaml\": open 404.yaml: no such file or directory" diff --git a/cmd/karma/tests/testscript/064_log_timestamp_json.txt b/cmd/karma/tests/testscript/064_log_timestamp_json.txt index f82bdc2be..f75d0d86c 100644 --- a/cmd/karma/tests/testscript/064_log_timestamp_json.txt +++ b/cmd/karma/tests/testscript/064_log_timestamp_json.txt @@ -3,8 +3,8 @@ exec bash -x ./test.sh & exec karma --log.format=json --log.timestamp=true --pid-file=karma.pid --listen.address=127.0.0.1 --listen.port=8064 ! stdout . -stderr '{"level":"info","time":"[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+.*","message":"Version: dev"}' -stderr '{"level":"info","time":"[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+.*","message":"Pulling latest alerts and silences from Alertmanager"}' +stderr '{"time":"[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+.*","level":"INFO","msg":"Version: dev"}' +stderr '{"time":"[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+.*","level":"INFO","msg":"Pulling latest alerts and silences from Alertmanager"}' wait -- test.sh -- diff --git a/cmd/karma/tests/testscript/065_proxy-with-readonly.txt b/cmd/karma/tests/testscript/065_proxy-with-readonly.txt index a9e64596e..68cc973ab 100644 --- a/cmd/karma/tests/testscript/065_proxy-with-readonly.txt +++ b/cmd/karma/tests/testscript/065_proxy-with-readonly.txt @@ -4,139 +4,139 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 1m0s" -level=info msg=" servers:" -level=info msg=" - cluster: \"\"" -level=info msg=" name: failed" -level=info msg=" uri: http://127.0.0.1" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 40s" -level=info msg=" proxy: true" -level=info msg=" readonly: true" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: false" -level=info msg=" duration: 15m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: false" -level=info msg=" hidden: []" -level=info msg=" visible: []" -level=info msg=" keep: []" -level=info msg=" strip: []" -level=info msg=" order: []" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: false" -level=info msg="custom:" -level=info msg=" css: \"\"" -level=info msg=" js: \"\"" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default: []" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: startsAt" -level=info msg=" reverse: true" -level=info msg=" label: alertname" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore: []" -level=info msg=" order: []" -level=info msg=" groupLimit: 40" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma" -level=info msg="labels:" -level=info msg=" order: []" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg=" valueOnly: []" -level=info msg=" valueOnly_re: []" -level=info msg=" color:" -level=info msg=" custom: {}" -level=info msg=" static: []" -level=info msg=" unique: []" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 10m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels: []" -level=info msg=" defaultAlertmanagers: []" -level=info msg="ui:" -level=info msg=" refresh: 30s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: true" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: \"\"" -level=info msg=" multiGridSortReverse: false" -level=fatal msg="Execution failed" error="failed to create Alertmanager 'failed' with URI 'http://127.0.0.1': cannot use proxy and readonly mode at the same time" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 1m0s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: failed" +level=INFO msg=" uri: http://127.0.0.1" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 40s" +level=INFO msg=" proxy: true" +level=INFO msg=" readonly: true" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: false" +level=INFO msg=" duration: 15m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: false" +level=INFO msg=" hidden: []" +level=INFO msg=" visible: []" +level=INFO msg=" keep: []" +level=INFO msg=" strip: []" +level=INFO msg=" order: []" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: false" +level=INFO msg=custom: +level=INFO msg=" css: \"\"" +level=INFO msg=" js: \"\"" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default: []" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: startsAt" +level=INFO msg=" reverse: true" +level=INFO msg=" label: alertname" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore: []" +level=INFO msg=" order: []" +level=INFO msg=" groupLimit: 40" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma" +level=INFO msg=labels: +level=INFO msg=" order: []" +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=" valueOnly: []" +level=INFO msg=" valueOnly_re: []" +level=INFO msg=" color:" +level=INFO msg=" custom: {}" +level=INFO msg=" static: []" +level=INFO msg=" unique: []" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 10m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels: []" +level=INFO msg=" defaultAlertmanagers: []" +level=INFO msg=ui: +level=INFO msg=" refresh: 30s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: true" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: \"\"" +level=INFO msg=" multiGridSortReverse: false" +level=ERROR msg="Execution failed" error="failed to create Alertmanager 'failed' with URI 'http://127.0.0.1': cannot use proxy and readonly mode at the same time" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/066_proxy.txt b/cmd/karma/tests/testscript/066_proxy.txt index acea510dc..a5f61fbd3 100644 --- a/cmd/karma/tests/testscript/066_proxy.txt +++ b/cmd/karma/tests/testscript/066_proxy.txt @@ -4,141 +4,141 @@ exec karma --log.config=true --config.file=karma.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 1m0s" -level=info msg=" servers:" -level=info msg=" - cluster: \"\"" -level=info msg=" name: proxied" -level=info msg=" uri: http://127.0.0.1" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 40s" -level=info msg=" proxy: true" -level=info msg=" readonly: false" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: false" -level=info msg=" duration: 15m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: false" -level=info msg=" hidden: []" -level=info msg=" visible: []" -level=info msg=" keep: []" -level=info msg=" strip: []" -level=info msg=" order: []" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: false" -level=info msg="custom:" -level=info msg=" css: \"\"" -level=info msg=" js: \"\"" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default: []" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: startsAt" -level=info msg=" reverse: true" -level=info msg=" label: alertname" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore: []" -level=info msg=" order: []" -level=info msg=" groupLimit: 40" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma" -level=info msg="labels:" -level=info msg=" order: []" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg=" valueOnly: []" -level=info msg=" valueOnly_re: []" -level=info msg=" color:" -level=info msg=" custom: {}" -level=info msg=" static: []" -level=info msg=" unique: []" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 10m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels: []" -level=info msg=" defaultAlertmanagers: []" -level=info msg="ui:" -level=info msg=" refresh: 30s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: true" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: \"\"" -level=info msg=" multiGridSortReverse: false" -level=info msg="Configured Alertmanager source" cluster=proxied name=proxied proxy=true readonly=false uri=http://127.0.0.1 -level=info msg="Setting up proxy endpoints" alertmanager=proxied -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 1m0s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: proxied" +level=INFO msg=" uri: http://127.0.0.1" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 40s" +level=INFO msg=" proxy: true" +level=INFO msg=" readonly: false" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: false" +level=INFO msg=" duration: 15m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: false" +level=INFO msg=" hidden: []" +level=INFO msg=" visible: []" +level=INFO msg=" keep: []" +level=INFO msg=" strip: []" +level=INFO msg=" order: []" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: false" +level=INFO msg=custom: +level=INFO msg=" css: \"\"" +level=INFO msg=" js: \"\"" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default: []" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: startsAt" +level=INFO msg=" reverse: true" +level=INFO msg=" label: alertname" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore: []" +level=INFO msg=" order: []" +level=INFO msg=" groupLimit: 40" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma" +level=INFO msg=labels: +level=INFO msg=" order: []" +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=" valueOnly: []" +level=INFO msg=" valueOnly_re: []" +level=INFO msg=" color:" +level=INFO msg=" custom: {}" +level=INFO msg=" static: []" +level=INFO msg=" unique: []" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 10m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels: []" +level=INFO msg=" defaultAlertmanagers: []" +level=INFO msg=ui: +level=INFO msg=" refresh: 30s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: true" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: \"\"" +level=INFO msg=" multiGridSortReverse: false" +level=INFO msg="Configured Alertmanager source" name=proxied cluster=proxied uri=http://127.0.0.1 proxy=true readonly=false +level=INFO msg="Setting up proxy endpoints" alertmanager=proxied +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/067_readonly.txt b/cmd/karma/tests/testscript/067_readonly.txt index b4ee12110..6adc001c9 100644 --- a/cmd/karma/tests/testscript/067_readonly.txt +++ b/cmd/karma/tests/testscript/067_readonly.txt @@ -4,140 +4,140 @@ exec karma --log.config=true --config.file=karma.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 1m0s" -level=info msg=" servers:" -level=info msg=" - cluster: \"\"" -level=info msg=" name: readonly" -level=info msg=" uri: http://127.0.0.1" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 40s" -level=info msg=" proxy: false" -level=info msg=" readonly: true" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: false" -level=info msg=" duration: 15m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: false" -level=info msg=" hidden: []" -level=info msg=" visible: []" -level=info msg=" keep: []" -level=info msg=" strip: []" -level=info msg=" order: []" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: false" -level=info msg="custom:" -level=info msg=" css: \"\"" -level=info msg=" js: \"\"" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default: []" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: startsAt" -level=info msg=" reverse: true" -level=info msg=" label: alertname" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore: []" -level=info msg=" order: []" -level=info msg=" groupLimit: 40" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma" -level=info msg="labels:" -level=info msg=" order: []" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg=" valueOnly: []" -level=info msg=" valueOnly_re: []" -level=info msg=" color:" -level=info msg=" custom: {}" -level=info msg=" static: []" -level=info msg=" unique: []" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 10m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels: []" -level=info msg=" defaultAlertmanagers: []" -level=info msg="ui:" -level=info msg=" refresh: 30s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: true" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: \"\"" -level=info msg=" multiGridSortReverse: false" -level=info msg="Configured Alertmanager source" cluster=readonly name=readonly proxy=false readonly=true uri=http://127.0.0.1 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 1m0s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: readonly" +level=INFO msg=" uri: http://127.0.0.1" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 40s" +level=INFO msg=" proxy: false" +level=INFO msg=" readonly: true" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: false" +level=INFO msg=" duration: 15m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: false" +level=INFO msg=" hidden: []" +level=INFO msg=" visible: []" +level=INFO msg=" keep: []" +level=INFO msg=" strip: []" +level=INFO msg=" order: []" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: false" +level=INFO msg=custom: +level=INFO msg=" css: \"\"" +level=INFO msg=" js: \"\"" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default: []" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: startsAt" +level=INFO msg=" reverse: true" +level=INFO msg=" label: alertname" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore: []" +level=INFO msg=" order: []" +level=INFO msg=" groupLimit: 40" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma" +level=INFO msg=labels: +level=INFO msg=" order: []" +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=" valueOnly: []" +level=INFO msg=" valueOnly_re: []" +level=INFO msg=" color:" +level=INFO msg=" custom: {}" +level=INFO msg=" static: []" +level=INFO msg=" unique: []" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 10m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels: []" +level=INFO msg=" defaultAlertmanagers: []" +level=INFO msg=ui: +level=INFO msg=" refresh: 30s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: true" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: \"\"" +level=INFO msg=" multiGridSortReverse: false" +level=INFO msg="Configured Alertmanager source" name=readonly cluster=readonly uri=http://127.0.0.1 proxy=false readonly=true +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/069_simple_config.txt b/cmd/karma/tests/testscript/069_simple_config.txt index a6c19855f..628b98585 100644 --- a/cmd/karma/tests/testscript/069_simple_config.txt +++ b/cmd/karma/tests/testscript/069_simple_config.txt @@ -7,24 +7,24 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7069 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7069/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7069/metrics\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7069 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7069/api/v2/silences\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7069/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7069/metrics\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7069 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7069/api/v2/silences\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8069 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7069 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1:7069/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7069/metrics\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7069 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7069/api/v2/silences\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:7069/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7069/metrics\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7069 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7069/api/v2/silences\": dial tcp 127.0.0.1:7069: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8069 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- test.sh -- while [ ! -f karma.pid ]; do sleep 1 ; done sleep 1 diff --git a/cmd/karma/tests/testscript/070_upper_case_keys.txt b/cmd/karma/tests/testscript/070_upper_case_keys.txt index f795e23b8..e99d66f91 100644 --- a/cmd/karma/tests/testscript/070_upper_case_keys.txt +++ b/cmd/karma/tests/testscript/070_upper_case_keys.txt @@ -4,150 +4,150 @@ exec karma --log.config=true --config.file=karma.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 1m0s" -level=info msg=" servers:" -level=info msg=" - cluster: \"\"" -level=info msg=" name: am" -level=info msg=" uri: https://127.0.0.1:9093" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: \"\"" -level=info msg=" timeout: 40s" -level=info msg=" proxy: false" -level=info msg=" readonly: false" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: false" -level=info msg=" duration: 15m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: false" -level=info msg=" hidden: []" -level=info msg=" visible: []" -level=info msg=" keep: []" -level=info msg=" strip: []" -level=info msg=" order: []" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: false" -level=info msg="custom:" -level=info msg=" css: \"\"" -level=info msg=" js: \"\"" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default: []" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: startsAt" -level=info msg=" reverse: true" -level=info msg=" label: alertname" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore: []" -level=info msg=" order: []" -level=info msg=" groupLimit: 40" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma" -level=info msg="labels:" -level=info msg=" order: []" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg=" valueOnly: []" -level=info msg=" valueOnly_re: []" -level=info msg=" color:" -level=info msg=" custom:" -level=info msg=" region:" -level=info msg=" - value_re: .*" -level=info msg=" color: '#736598'" -level=info msg=" severity:" -level=info msg=" - value: P3" -level=info msg=" color: '#87c4e0'" -level=info msg=" - value: P2" -level=info msg=" color: '#ffae42'" -level=info msg=" - value: P1" -level=info msg=" color: '#ff220c'" -level=info msg=" static: []" -level=info msg=" unique: []" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 10m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels: []" -level=info msg=" defaultAlertmanagers: []" -level=info msg="ui:" -level=info msg=" refresh: 30s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: true" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: \"\"" -level=info msg=" multiGridSortReverse: false" -level=info msg="Configured Alertmanager source" cluster=am name=am proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 1m0s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: am" +level=INFO msg=" uri: https://127.0.0.1:9093" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: \"\"" +level=INFO msg=" timeout: 40s" +level=INFO msg=" proxy: false" +level=INFO msg=" readonly: false" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: false" +level=INFO msg=" duration: 15m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: false" +level=INFO msg=" hidden: []" +level=INFO msg=" visible: []" +level=INFO msg=" keep: []" +level=INFO msg=" strip: []" +level=INFO msg=" order: []" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: false" +level=INFO msg=custom: +level=INFO msg=" css: \"\"" +level=INFO msg=" js: \"\"" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default: []" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: startsAt" +level=INFO msg=" reverse: true" +level=INFO msg=" label: alertname" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore: []" +level=INFO msg=" order: []" +level=INFO msg=" groupLimit: 40" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma" +level=INFO msg=labels: +level=INFO msg=" order: []" +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=" valueOnly: []" +level=INFO msg=" valueOnly_re: []" +level=INFO msg=" color:" +level=INFO msg=" custom:" +level=INFO msg=" region:" +level=INFO msg=" - value_re: .*" +level=INFO msg=" color: '#736598'" +level=INFO msg=" severity:" +level=INFO msg=" - value: P3" +level=INFO msg=" color: '#87c4e0'" +level=INFO msg=" - value: P2" +level=INFO msg=" color: '#ffae42'" +level=INFO msg=" - value: P1" +level=INFO msg=" color: '#ff220c'" +level=INFO msg=" static: []" +level=INFO msg=" unique: []" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 10m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels: []" +level=INFO msg=" defaultAlertmanagers: []" +level=INFO msg=ui: +level=INFO msg=" refresh: 30s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: true" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: \"\"" +level=INFO msg=" multiGridSortReverse: false" +level=INFO msg="Configured Alertmanager source" name=am cluster=am uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/072_pid_file_write_error.txt b/cmd/karma/tests/testscript/072_pid_file_write_error.txt index 6da3cd4e4..ed7d36491 100644 --- a/cmd/karma/tests/testscript/072_pid_file_write_error.txt +++ b/cmd/karma/tests/testscript/072_pid_file_write_error.txt @@ -5,7 +5,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7072 -level=info msg="Writing PID file" path=/foo/bar/karma.pid -level=fatal msg="Execution failed" error="failed to write a PID file: open /foo/bar/karma.pid: no such file or directory" +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7072 proxy=false readonly=false +level=INFO msg="Writing PID file" path=/foo/bar/karma.pid +level=ERROR msg="Execution failed" error="failed to write a PID file: open /foo/bar/karma.pid: no such file or directory" diff --git a/cmd/karma/tests/testscript/073_pid_file_remove_error.txt b/cmd/karma/tests/testscript/073_pid_file_remove_error.txt index a547234d0..9bf2ab83e 100644 --- a/cmd/karma/tests/testscript/073_pid_file_remove_error.txt +++ b/cmd/karma/tests/testscript/073_pid_file_remove_error.txt @@ -7,25 +7,25 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7073 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7073/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7073/metrics\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7073 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7073/api/v2/silences\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7073/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7073/metrics\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7073 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7073/api/v2/silences\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8073 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid -level=fatal msg="Execution failed" error="failed to remove PID file: remove karma.pid: no such file or directory" +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7073 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1:7073/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7073/metrics\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7073 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7073/api/v2/silences\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:7073/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7073/metrics\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7073 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7073/api/v2/silences\": dial tcp 127.0.0.1:7073: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8073 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid +level=ERROR msg="Execution failed" error="failed to remove PID file: remove karma.pid: no such file or directory" -- test.sh -- while [ ! -f karma.pid ]; do sleep 1 ; done sleep 1 diff --git a/cmd/karma/tests/testscript/074_acl_extra_fields.txt b/cmd/karma/tests/testscript/074_acl_extra_fields.txt index 3a8e7d61f..0936cd57a 100644 --- a/cmd/karma/tests/testscript/074_acl_extra_fields.txt +++ b/cmd/karma/tests/testscript/074_acl_extra_fields.txt @@ -4,11 +4,11 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Reading silence ACL config file" path=acl.yaml -level=fatal msg="Execution failed" error="failed to parse silence ACL configuration file \"acl.yaml\": yaml: unmarshal errors:\n line 6: field nameFoo not found in type config.SilenceFilters" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Reading silence ACL config file" path=acl.yaml +level=ERROR msg="Execution failed" error="failed to parse silence ACL configuration file \"acl.yaml\": yaml: unmarshal errors:\n line 6: field nameFoo not found in type config.SilenceFilters" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/075_config_extra_fields.txt b/cmd/karma/tests/testscript/075_config_extra_fields.txt index 80f9ad708..1c7baae2c 100644 --- a/cmd/karma/tests/testscript/075_config_extra_fields.txt +++ b/cmd/karma/tests/testscript/075_config_extra_fields.txt @@ -4,7 +4,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="failed to parse configuration file \"karma.yaml\": yaml: unmarshal errors:\n line 5: field authorizationFoo not found in type config.configSchema" +level=ERROR msg="Execution failed" error="failed to parse configuration file \"karma.yaml\": yaml: unmarshal errors:\n line 5: field authorizationFoo not found in type config.configSchema" -- karma.yaml -- authentication: header: diff --git a/cmd/karma/tests/testscript/077_listen_invalid_port.txt b/cmd/karma/tests/testscript/077_listen_invalid_port.txt index b7e29c664..7c7cc0763 100644 --- a/cmd/karma/tests/testscript/077_listen_invalid_port.txt +++ b/cmd/karma/tests/testscript/077_listen_invalid_port.txt @@ -5,18 +5,18 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://foo:xxx@127.0.0.1 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://foo:xxx@127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://foo:***@127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://foo:xxx@127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://foo:xxx@127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://foo:***@127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://foo:xxx@127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=fatal msg="Execution failed" error="listen tcp: address 9999999: invalid port" +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://foo:xxx@127.0.0.1 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://foo:xxx@127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://foo:***@127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://foo:xxx@127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://foo:xxx@127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://foo:***@127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://foo:xxx@127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=ERROR msg="Execution failed" error="listen tcp: address 9999999: invalid port" diff --git a/cmd/karma/tests/testscript/078_tls_missing_ca.txt b/cmd/karma/tests/testscript/078_tls_missing_ca.txt index 6db55b775..c0047d1ee 100644 --- a/cmd/karma/tests/testscript/078_tls_missing_ca.txt +++ b/cmd/karma/tests/testscript/078_tls_missing_ca.txt @@ -5,9 +5,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': open ca.crt: no such file or directory" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': open ca.crt: no such file or directory" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/079_tls_missing_client.txt b/cmd/karma/tests/testscript/079_tls_missing_client.txt index 6b5ac96df..5738a2feb 100644 --- a/cmd/karma/tests/testscript/079_tls_missing_client.txt +++ b/cmd/karma/tests/testscript/079_tls_missing_client.txt @@ -5,9 +5,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': open client.pem: no such file or directory" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': open client.pem: no such file or directory" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/080_tls_missing_key.txt b/cmd/karma/tests/testscript/080_tls_missing_key.txt index 42d8306c3..b2a4d58c4 100644 --- a/cmd/karma/tests/testscript/080_tls_missing_key.txt +++ b/cmd/karma/tests/testscript/080_tls_missing_key.txt @@ -5,9 +5,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': open client.key: no such file or directory" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': open client.key: no such file or directory" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/081_tls_unparsable_cert.txt b/cmd/karma/tests/testscript/081_tls_unparsable_cert.txt index aa7902958..998cbde8f 100644 --- a/cmd/karma/tests/testscript/081_tls_unparsable_cert.txt +++ b/cmd/karma/tests/testscript/081_tls_unparsable_cert.txt @@ -5,9 +5,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': tls: failed to find any PEM data in certificate input" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': tls: failed to find any PEM data in certificate input" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/082_tls_unparsable_key.txt b/cmd/karma/tests/testscript/082_tls_unparsable_key.txt index 0478407ff..2bbf3346e 100644 --- a/cmd/karma/tests/testscript/082_tls_unparsable_key.txt +++ b/cmd/karma/tests/testscript/082_tls_unparsable_key.txt @@ -5,9 +5,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': tls: failed to find any PEM data in key input" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create HTTP transport for Alertmanager 'client-auth' with URI 'https://127.0.0.1:9093': tls: failed to find any PEM data in key input" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/083_metrics.txt b/cmd/karma/tests/testscript/083_metrics.txt index 353ca923a..ad37fa330 100644 --- a/cmd/karma/tests/testscript/083_metrics.txt +++ b/cmd/karma/tests/testscript/083_metrics.txt @@ -123,24 +123,24 @@ promhttp_metric_handler_requests_total{code="200"} promhttp_metric_handler_requests_total{code="500"} promhttp_metric_handler_requests_total{code="503"} -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7083 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7083/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7083/metrics\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7083 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7083/api/v2/silences\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7083/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7083/metrics\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7083 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7083/api/v2/silences\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8083 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7083 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1:7083/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7083/metrics\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7083 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7083/api/v2/silences\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:7083/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7083/metrics\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7083 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7083/api/v2/silences\": dial tcp 127.0.0.1:7083: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8083 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- test.sh -- while [ ! -f karma.pid ]; do sleep 1 ; done sleep 5 diff --git a/cmd/karma/tests/testscript/084_invalid_valueonly_regex.txt b/cmd/karma/tests/testscript/084_invalid_valueonly_regex.txt index e97b63508..4b0f04ab1 100644 --- a/cmd/karma/tests/testscript/084_invalid_valueonly_regex.txt +++ b/cmd/karma/tests/testscript/084_invalid_valueonly_regex.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="valueOnly regex rule '.++++' is invalid: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="valueOnly regex rule '.++++' is invalid: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/085_debug.txt b/cmd/karma/tests/testscript/085_debug.txt index 0714b2ac6..ddb23daa5 100644 --- a/cmd/karma/tests/testscript/085_debug.txt +++ b/cmd/karma/tests/testscript/085_debug.txt @@ -7,24 +7,24 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7085 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7085/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7085/metrics\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7085 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7085/api/v2/silences\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7085/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7085/metrics\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7085 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7085/api/v2/silences\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8085 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7085 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1:7085/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7085/metrics\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7085 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7085/api/v2/silences\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:7085/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7085/metrics\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7085 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7085/api/v2/silences\": dial tcp 127.0.0.1:7085: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8085 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- test.sh -- while [ ! -f karma.pid ]; do sleep 1 ; done sleep 1 diff --git a/cmd/karma/tests/testscript/088_listen_tls_key_invalid.txt b/cmd/karma/tests/testscript/088_listen_tls_key_invalid.txt index 76f4bd201..7bf799cdd 100644 --- a/cmd/karma/tests/testscript/088_listen_tls_key_invalid.txt +++ b/cmd/karma/tests/testscript/088_listen_tls_key_invalid.txt @@ -8,26 +8,26 @@ cmp stderr stderr.txt -- server.bad -- BAD KEY -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=local name=local proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=local -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTPS server" address=127.0.0.1:8088 -level=error msg="HTTPS server startup error" error="tls: failed to find any PEM data in key input" -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=local cluster=local uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=local +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTPS server" address=127.0.0.1:8088 +level=ERROR msg="HTTPS server startup error" error="tls: failed to find any PEM data in key input" +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/089_listen_tls_cert_invalid.txt b/cmd/karma/tests/testscript/089_listen_tls_cert_invalid.txt index 84453d109..666ea17f4 100644 --- a/cmd/karma/tests/testscript/089_listen_tls_cert_invalid.txt +++ b/cmd/karma/tests/testscript/089_listen_tls_cert_invalid.txt @@ -8,26 +8,26 @@ cmp stderr stderr.txt -- server.bad -- BAD CERT -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=local name=local proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=local -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTPS server" address=127.0.0.1:8089 -level=error msg="HTTPS server startup error" error="tls: failed to find any PEM data in certificate input" -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=local cluster=local uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=local +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTPS server" address=127.0.0.1:8089 +level=ERROR msg="HTTPS server startup error" error="tls: failed to find any PEM data in certificate input" +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/090_listen_tls_key_missing.txt b/cmd/karma/tests/testscript/090_listen_tls_key_missing.txt index c82d7f5ca..b14d2d419 100644 --- a/cmd/karma/tests/testscript/090_listen_tls_key_missing.txt +++ b/cmd/karma/tests/testscript/090_listen_tls_key_missing.txt @@ -6,26 +6,26 @@ exec karma --pid-file=karma.pid --config.file=karma.yaml --listen.address=127.0. cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=local name=local proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=local -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTPS server" address=127.0.0.1:8090 -level=error msg="HTTPS server startup error" error="open server.nofound: no such file or directory" -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=local cluster=local uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=local +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTPS server" address=127.0.0.1:8090 +level=ERROR msg="HTTPS server startup error" error="open server.nofound: no such file or directory" +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/091_listen_tls_cert_missing.txt b/cmd/karma/tests/testscript/091_listen_tls_cert_missing.txt index 21b2f88e5..60463fab3 100644 --- a/cmd/karma/tests/testscript/091_listen_tls_cert_missing.txt +++ b/cmd/karma/tests/testscript/091_listen_tls_cert_missing.txt @@ -6,26 +6,26 @@ exec karma --pid-file=karma.pid --config.file=karma.yaml --listen.address=127.0. cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=local name=local proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=local -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 -level=info msg="GET request" timeout=10 uri=https://127.0.0.1:9093/metrics -level=error msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 -level=error msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTPS server" address=127.0.0.1:8091 -level=error msg="HTTPS server startup error" error="open server.notfound: no such file or directory" -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=local cluster=local uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=local +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=1/2 +level=INFO msg="GET request" uri=https://127.0.0.1:9093/metrics timeout=10s +level=ERROR msg="Request failed" error="Get \"https://127.0.0.1:9093/metrics\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local uri=https://127.0.0.1:9093 +level=ERROR msg="Collection failed" error="Get \"https://127.0.0.1:9093/api/v2/silences\": dial tcp 127.0.0.1:9093: connect: connection refused" alertmanager=local try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTPS server" address=127.0.0.1:8091 +level=ERROR msg="HTTPS server startup error" error="open server.notfound: no such file or directory" +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/092_listen_tls_key_empty.txt b/cmd/karma/tests/testscript/092_listen_tls_key_empty.txt index c4a3d8c54..318713322 100644 --- a/cmd/karma/tests/testscript/092_listen_tls_key_empty.txt +++ b/cmd/karma/tests/testscript/092_listen_tls_key_empty.txt @@ -5,7 +5,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="listen.tls.key must be set when listen.tls.cert is set" +level=ERROR msg="Execution failed" error="listen.tls.key must be set when listen.tls.cert is set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/093_listen_tls_cert_empty.txt b/cmd/karma/tests/testscript/093_listen_tls_cert_empty.txt index 6edc3dfb6..8f5b2be57 100644 --- a/cmd/karma/tests/testscript/093_listen_tls_cert_empty.txt +++ b/cmd/karma/tests/testscript/093_listen_tls_cert_empty.txt @@ -5,7 +5,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="listen.tls.cert must be set when listen.tls.key is set" +level=ERROR msg="Execution failed" error="listen.tls.cert must be set when listen.tls.key is set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/094_shutdown_slow_client.txt b/cmd/karma/tests/testscript/094_shutdown_slow_client.txt index 1c33c8d92..85dd073ef 100644 --- a/cmd/karma/tests/testscript/094_shutdown_slow_client.txt +++ b/cmd/karma/tests/testscript/094_shutdown_slow_client.txt @@ -7,26 +7,26 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=proxied name=proxied proxy=true readonly=false uri=http://127.0.0.1:9094 -level=info msg="Setting up proxy endpoints" alertmanager=proxied -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=proxied -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:9094/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:9094/metrics\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied uri=http://127.0.0.1:9094 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:9094/api/v2/silences\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:9094/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:9094/metrics\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied uri=http://127.0.0.1:9094 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:9094/api/v2/silences\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8094 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="Removing PID file" path=karma.pid -level=fatal msg="Execution failed" error="shutdown error: context deadline exceeded" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=proxied cluster=proxied uri=http://127.0.0.1:9094 proxy=true readonly=false +level=INFO msg="Setting up proxy endpoints" alertmanager=proxied +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=proxied +level=INFO msg="GET request" uri=http://127.0.0.1:9094/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:9094/metrics\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied uri=http://127.0.0.1:9094 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:9094/api/v2/silences\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:9094/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:9094/metrics\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied uri=http://127.0.0.1:9094 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:9094/api/v2/silences\": dial tcp 127.0.0.1:9094: connect: connection refused" alertmanager=proxied try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8094 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="Removing PID file" path=karma.pid +level=ERROR msg="Execution failed" error="shutdown error: context deadline exceeded" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/095_healthcheck_alert_invalid_filter.txt b/cmd/karma/tests/testscript/095_healthcheck_alert_invalid_filter.txt index 6966360f2..f29801ff9 100644 --- a/cmd/karma/tests/testscript/095_healthcheck_alert_invalid_filter.txt +++ b/cmd/karma/tests/testscript/095_healthcheck_alert_invalid_filter.txt @@ -4,9 +4,9 @@ cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=fatal msg="Execution failed" error="failed to create Alertmanager 'default' with URI 'https://127.0.0.1:9093': \"alertname==\" is not a valid filter" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=ERROR msg="Execution failed" error="failed to create Alertmanager 'default' with URI 'https://127.0.0.1:9093': \"alertname==\" is not a valid filter" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/096_tls_client.txt b/cmd/karma/tests/testscript/096_tls_client.txt index ad5363c82..745c5f2fc 100644 --- a/cmd/karma/tests/testscript/096_tls_client.txt +++ b/cmd/karma/tests/testscript/096_tls_client.txt @@ -5,14 +5,14 @@ exec bash -x ./test.sh & exec bash -c 'I=0 ; while [ ! -f alertmanager.pid ] && [ $I -lt 30 ]; do sleep 1; I=$((I+1)); done' exec karma --pid-file=karma.pid ! stdout . -stderr 'level=info msg="Upstream version" alertmanager=client-auth version=0.24.0' -stderr 'level=info msg="Got silences" alertmanager=client-auth duration=.+ silences=0' -stderr 'level=info msg="Detecting ticket links in silences" alertmanager=client-auth silences=0' -stderr 'level=info msg="Collected alert groups" alertmanager=client-auth duration=.+ groups=0' -stderr 'level=info msg="Deduplicating alert groups" alertmanager=client-auth groups=0' -stderr 'level=info msg="Processing deduplicated alert groups" alertmanager=client-auth groups=0' -stderr 'level=info msg="Merging autocomplete hints" alertmanager=client-auth hints=0' -stderr 'level=info msg="Collection completed"' +stderr 'level=INFO msg="Upstream version" version=0.24.0 alertmanager=client-auth' +stderr 'level=INFO msg="Got silences" alertmanager=client-auth silences=0 duration=.+' +stderr 'level=INFO msg="Detecting ticket links in silences" alertmanager=client-auth silences=0' +stderr 'level=INFO msg="Collected alert groups" alertmanager=client-auth groups=0 duration=.+' +stderr 'level=INFO msg="Deduplicating alert groups" alertmanager=client-auth groups=0' +stderr 'level=INFO msg="Processing deduplicated alert groups" alertmanager=client-auth groups=0' +stderr 'level=INFO msg="Merging autocomplete hints" alertmanager=client-auth hints=0' +stderr 'level=INFO msg="Collection completed"' wait -- alertmanager.conf -- diff --git a/cmd/karma/tests/testscript/097_proxy_url_config.txt b/cmd/karma/tests/testscript/097_proxy_url_config.txt index 8d2052d75..3a277e9f7 100644 --- a/cmd/karma/tests/testscript/097_proxy_url_config.txt +++ b/cmd/karma/tests/testscript/097_proxy_url_config.txt @@ -4,140 +4,140 @@ exec karma --log.config=true --config.file=karma.yaml --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 1m0s" -level=info msg=" servers:" -level=info msg=" - cluster: \"\"" -level=info msg=" name: socks5_proxy" -level=info msg=" uri: http://127.0.0.1" -level=info msg=" external_uri: \"\"" -level=info msg=" proxy_url: socks5://local.proxy:1080" -level=info msg=" timeout: 40s" -level=info msg=" proxy: false" -level=info msg=" readonly: false" -level=info msg=" tls:" -level=info msg=" ca: \"\"" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" insecureSkipVerify: false" -level=info msg=" headers: {}" -level=info msg=" cors:" -level=info msg=" credentials: include" -level=info msg=" healthcheck:" -level=info msg=" visible: false" -level=info msg=" filters: {}" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: false" -level=info msg=" duration: 15m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: false" -level=info msg=" hidden: []" -level=info msg=" visible: []" -level=info msg=" keep: []" -level=info msg=" strip: []" -level=info msg=" order: []" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: false" -level=info msg="custom:" -level=info msg=" css: \"\"" -level=info msg=" js: \"\"" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default: []" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: startsAt" -level=info msg=" reverse: true" -level=info msg=" label: alertname" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore: []" -level=info msg=" order: []" -level=info msg=" groupLimit: 40" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma" -level=info msg="labels:" -level=info msg=" order: []" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg=" valueOnly: []" -level=info msg=" valueOnly_re: []" -level=info msg=" color:" -level=info msg=" custom: {}" -level=info msg=" static: []" -level=info msg=" unique: []" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 10m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels: []" -level=info msg=" defaultAlertmanagers: []" -level=info msg="ui:" -level=info msg=" refresh: 30s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: true" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: \"\"" -level=info msg=" multiGridSortReverse: false" -level=info msg="Configured Alertmanager source" cluster=socks5_proxy name=socks5_proxy proxy=false readonly=false uri=http://127.0.0.1 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 1m0s" +level=INFO msg=" servers:" +level=INFO msg=" - cluster: \"\"" +level=INFO msg=" name: socks5_proxy" +level=INFO msg=" uri: http://127.0.0.1" +level=INFO msg=" external_uri: \"\"" +level=INFO msg=" proxy_url: socks5://local.proxy:1080" +level=INFO msg=" timeout: 40s" +level=INFO msg=" proxy: false" +level=INFO msg=" readonly: false" +level=INFO msg=" tls:" +level=INFO msg=" ca: \"\"" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" insecureSkipVerify: false" +level=INFO msg=" headers: {}" +level=INFO msg=" cors:" +level=INFO msg=" credentials: include" +level=INFO msg=" healthcheck:" +level=INFO msg=" visible: false" +level=INFO msg=" filters: {}" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: false" +level=INFO msg=" duration: 15m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: false" +level=INFO msg=" hidden: []" +level=INFO msg=" visible: []" +level=INFO msg=" keep: []" +level=INFO msg=" strip: []" +level=INFO msg=" order: []" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: false" +level=INFO msg=custom: +level=INFO msg=" css: \"\"" +level=INFO msg=" js: \"\"" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default: []" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: startsAt" +level=INFO msg=" reverse: true" +level=INFO msg=" label: alertname" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore: []" +level=INFO msg=" order: []" +level=INFO msg=" groupLimit: 40" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma" +level=INFO msg=labels: +level=INFO msg=" order: []" +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=" valueOnly: []" +level=INFO msg=" valueOnly_re: []" +level=INFO msg=" color:" +level=INFO msg=" custom: {}" +level=INFO msg=" static: []" +level=INFO msg=" unique: []" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 10m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels: []" +level=INFO msg=" defaultAlertmanagers: []" +level=INFO msg=ui: +level=INFO msg=" refresh: 30s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: true" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: \"\"" +level=INFO msg=" multiGridSortReverse: false" +level=INFO msg="Configured Alertmanager source" name=socks5_proxy cluster=socks5_proxy uri=http://127.0.0.1 proxy=false readonly=false +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/098_proxy_url_request.txt b/cmd/karma/tests/testscript/098_proxy_url_request.txt index 54eb8b28b..6a9149c20 100644 --- a/cmd/karma/tests/testscript/098_proxy_url_request.txt +++ b/cmd/karma/tests/testscript/098_proxy_url_request.txt @@ -4,15 +4,15 @@ exec bash -x ./test.sh & exec bash -c 'I=0 ; while [ ! -f alertmanager.pid ] && [ $I -lt 30 ]; do sleep 1; I=$((I+1)); done' exec karma --pid-file=karma.pid ! stdout . -stderr 'level=info msg="Configured Alertmanager source" cluster=proxy-url name=proxy-url proxy=false readonly=false uri=http://am.example.com' -stderr 'level=info msg="GET request" timeout=10 uri=http://am.example.com/metrics' -stderr 'level=info msg="Upstream version" alertmanager=proxy-url version=0.24.0' -stderr 'level=info msg="Got silences" alertmanager=proxy-url duration=.+ silences=0' -stderr 'level=info msg="Collected alert groups" alertmanager=proxy-url duration=.+ groups=0' -stderr 'level=info msg="Deduplicating alert groups" alertmanager=proxy-url groups=0' -stderr 'level=info msg="Processing deduplicated alert groups" alertmanager=proxy-url groups=0' -stderr 'level=info msg="Merging autocomplete hints" alertmanager=proxy-url hints=0' -stderr 'level=info msg="Collection completed"' +stderr 'level=INFO msg="Configured Alertmanager source" name=proxy-url cluster=proxy-url uri=http://am.example.com proxy=false readonly=false' +stderr 'level=INFO msg="GET request" uri=http://am.example.com/metrics timeout=10s' +stderr 'level=INFO msg="Upstream version" version=0.24.0 alertmanager=proxy-url' +stderr 'level=INFO msg="Got silences" alertmanager=proxy-url silences=0 duration=.+' +stderr 'level=INFO msg="Collected alert groups" alertmanager=proxy-url groups=0 duration=.+' +stderr 'level=INFO msg="Deduplicating alert groups" alertmanager=proxy-url groups=0' +stderr 'level=INFO msg="Processing deduplicated alert groups" alertmanager=proxy-url groups=0' +stderr 'level=INFO msg="Merging autocomplete hints" alertmanager=proxy-url hints=0' +stderr 'level=INFO msg="Collection completed"' wait -- test.sh -- diff --git a/cmd/karma/tests/testscript/100_auth_header_groups_no_name.txt b/cmd/karma/tests/testscript/100_auth_header_groups_no_name.txt index 550c24930..3170b0257 100644 --- a/cmd/karma/tests/testscript/100_auth_header_groups_no_name.txt +++ b/cmd/karma/tests/testscript/100_auth_header_groups_no_name.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.header.group_name is required when authentication.header.group_value_re is set" +level=ERROR msg="Execution failed" error="authentication.header.group_name is required when authentication.header.group_value_re is set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/101_auth_header_groups_invalid_regex.txt b/cmd/karma/tests/testscript/101_auth_header_groups_invalid_regex.txt index 9a90fa629..bade84bc8 100644 --- a/cmd/karma/tests/testscript/101_auth_header_groups_invalid_regex.txt +++ b/cmd/karma/tests/testscript/101_auth_header_groups_invalid_regex.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="invalid regex for authentication.header.group_value_re: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="invalid regex for authentication.header.group_value_re: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/102_auth_header_groups_no_regex.txt b/cmd/karma/tests/testscript/102_auth_header_groups_no_regex.txt index f62397d0d..4fa8a5858 100644 --- a/cmd/karma/tests/testscript/102_auth_header_groups_no_regex.txt +++ b/cmd/karma/tests/testscript/102_auth_header_groups_no_regex.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="authentication.header.group_value_re is required when authentication.header.group_name is set" +level=ERROR msg="Execution failed" error="authentication.header.group_value_re is required when authentication.header.group_name is set" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/103_alert_history_tls.txt b/cmd/karma/tests/testscript/103_alert_history_tls.txt index c67604ef4..4305f1233 100644 --- a/cmd/karma/tests/testscript/103_alert_history_tls.txt +++ b/cmd/karma/tests/testscript/103_alert_history_tls.txt @@ -11,25 +11,25 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8103 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8103 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/105_alert_history_invalid_workers.txt b/cmd/karma/tests/testscript/105_alert_history_invalid_workers.txt index a3732cf36..2a9b7595c 100644 --- a/cmd/karma/tests/testscript/105_alert_history_invalid_workers.txt +++ b/cmd/karma/tests/testscript/105_alert_history_invalid_workers.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="history.workers must be >= 1" +level=ERROR msg="Execution failed" error="history.workers must be >= 1" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/106_silences_expire_invalid_value.txt b/cmd/karma/tests/testscript/106_silences_expire_invalid_value.txt index 008caf82e..8ac6ea53c 100644 --- a/cmd/karma/tests/testscript/106_silences_expire_invalid_value.txt +++ b/cmd/karma/tests/testscript/106_silences_expire_invalid_value.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="failed to unmarshal configuration: decoding failed due to the following error(s):\n\n'Silences.Expired' time: invalid duration" +level=ERROR msg="Execution failed" error="failed to unmarshal configuration: decoding failed due to the following error(s):\n\n'Silences.Expired' time: invalid duration" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/107_silences_expire_disabled.txt b/cmd/karma/tests/testscript/107_silences_expire_disabled.txt index 7a5ae33a5..c3ccc4979 100644 --- a/cmd/karma/tests/testscript/107_silences_expire_disabled.txt +++ b/cmd/karma/tests/testscript/107_silences_expire_disabled.txt @@ -3,10 +3,10 @@ exec karma --check-config cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=https://127.0.0.1:9093 -level=info msg="Configuration is valid" +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=https://127.0.0.1:9093 proxy=false readonly=false +level=INFO msg="Configuration is valid" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/108_alert_history_proxy_url.txt b/cmd/karma/tests/testscript/108_alert_history_proxy_url.txt index 2f5119881..f3d31e6f7 100644 --- a/cmd/karma/tests/testscript/108_alert_history_proxy_url.txt +++ b/cmd/karma/tests/testscript/108_alert_history_proxy_url.txt @@ -9,25 +9,25 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7108 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7108/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7108/metrics\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7108 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7108/api/v2/silences\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7108/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7108/metrics\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7108 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7108/api/v2/silences\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8108 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7108 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1:7108/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7108/metrics\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7108 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7108/api/v2/silences\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:7108/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7108/metrics\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7108 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7108/api/v2/silences\": dial tcp 127.0.0.1:7108: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8108 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- query.json -- { "sources": [ diff --git a/cmd/karma/tests/testscript/109_alert_history_proxy_url_invalid.txt b/cmd/karma/tests/testscript/109_alert_history_proxy_url_invalid.txt index 2970ae14f..b4d4c35a8 100644 --- a/cmd/karma/tests/testscript/109_alert_history_proxy_url_invalid.txt +++ b/cmd/karma/tests/testscript/109_alert_history_proxy_url_invalid.txt @@ -9,26 +9,26 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8109 -level=warn msg="Error while configuring HTTP transport for history request" error="failed to parse provided proxy url \"%gh&%ij\": parse \"%gh&%ij\": invalid URL escape \"%gh\"" uri=http://127.0.0.1:9109 worker=1 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8109 +level=WARN msg="Error while configuring HTTP transport for history request" worker=1 uri=http://127.0.0.1:9109 error="failed to parse provided proxy url \"%gh&%ij\": parse \"%gh&%ij\": invalid URL escape \"%gh\"" +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- query.json -- { "sources": [ diff --git a/cmd/karma/tests/testscript/110_alert_history.txt b/cmd/karma/tests/testscript/110_alert_history.txt index e371b28ae..92af0f9e3 100644 --- a/cmd/karma/tests/testscript/110_alert_history.txt +++ b/cmd/karma/tests/testscript/110_alert_history.txt @@ -9,24 +9,24 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1:7110 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7110/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7110/metrics\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7110 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7110/api/v2/silences\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1:7110/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1:7110/metrics\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7110 -level=error msg="Collection failed" error="Get \"http://127.0.0.1:7110/api/v2/silences\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8110 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1:7110 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1:7110/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7110/metrics\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7110 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7110/api/v2/silences\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1:7110/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1:7110/metrics\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default uri=http://127.0.0.1:7110 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1:7110/api/v2/silences\": dial tcp 127.0.0.1:7110: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8110 +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- query.json -- { "sources": [ diff --git a/cmd/karma/tests/testscript/111_alert_history_tls_bad.txt b/cmd/karma/tests/testscript/111_alert_history_tls_bad.txt index fac393713..a085b9f87 100644 --- a/cmd/karma/tests/testscript/111_alert_history_tls_bad.txt +++ b/cmd/karma/tests/testscript/111_alert_history_tls_bad.txt @@ -9,26 +9,26 @@ cmp stderr stderr.txt wait -- stderr.txt -- -level=info msg="Reading configuration file" path=karma.yaml -level=info msg="Version: dev" -level=info msg="Configured Alertmanager source" cluster=default name=default proxy=false readonly=false uri=http://127.0.0.1 -level=info msg="Writing PID file" path=karma.pid -level=info msg="Initial Alertmanager collection" -level=info msg="Pulling latest alerts and silences from Alertmanager" -level=info msg="Collecting alerts and silences" alertmanager=default -level=info msg="GET request" timeout=40 uri=http://127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 -level=info msg="GET request" timeout=40 uri=http://127.0.0.1/metrics -level=error msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 -level=error msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 -level=info msg="Collection completed" -level=info msg="Done, starting HTTP server" -level=info msg="Starting HTTP server" address=127.0.0.1:8111 -level=warn msg="Error while configuring HTTP transport for history request" error="failed to create HTTP transport for 'http://127.0.0.1:9111': open /xxx/yyy/ca.pem: no such file or directory" uri=http://127.0.0.1:9111 worker=1 -level=info msg="Shutting down HTTP server" signal=terminated -level=info msg="HTTP server shut down" -level=info msg="Removing PID file" path=karma.pid +level=INFO msg="Reading configuration file" path=karma.yaml +level=INFO msg="Version: dev" +level=INFO msg="Configured Alertmanager source" name=default cluster=default uri=http://127.0.0.1 proxy=false readonly=false +level=INFO msg="Writing PID file" path=karma.pid +level=INFO msg="Initial Alertmanager collection" +level=INFO msg="Pulling latest alerts and silences from Alertmanager" +level=INFO msg="Collecting alerts and silences" alertmanager=default +level=INFO msg="GET request" uri=http://127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=1/2 +level=INFO msg="GET request" uri=http://127.0.0.1/metrics timeout=40s +level=ERROR msg="Request failed" error="Get \"http://127.0.0.1/metrics\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default uri=http://127.0.0.1 +level=ERROR msg="Collection failed" error="Get \"http://127.0.0.1/api/v2/silences\": dial tcp 127.0.0.1:80: connect: connection refused" alertmanager=default try=2/2 +level=INFO msg="Collection completed" +level=INFO msg="Done, starting HTTP server" +level=INFO msg="Starting HTTP server" address=127.0.0.1:8111 +level=WARN msg="Error while configuring HTTP transport for history request" worker=1 uri=http://127.0.0.1:9111 error="failed to create HTTP transport for 'http://127.0.0.1:9111': open /xxx/yyy/ca.pem: no such file or directory" +level=INFO msg="Shutting down HTTP server" signal=terminated +level=INFO msg="HTTP server shut down" +level=INFO msg="Removing PID file" path=karma.pid -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/112_flag_defaultAlertmanagers.txt b/cmd/karma/tests/testscript/112_flag_defaultAlertmanagers.txt index 256369d7e..4d2ebba4d 100644 --- a/cmd/karma/tests/testscript/112_flag_defaultAlertmanagers.txt +++ b/cmd/karma/tests/testscript/112_flag_defaultAlertmanagers.txt @@ -3,118 +3,118 @@ exec karma --log.config --silenceForm.defaultAlertmanagers=aaa --silenceForm.def cmp stderr stderr.txt -- stderr.txt -- -level=info msg="Version: dev" -level=info msg="Parsed configuration:" -level=info msg="authentication:" -level=info msg=" header:" -level=info msg=" name: \"\"" -level=info msg=" value_re: \"\"" -level=info msg=" group_name: \"\"" -level=info msg=" group_value_re: \"\"" -level=info msg=" group_value_separator: ' '" -level=info msg=" basicAuth:" -level=info msg=" users: []" -level=info msg="authorization:" -level=info msg=" groups: []" -level=info msg=" acl:" -level=info msg=" silences: \"\"" -level=info msg="alertmanager:" -level=info msg=" interval: 1m0s" -level=info msg=" servers: []" -level=info msg="alertAcknowledgement:" -level=info msg=" enabled: false" -level=info msg=" duration: 15m0s" -level=info msg=" author: karma" -level=info msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" -level=info msg="annotations:" -level=info msg=" default:" -level=info msg=" hidden: false" -level=info msg=" hidden: []" -level=info msg=" visible: []" -level=info msg=" keep: []" -level=info msg=" strip: []" -level=info msg=" order: []" -level=info msg=" actions: []" -level=info msg=" enableInsecureHTML: false" -level=info msg="custom:" -level=info msg=" css: \"\"" -level=info msg=" js: \"\"" -level=info msg="debug: false" -level=info msg="filters:" -level=info msg=" default: []" -level=info msg="grid:" -level=info msg=" sorting:" -level=info msg=" order: startsAt" -level=info msg=" reverse: true" -level=info msg=" label: alertname" -level=info msg=" customValues:" -level=info msg=" labels: {}" -level=info msg=" auto:" -level=info msg=" ignore: []" -level=info msg=" order: []" -level=info msg=" groupLimit: 40" -level=info msg="history:" -level=info msg=" enabled: true" -level=info msg=" workers: 30" -level=info msg=" timeout: 20s" -level=info msg=" rewrite: []" -level=info msg="karma:" -level=info msg=" name: karma" -level=info msg="labels:" -level=info msg=" order: []" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg=" valueOnly: []" -level=info msg=" valueOnly_re: []" -level=info msg=" color:" -level=info msg=" custom: {}" -level=info msg=" static: []" -level=info msg=" unique: []" -level=info msg="listen:" -level=info msg=" address: \"\"" -level=info msg=" timeout:" -level=info msg=" read: 10s" -level=info msg=" write: 20s" -level=info msg=" tls:" -level=info msg=" cert: \"\"" -level=info msg=" key: \"\"" -level=info msg=" port: 8080" -level=info msg=" prefix: /" -level=info msg=" cors:" -level=info msg=" allowedOrigins: []" -level=info msg="log:" -level=info msg=" level: info" -level=info msg=" format: text" -level=info msg=" config: true" -level=info msg=" requests: false" -level=info msg=" timestamp: false" -level=info msg="receivers:" -level=info msg=" keep: []" -level=info msg=" keep_re: []" -level=info msg=" strip: []" -level=info msg=" strip_re: []" -level=info msg="silences:" -level=info msg=" expired: 10m0s" -level=info msg=" comments:" -level=info msg=" linkDetect:" -level=info msg=" rules: []" -level=info msg="silenceForm:" -level=info msg=" strip:" -level=info msg=" labels: []" -level=info msg=" defaultAlertmanagers:" -level=info msg=" - aaa" -level=info msg=" - bbb" -level=info msg="ui:" -level=info msg=" refresh: 30s" -level=info msg=" hideFiltersWhenIdle: true" -level=info msg=" colorTitlebar: false" -level=info msg=" theme: auto" -level=info msg=" animations: true" -level=info msg=" minimalGroupWidth: 420" -level=info msg=" alertsPerGroup: 5" -level=info msg=" collapseGroups: collapsedOnMobile" -level=info msg=" multiGridLabel: \"\"" -level=info msg=" multiGridSortReverse: false" -level=info msg="Configuration is valid" +level=INFO msg="Version: dev" +level=INFO msg="Parsed configuration:" +level=INFO msg=authentication: +level=INFO msg=" header:" +level=INFO msg=" name: \"\"" +level=INFO msg=" value_re: \"\"" +level=INFO msg=" group_name: \"\"" +level=INFO msg=" group_value_re: \"\"" +level=INFO msg=" group_value_separator: ' '" +level=INFO msg=" basicAuth:" +level=INFO msg=" users: []" +level=INFO msg=authorization: +level=INFO msg=" groups: []" +level=INFO msg=" acl:" +level=INFO msg=" silences: \"\"" +level=INFO msg=alertmanager: +level=INFO msg=" interval: 1m0s" +level=INFO msg=" servers: []" +level=INFO msg=alertAcknowledgement: +level=INFO msg=" enabled: false" +level=INFO msg=" duration: 15m0s" +level=INFO msg=" author: karma" +level=INFO msg=" comment: ACK! This alert was acknowledged using karma on %NOW%" +level=INFO msg=annotations: +level=INFO msg=" default:" +level=INFO msg=" hidden: false" +level=INFO msg=" hidden: []" +level=INFO msg=" visible: []" +level=INFO msg=" keep: []" +level=INFO msg=" strip: []" +level=INFO msg=" order: []" +level=INFO msg=" actions: []" +level=INFO msg=" enableInsecureHTML: false" +level=INFO msg=custom: +level=INFO msg=" css: \"\"" +level=INFO msg=" js: \"\"" +level=INFO msg="debug: false" +level=INFO msg=filters: +level=INFO msg=" default: []" +level=INFO msg=grid: +level=INFO msg=" sorting:" +level=INFO msg=" order: startsAt" +level=INFO msg=" reverse: true" +level=INFO msg=" label: alertname" +level=INFO msg=" customValues:" +level=INFO msg=" labels: {}" +level=INFO msg=" auto:" +level=INFO msg=" ignore: []" +level=INFO msg=" order: []" +level=INFO msg=" groupLimit: 40" +level=INFO msg=history: +level=INFO msg=" enabled: true" +level=INFO msg=" workers: 30" +level=INFO msg=" timeout: 20s" +level=INFO msg=" rewrite: []" +level=INFO msg=karma: +level=INFO msg=" name: karma" +level=INFO msg=labels: +level=INFO msg=" order: []" +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=" valueOnly: []" +level=INFO msg=" valueOnly_re: []" +level=INFO msg=" color:" +level=INFO msg=" custom: {}" +level=INFO msg=" static: []" +level=INFO msg=" unique: []" +level=INFO msg=listen: +level=INFO msg=" address: \"\"" +level=INFO msg=" timeout:" +level=INFO msg=" read: 10s" +level=INFO msg=" write: 20s" +level=INFO msg=" tls:" +level=INFO msg=" cert: \"\"" +level=INFO msg=" key: \"\"" +level=INFO msg=" port: 8080" +level=INFO msg=" prefix: /" +level=INFO msg=" cors:" +level=INFO msg=" allowedOrigins: []" +level=INFO msg=log: +level=INFO msg=" level: info" +level=INFO msg=" format: text" +level=INFO msg=" config: true" +level=INFO msg=" requests: false" +level=INFO msg=" timestamp: false" +level=INFO msg=receivers: +level=INFO msg=" keep: []" +level=INFO msg=" keep_re: []" +level=INFO msg=" strip: []" +level=INFO msg=" strip_re: []" +level=INFO msg=silences: +level=INFO msg=" expired: 10m0s" +level=INFO msg=" comments:" +level=INFO msg=" linkDetect:" +level=INFO msg=" rules: []" +level=INFO msg=silenceForm: +level=INFO msg=" strip:" +level=INFO msg=" labels: []" +level=INFO msg=" defaultAlertmanagers:" +level=INFO msg=" - aaa" +level=INFO msg=" - bbb" +level=INFO msg=ui: +level=INFO msg=" refresh: 30s" +level=INFO msg=" hideFiltersWhenIdle: true" +level=INFO msg=" colorTitlebar: false" +level=INFO msg=" theme: auto" +level=INFO msg=" animations: true" +level=INFO msg=" minimalGroupWidth: 420" +level=INFO msg=" alertsPerGroup: 5" +level=INFO msg=" collapseGroups: collapsedOnMobile" +level=INFO msg=" multiGridLabel: \"\"" +level=INFO msg=" multiGridSortReverse: false" +level=INFO msg="Configuration is valid" diff --git a/cmd/karma/tests/testscript/113_receivers_keep_re_invalid.txt b/cmd/karma/tests/testscript/113_receivers_keep_re_invalid.txt index e2d5362cc..9e784458d 100644 --- a/cmd/karma/tests/testscript/113_receivers_keep_re_invalid.txt +++ b/cmd/karma/tests/testscript/113_receivers_keep_re_invalid.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="keep regex rule 'foo.++++' is invalid: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="keep regex rule 'foo.++++' is invalid: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/tests/testscript/114_receivers_strip_re_invalid.txt b/cmd/karma/tests/testscript/114_receivers_strip_re_invalid.txt index 05835e136..6edb32c81 100644 --- a/cmd/karma/tests/testscript/114_receivers_strip_re_invalid.txt +++ b/cmd/karma/tests/testscript/114_receivers_strip_re_invalid.txt @@ -3,7 +3,7 @@ cmp stderr stderr.txt -- stderr.txt -- -level=fatal msg="Execution failed" error="strip regex rule 'foo.++++' is invalid: error parsing regexp: invalid nested repetition operator: `++`" +level=ERROR msg="Execution failed" error="strip regex rule 'foo.++++' is invalid: error parsing regexp: invalid nested repetition operator: `++`" -- karma.yaml -- alertmanager: servers: diff --git a/cmd/karma/timer.go b/cmd/karma/timer.go index 334ae39a1..857a033a2 100644 --- a/cmd/karma/timer.go +++ b/cmd/karma/timer.go @@ -2,12 +2,11 @@ package main import ( "fmt" + "log/slog" "runtime" "sync" "github.com/prymitive/karma/internal/alertmanager" - - "github.com/rs/zerolog/log" ) const ( @@ -18,7 +17,7 @@ func pullFromAlertmanager() { // always flush cache once we're done defer apiCache.Purge() - log.Info().Msg("Pulling latest alerts and silences from Alertmanager") + slog.Info("Pulling latest alerts and silences from Alertmanager") upstreams := alertmanager.GetAlertmanagers() wg := sync.WaitGroup{} @@ -26,15 +25,16 @@ func pullFromAlertmanager() { for _, upstream := range upstreams { go func(am *alertmanager.Alertmanager) { - log.Info().Str("alertmanager", am.Name).Msg("Collecting alerts and silences") + slog.Info("Collecting alerts and silences", slog.String("alertmanager", am.Name)) for i := 1; i <= maxTries; i++ { err := am.Pull() if err != nil { - log.Error(). - Err(err). - Str("alertmanager", am.Name). - Str("try", fmt.Sprintf("%d/%d", i, maxTries)). - Msg("Collection failed") + slog.Error( + "Collection failed", + slog.Any("error", err), + slog.String("alertmanager", am.Name), + slog.String("try", fmt.Sprintf("%d/%d", i, maxTries)), + ) } else { break } @@ -45,7 +45,7 @@ func pullFromAlertmanager() { wg.Wait() - log.Info().Msg("Collection completed") + slog.Info("Collection completed") runtime.GC() } diff --git a/cmd/karma/views.go b/cmd/karma/views.go index 027e5efa7..b26833a90 100644 --- a/cmd/karma/views.go +++ b/cmd/karma/views.go @@ -4,6 +4,7 @@ import ( "encoding/base64" "encoding/hex" "fmt" + "log/slog" "net/http" "runtime" "slices" @@ -23,8 +24,6 @@ import ( "github.com/prymitive/karma/internal/models" sliceutils "github.com/prymitive/karma/internal/slices" "github.com/prymitive/karma/internal/transform" - - "github.com/rs/zerolog/log" ) func marshalJSON(v any) ([]byte, error) { @@ -208,7 +207,7 @@ func alerts(w http.ResponseWriter, r *http.Request) { gridLabel := request.GridLabel if gridLabel == "@auto" { gridLabel = autoGridLabel(filtered) - log.Debug().Str("label", gridLabel).Msg("Selected automatic grid label") + slog.Debug("Selected automatic grid label", slog.String("label", gridLabel)) } var matches int diff --git a/cmd/karma/views_test.go b/cmd/karma/views_test.go index a159af03f..45a9d2794 100644 --- a/cmd/karma/views_test.go +++ b/cmd/karma/views_test.go @@ -5,7 +5,9 @@ import ( "context" "encoding/json" "fmt" + "html/template" "io" + "log/slog" "net/http" "net/http/httptest" "os" @@ -22,15 +24,15 @@ import ( "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/mock" "github.com/prymitive/karma/internal/models" "github.com/prymitive/karma/internal/regex" + "github.com/prymitive/karma/ui" "github.com/go-chi/chi/v5" "github.com/google/go-cmp/cmp" "github.com/jarcoal/httpmock" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" "github.com/spf13/pflag" ) @@ -43,7 +45,7 @@ var cmpLabels = cmp.Comparer(func(x, y promlabels.Labels) bool { type setenvFunc func(key, val string) func mockConfig(setenv setenvFunc) { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) + log.SetLevel(slog.LevelError) setenv("ALERTMANAGER_URI", "http://localhost") setenv("LABELS_COLOR_UNIQUE", "alertname @receiver @alertmanager @cluster") @@ -51,14 +53,14 @@ func mockConfig(setenv setenvFunc) { config.SetupFlags(f) _, err := config.Config.Read(f) if err != nil { - log.Fatal().Err(err).Msg("Error") + slog.Error("Error", slog.Any("error", err)) } if !upstreamSetup { upstreamSetup = true err := setupUpstreams() if err != nil { - log.Fatal().Err(err).Msg("Error") + slog.Error("Error", slog.Any("error", err)) } } } @@ -66,12 +68,7 @@ func mockConfig(setenv setenvFunc) { func testRouter() *chi.Mux { router := chi.NewRouter() router.Use(proxyPathFixMiddleware) - - err := loadTemplates() - if err != nil { - panic(err) - } - + indexTemplate, _ = template.ParseFS(ui.StaticFiles, "dist/index.html") return router } @@ -1829,7 +1826,7 @@ func TestAuthentication(t *testing.T) { }, } - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) for _, testCase := range authTests { t.Run(testCase.name, func(t *testing.T) { config.Config.Authentication.Header.Name = testCase.headerName @@ -2028,7 +2025,7 @@ func TestHealthcheckAlerts(t *testing.T) { }, } - zerolog.SetGlobalLevel(zerolog.FatalLevel) + log.SetLevel(slog.LevelError) for i, testCase := range testCases { for _, version := range mock.ListAllMocks() { t.Run(fmt.Sprintf("%d/%s", i, version), func(t *testing.T) { @@ -2791,7 +2788,7 @@ func TestCounters(t *testing.T) { httpmock.Activate() defer httpmock.DeactivateAndReset() - zerolog.SetGlobalLevel(zerolog.ErrorLevel) + log.SetLevel(slog.LevelError) mockCache() version := mock.ListAllMocks()[0] @@ -2958,7 +2955,7 @@ func TestLabelSettings(t *testing.T) { httpmock.Activate() defer httpmock.DeactivateAndReset() - zerolog.SetGlobalLevel(zerolog.ErrorLevel) + log.SetLevel(slog.LevelError) mockCache() version := mock.ListAllMocks()[0] diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index a332445b0..35090039a 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -1137,7 +1137,7 @@ log: - `config` - if set to `true` karma will log used configuration on startup - `level` - log level to set for karma, possible values are `debug`, `info`, - `warning`, `error`, `fatal` and `panic`. + `warning` and `error`. - `format` - controls how log messages are formatted, possible values are `text` and `json`. If set to `json` each log will be a JSON object - `requests` - if set to `true` karma will log all requests diff --git a/go.mod b/go.mod index a73b1645e..c6007ee42 100644 --- a/go.mod +++ b/go.mod @@ -28,9 +28,7 @@ require ( github.com/prometheus/prometheus v0.310.0 github.com/prymitive/randomcolor v0.0.0-20210705210145-26c3401033a6 github.com/rogpeppe/go-internal v1.14.1 - github.com/rs/zerolog v1.34.0 github.com/spf13/pflag v1.0.10 - go.uber.org/automaxprocs v1.6.0 go.yaml.in/yaml/v3 v3.0.4 gopkg.in/go-playground/colors.v1 v1.2.0 ) @@ -41,8 +39,6 @@ require ( github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect - github.com/mattn/go-colorable v0.1.14 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect diff --git a/go.sum b/go.sum index 708255015..5125f6c1a 100644 --- a/go.sum +++ b/go.sum @@ -8,7 +8,6 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cnf/structhash v0.0.0-20250313080605-df4c6cc74a9a h1:Ohw57yVY2dBTt+gsC6aZdteyxwlxfbtgkFEMTEkwgSw= github.com/cnf/structhash v0.0.0-20250313080605-df4c6cc74a9a/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -25,7 +24,6 @@ github.com/go-json-experiment/json v0.0.0-20260214004413-d219187c3433 h1:vymEbVw github.com/go-json-experiment/json v0.0.0-20260214004413-d219187c3433/go.mod h1:tphK2c80bpPhMOI4v6bIc2xWywPfbqi1Z06+RcrMkDg= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -68,13 +66,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/maxatome/go-testdeep v1.14.0 h1:rRlLv1+kI8eOI3OaBXZwb3O7xY3exRzdW5QyX48g9wI= github.com/maxatome/go-testdeep v1.14.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= @@ -91,12 +82,9 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= @@ -111,9 +99,6 @@ github.com/prymitive/randomcolor v0.0.0-20210705210145-26c3401033a6 h1:zL1c7Tzs1 github.com/prymitive/randomcolor v0.0.0-20210705210145-26c3401033a6/go.mod h1:FnzxethsFNTR5+dT5nOGHEmV7DS7U6ml/kw2HFv5Q+8= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= -github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= -github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= @@ -123,8 +108,6 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= @@ -135,9 +118,6 @@ golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= diff --git a/internal/alertmanager/benchmark_test.go b/internal/alertmanager/benchmark_test.go index 71af1fe35..565d06395 100644 --- a/internal/alertmanager/benchmark_test.go +++ b/internal/alertmanager/benchmark_test.go @@ -1,6 +1,7 @@ package alertmanager_test import ( + "log/slog" "testing" "github.com/jarcoal/httpmock" @@ -8,10 +9,13 @@ import ( "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/mock" ) func BenchmarkDedupAlerts(b *testing.B) { + log.SetLevel(slog.LevelError) + version := mock.ListAllMocks()[0] mock.RegisterURL("http://localhost/metrics", version, "metrics.txt") mock.RegisterURL("http://localhost/api/v2/status", version, "api/v2/status.json") @@ -35,6 +39,8 @@ func BenchmarkDedupAlerts(b *testing.B) { } func BenchmarkDedupAutocomplete(b *testing.B) { + log.SetLevel(slog.LevelError) + version := mock.ListAllMocks()[0] mock.RegisterURL("http://localhost/metrics", version, "metrics.txt") mock.RegisterURL("http://localhost/api/v2/status", version, "api/v2/status.json") @@ -58,6 +64,8 @@ func BenchmarkDedupAutocomplete(b *testing.B) { } func BenchmarkDedupColors(b *testing.B) { + log.SetLevel(slog.LevelError) + b.Setenv("LABELS_COLOR_UNIQUE", "cluster instance @receiver") f := pflag.NewFlagSet(".", pflag.ExitOnError) config.SetupFlags(f) diff --git a/internal/alertmanager/dedup.go b/internal/alertmanager/dedup.go index 37fe9086d..365c23e00 100644 --- a/internal/alertmanager/dedup.go +++ b/internal/alertmanager/dedup.go @@ -1,6 +1,7 @@ package alertmanager import ( + "log/slog" "slices" "sort" "time" @@ -8,8 +9,6 @@ import ( "github.com/prymitive/karma/internal/config" "github.com/prymitive/karma/internal/models" "github.com/prymitive/karma/internal/transform" - - "github.com/rs/zerolog/log" ) // DedupAlerts will collect alert groups from all defined Alertmanager @@ -55,7 +54,7 @@ func DedupAlerts() []models.AlertGroup { for _, am := range upstreams { if !am.healthchecksVisible { if _, hc := am.IsHealthCheckAlert(&alert); hc != nil { - log.Debug().Str("fingerprint", alert.Fingerprint).Msg("Skipping healthcheck alert") + slog.Debug("Skipping healthcheck alert", slog.String("fingerprint", alert.Fingerprint)) keep = false break } diff --git a/internal/alertmanager/dedup_test.go b/internal/alertmanager/dedup_test.go index b9d2aec3d..cae87acd1 100644 --- a/internal/alertmanager/dedup_test.go +++ b/internal/alertmanager/dedup_test.go @@ -2,21 +2,22 @@ package alertmanager_test import ( "fmt" + "log/slog" "testing" "time" "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/config" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/mock" "github.com/jarcoal/httpmock" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" "github.com/spf13/pflag" ) func init() { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) + log.SetLevel(slog.LevelError) + httpmock.Activate() for _, version := range mock.ListAllMocks() { @@ -24,7 +25,7 @@ func init() { uri := fmt.Sprintf("http://%s.localhost", version) am, err := alertmanager.NewAlertmanager("cluster", name, uri, alertmanager.WithRequestTimeout(time.Second)) if err != nil { - log.Fatal().Err(err).Msg("Error") + panic(fmt.Sprintf("Error: %v", err)) } err = alertmanager.RegisterAlertmanager(am) if err != nil { @@ -180,7 +181,6 @@ func TestStripReceivers(t *testing.T) { } func TestClearData(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) httpmock.Activate() defer httpmock.DeactivateAndReset() diff --git a/internal/alertmanager/models.go b/internal/alertmanager/models.go index 88fdb1c5f..cdf00a4cc 100644 --- a/internal/alertmanager/models.go +++ b/internal/alertmanager/models.go @@ -2,6 +2,7 @@ package alertmanager import ( "fmt" + "log/slog" "maps" "net/http" "net/url" @@ -19,8 +20,6 @@ import ( "github.com/prymitive/karma/internal/transform" "github.com/prymitive/karma/internal/uri" "github.com/prymitive/karma/internal/verprobe" - - "github.com/rs/zerolog/log" ) const ( @@ -78,33 +77,23 @@ type Alertmanager struct { func (am *Alertmanager) probeVersion() string { url, err := uri.JoinURL(am.URI, "metrics") if err != nil { - log.Error(). - Err(err). - Str("uri", am.SanitizedURI()). - Msg("Failed to join url with /metrics path") + slog.Error("Failed to join url with /metrics path", slog.Any("error", err), slog.String("uri", am.SanitizedURI())) return "" } source, err := am.reader.Read(url, am.HTTPHeaders) if err != nil { - log.Error(). - Err(err). - Str("alertmanager", am.Name). - Str("uri", am.SanitizedURI()). - Msg("Request failed") + slog.Error("Request failed", slog.Any("error", err), slog.String("alertmanager", am.Name), slog.String("uri", am.SanitizedURI())) return "" } defer source.Close() version, err := verprobe.Detect(source) if err != nil { - log.Error().Err(err).Str("alertmanager", am.Name).Msg("Error while discovering version") + slog.Error("Error while discovering version", slog.Any("error", err), slog.String("alertmanager", am.Name)) return "" } - log.Info(). - Str("version", version). - Str("alertmanager", am.Name). - Msg("Upstream version") + slog.Info("Upstream version", slog.String("version", version), slog.String("alertmanager", am.Name)) return version } @@ -132,16 +121,14 @@ func (am *Alertmanager) pullSilences(version string) error { if err != nil { return err } - log.Info(). - Str("alertmanager", am.Name). - Int("silences", len(silences)). - Dur("duration", time.Since(start)). - Msg("Got silences") + slog.Info( + "Got silences", + slog.String("alertmanager", am.Name), + slog.Int("silences", len(silences)), + slog.Duration("duration", time.Since(start)), + ) - log.Info(). - Str("alertmanager", am.Name). - Int("silences", len(silences)). - Msg("Detecting ticket links in silences") + slog.Info("Detecting ticket links in silences", slog.String("alertmanager", am.Name), slog.Int("silences", len(silences))) silenceMap := make(map[string]models.Silence, len(silences)) for _, silence := range silences { silence.TicketID, silence.TicketURL = transform.DetectLinks(&silence) @@ -198,16 +185,14 @@ func (am *Alertmanager) pullAlerts(version string) error { if err != nil { return err } - log.Info(). - Str("alertmanager", am.Name). - Int("groups", len(groups)). - Dur("duration", time.Since((start))). - Msg("Collected alert groups") + slog.Info( + "Collected alert groups", + slog.String("alertmanager", am.Name), + slog.Int("groups", len(groups)), + slog.Duration("duration", time.Since(start)), + ) - log.Info(). - Str("alertmanager", am.Name). - Int("groups", len(groups)). - Msg("Deduplicating alert groups") + slog.Info("Deduplicating alert groups", slog.String("alertmanager", am.Name), slog.Int("groups", len(groups))) uniqueGroups := map[string]models.AlertGroup{} uniqueAlerts := map[string]map[string]models.Alert{} knownLabelsMap := map[string]struct{}{} @@ -246,10 +231,7 @@ func (am *Alertmanager) pullAlerts(version string) error { } expiredSilences := am.ExpiredSilences() - log.Info(). - Str("alertmanager", am.Name). - Int("groups", len(uniqueGroups)). - Msg("Processing deduplicated alert groups") + slog.Info("Processing deduplicated alert groups", slog.String("alertmanager", am.Name), slog.Int("groups", len(uniqueGroups))) for _, ag := range uniqueGroups { alerts := make(models.AlertList, 0, len(uniqueAlerts[ag.ID])) labelPairs := make([][]labels.Label, 0, len(uniqueAlerts[ag.ID])) @@ -327,10 +309,7 @@ func (am *Alertmanager) pullAlerts(version string) error { dedupedGroups = append(dedupedGroups, ag) } - log.Info(). - Str("alertmanager", am.Name). - Int("hints", len(am.autocompleteMap)). - Msg("Merging autocomplete hints") + slog.Info("Merging autocomplete hints", slog.String("alertmanager", am.Name), slog.Int("hints", len(am.autocompleteMap))) autocomplete := make([]models.Autocomplete, 0, len(am.autocompleteMap)) for _, hint := range am.autocompleteMap { autocomplete = append(autocomplete, hint) @@ -361,7 +340,7 @@ func (am *Alertmanager) Pull() error { am.lastVersionProbe = version am.lock.Unlock() - log.Debug().Str("alertmanager", am.Name).Str("version", version).Msg("Probed alertmanager version") + slog.Debug("Probed alertmanager version", slog.String("alertmanager", am.Name), slog.String("version", version)) // verify that URI is correct _, err := url.Parse(am.URI) @@ -543,10 +522,7 @@ func (am *Alertmanager) IsHealthCheckAlert(alert *models.Alert) (string, *Health negativeMatch := false for _, hcFilter := range hc.filters { if hcFilter.Match(alert, 0) { - log.Debug(). - Str("alertmanager", am.Name). - Str("healthcheck", name). - Msg("Healthcheck alert matched") + slog.Debug("Healthcheck alert matched", slog.String("alertmanager", am.Name), slog.String("healthcheck", name)) positiveMatch = true } else { negativeMatch = true diff --git a/internal/alertmanager/models_test.go b/internal/alertmanager/models_test.go index 9bbfe69ea..2b5ca3168 100644 --- a/internal/alertmanager/models_test.go +++ b/internal/alertmanager/models_test.go @@ -8,7 +8,6 @@ import ( "github.com/jarcoal/httpmock" "github.com/prometheus/prometheus/model/labels" - "github.com/rs/zerolog" "github.com/prymitive/karma/internal/config" internalModels "github.com/prymitive/karma/internal/models" @@ -218,7 +217,6 @@ func TestAlertmanagerSanitizedURI(t *testing.T) { } func TestAlertmanagerPullWithInvalidURI(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.PanicLevel) am, _ := NewAlertmanager("cluster", "test", "%gh&%ij") err := am.Pull() if err == nil { @@ -227,7 +225,6 @@ func TestAlertmanagerPullWithInvalidURI(t *testing.T) { } func TestAlertmanagerPullAlertsWithInvalidVersion(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.PanicLevel) am, _ := NewAlertmanager("cluster", "test", "http://localhost") err := am.pullAlerts("0.0.1") if err == nil { @@ -236,7 +233,6 @@ func TestAlertmanagerPullAlertsWithInvalidVersion(t *testing.T) { } func TestAlertmanagerPullSilencesWithInvalidVersion(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.PanicLevel) am, _ := NewAlertmanager("cluster", "test", "http://localhost") err := am.pullSilences("0.0.1") if err == nil { @@ -246,9 +242,6 @@ func TestAlertmanagerPullSilencesWithInvalidVersion(t *testing.T) { func TestProbeVersionHTTPError(t *testing.T) { // verifies that probeVersion returns empty string when the metrics endpoint is unreachable - zerolog.SetGlobalLevel(zerolog.PanicLevel) - defer zerolog.SetGlobalLevel(zerolog.ErrorLevel) - uri := "http://probe-http-error.localhost" httpmock.RegisterResponder("GET", uri+"/metrics", httpmock.NewErrorResponder(errors.New("connection refused"))) @@ -265,9 +258,6 @@ func TestProbeVersionHTTPError(t *testing.T) { func TestProbeVersionInvalidMetrics(t *testing.T) { // verifies that probeVersion returns empty string when metrics response contains no version info - zerolog.SetGlobalLevel(zerolog.PanicLevel) - defer zerolog.SetGlobalLevel(zerolog.ErrorLevel) - uri := "http://probe-invalid-metrics.localhost" httpmock.RegisterResponder("GET", uri+"/metrics", httpmock.NewStringResponder(200, "some_random_metric 1\n")) diff --git a/internal/alertmanager/tls.go b/internal/alertmanager/tls.go index 1726bb2a0..7c45e7648 100644 --- a/internal/alertmanager/tls.go +++ b/internal/alertmanager/tls.go @@ -3,16 +3,13 @@ package alertmanager import ( "crypto/tls" "crypto/x509" + "log/slog" "net/http" "os" - - "github.com/rs/zerolog/log" ) func configureTLSRootCAs(tlsConfig *tls.Config, caPath string) error { - log.Debug(). - Str("path", caPath). - Msg("Loading TLS CA cert") + slog.Debug("Loading TLS CA cert", slog.String("path", caPath)) caCert, err := os.ReadFile(caPath) if err != nil { return err @@ -24,13 +21,10 @@ func configureTLSRootCAs(tlsConfig *tls.Config, caPath string) error { } func configureTLSClientCert(tlsConfig *tls.Config, certPath, keyPath string) error { - log.Debug(). - Str("cert", certPath). - Str("key", keyPath). - Msg("Loading TLS cert and key") + slog.Debug("Loading TLS cert and key", slog.String("cert", certPath), slog.String("key", keyPath)) cert, err := tls.LoadX509KeyPair(certPath, keyPath) if err != nil { - log.Debug().Err(err).Msg("Failed to load TLS cert and key") + slog.Debug("Failed to load TLS cert and key", slog.Any("error", err)) return err } tlsConfig.Certificates = []tls.Certificate{cert} diff --git a/internal/alertmanager/upstream.go b/internal/alertmanager/upstream.go index d6d686f5f..44d24cdfd 100644 --- a/internal/alertmanager/upstream.go +++ b/internal/alertmanager/upstream.go @@ -2,6 +2,7 @@ package alertmanager import ( "fmt" + "log/slog" "net/http" "net/url" "sort" @@ -11,8 +12,6 @@ import ( "github.com/prymitive/karma/internal/filters" "github.com/prymitive/karma/internal/models" "github.com/prymitive/karma/internal/uri" - - "github.com/rs/zerolog/log" ) // Option allows to pass functional options to NewAlertmanager() @@ -77,13 +76,14 @@ func RegisterAlertmanager(am *Alertmanager) error { upstreams[am.Name] = am // am.Name, uri.SanitizeURI(am.URI), am.ProxyRequests, am.ReadOnly - log.Info(). - Str("name", am.Name). - Str("cluster", am.Cluster). - Str("uri", uri.SanitizeURI(am.URI)). - Bool("proxy", am.ProxyRequests). - Bool("readonly", am.ReadOnly). - Msg("Configured Alertmanager source") + slog.Info( + "Configured Alertmanager source", + slog.String("name", am.Name), + slog.String("cluster", am.Cluster), + slog.String("uri", uri.SanitizeURI(am.URI)), + slog.Bool("proxy", am.ProxyRequests), + slog.Bool("readonly", am.ReadOnly), + ) return nil } diff --git a/internal/config/config.go b/internal/config/config.go index ff4f9ce68..85f96a13c 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -5,6 +5,7 @@ import ( "bytes" "errors" "fmt" + "log/slog" "os" "regexp" "slices" @@ -21,7 +22,6 @@ import ( "github.com/knadh/koanf/providers/file" "github.com/knadh/koanf/providers/posflag" "github.com/knadh/koanf/v2" - "github.com/rs/zerolog/log" "github.com/spf13/pflag" yaml "go.yaml.in/yaml/v3" @@ -119,7 +119,7 @@ func SetupFlags(f *pflag.FlagSet) { f.Bool("log.config", false, "Log used configuration to log on startup") f.String("log.level", "info", - "Log level, one of: debug, info, warning, error, fatal and panic") + "Log level, one of: debug, info, warning, error") f.String("log.format", "text", "Log format, one of: text, json") f.Bool("log.requests", false, "Enable request logging") @@ -537,9 +537,9 @@ func (config *configSchema) LogValues() { enc.SetIndent(2) _ = enc.Encode(cfg) - log.Info().Msg("Parsed configuration:") + slog.Info("Parsed configuration:") scanner := bufio.NewScanner(&buf) for scanner.Scan() { - log.Info().Msg(scanner.Text()) + slog.Info(scanner.Text()) } } diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 15ec08f10..1c9fa38ae 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -8,7 +8,6 @@ import ( "time" "github.com/google/go-cmp/cmp" - "github.com/rs/zerolog" "github.com/spf13/pflag" "github.com/prymitive/karma/internal/uri" @@ -199,7 +198,6 @@ func mockConfigRead() (string, error) { } func TestReadConfig(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) t.Setenv("ALERTMANAGER_INTERVAL", "1s") t.Setenv("ALERTMANAGER_URI", "http://localhost") t.Setenv("ALERTMANAGER_EXTERNAL_URI", "http://example.com") @@ -224,7 +222,6 @@ func TestReadConfig(t *testing.T) { } func TestReadSimpleConfig(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) t.Setenv("ALERTMANAGER_URI", "http://localhost") t.Setenv("ALERTMANAGER_EXTERNAL_URI", "http://localhost:9090") t.Setenv("ALERTMANAGER_NAME", "single") @@ -382,7 +379,6 @@ func TestInvalidStripRegex(t *testing.T) { } func TestDefaultConfig(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) _, _ = mockConfigRead() expectedConfig := configSchema{} diff --git a/internal/filters/autocomplete_test.go b/internal/filters/autocomplete_test.go index 72487a1d3..a7e923fcf 100644 --- a/internal/filters/autocomplete_test.go +++ b/internal/filters/autocomplete_test.go @@ -2,6 +2,7 @@ package filters_test import ( "fmt" + "log/slog" "sort" "strconv" "testing" @@ -10,6 +11,7 @@ import ( "github.com/prometheus/prometheus/model/labels" "github.com/prymitive/karma/internal/filters" + "github.com/prymitive/karma/internal/log" "github.com/prymitive/karma/internal/models" ) @@ -155,6 +157,8 @@ func TestBuildAutocomplete(t *testing.T) { } func BenchmarkAutocomplete(b *testing.B) { + log.SetLevel(slog.LevelError) + const n = 10000 alerts := make([]models.Alert, 0, n) labelPairs := make([][]labels.Label, 0, n) diff --git a/internal/filters/filter_fuzzy.go b/internal/filters/filter_fuzzy.go index add8fa7b2..e8f285a31 100644 --- a/internal/filters/filter_fuzzy.go +++ b/internal/filters/filter_fuzzy.go @@ -10,8 +10,8 @@ import ( ) type fuzzyFilter struct { - filterBase re *regexp.Regexp + filterBase } func (filter *fuzzyFilter) Value() string { diff --git a/internal/filters/filter_test.go b/internal/filters/filter_test.go index e2d0f17e5..2867d4f75 100644 --- a/internal/filters/filter_test.go +++ b/internal/filters/filter_test.go @@ -8,7 +8,6 @@ import ( "time" "github.com/prometheus/prometheus/model/labels" - "github.com/rs/zerolog" "github.com/prymitive/karma/internal/alertmanager" "github.com/prymitive/karma/internal/filters" @@ -1057,8 +1056,6 @@ var tests = []filterTest{ } func TestFilters(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.ErrorLevel) - am, err := alertmanager.NewAlertmanager("HA", "test", "http://localhost", alertmanager.WithRequestTimeout(time.Second)) if err != nil { t.Error(err) diff --git a/internal/filters/matcher.go b/internal/filters/matcher.go index 68ec3c171..83ee675f7 100644 --- a/internal/filters/matcher.go +++ b/internal/filters/matcher.go @@ -8,8 +8,8 @@ import ( // Matcher holds the comparison operator and its implementation. type Matcher struct { - Operator string Compare func(a, b string) bool + Operator string } func compareEqual(a, b string) bool { return a == b } diff --git a/internal/log/log.go b/internal/log/log.go new file mode 100644 index 000000000..ed4d4eead --- /dev/null +++ b/internal/log/log.go @@ -0,0 +1,62 @@ +package log + +import ( + "fmt" + "log/slog" + "os" +) + +var Level = new(slog.LevelVar) + +func init() { + Level.Set(slog.LevelInfo) +} + +func SetLevel(level slog.Level) { + Level.Set(level) +} + +func ParseLevel(value string) (slog.Level, error) { + switch value { + case "debug": + return slog.LevelDebug, nil + case "info": + return slog.LevelInfo, nil + case "warning": + return slog.LevelWarn, nil + case "error": + return slog.LevelError, nil + default: + return slog.LevelInfo, fmt.Errorf("unknown log level '%s'", value) + } +} + +func SetupLogger(format string, timestamps bool) error { + handler, err := buildHandler(format, timestamps) + if err != nil { + return err + } + slog.SetDefault(slog.New(handler)) + return nil +} + +func buildHandler(format string, timestamps bool) (slog.Handler, error) { + opts := &slog.HandlerOptions{Level: Level} + if !timestamps { + opts.ReplaceAttr = func(_ []string, attr slog.Attr) slog.Attr { + if attr.Key == slog.TimeKey { + return slog.Attr{} + } + return attr + } + } + + switch format { + case "text": + return slog.NewTextHandler(os.Stderr, opts), nil + case "json": + return slog.NewJSONHandler(os.Stderr, opts), nil + default: + return nil, fmt.Errorf("unknown log format '%s'", format) + } +} diff --git a/internal/log/log_test.go b/internal/log/log_test.go new file mode 100644 index 000000000..874521b8f --- /dev/null +++ b/internal/log/log_test.go @@ -0,0 +1,80 @@ +package log + +import ( + "log/slog" + "testing" +) + +func TestParseLevel(t *testing.T) { + testCases := []struct { + input string + expected slog.Level + hasError bool + }{ + {input: "debug", expected: slog.LevelDebug, hasError: false}, + {input: "info", expected: slog.LevelInfo, hasError: false}, + {input: "warning", expected: slog.LevelWarn, hasError: false}, + {input: "error", expected: slog.LevelError, hasError: false}, + {input: "unknown", expected: slog.LevelInfo, hasError: true}, + {input: "", expected: slog.LevelInfo, hasError: true}, + } + + for _, tc := range testCases { + t.Run(tc.input, func(t *testing.T) { + level, err := ParseLevel(tc.input) + if tc.hasError && err == nil { + t.Errorf("ParseLevel(%q) expected error, got nil", tc.input) + } + if !tc.hasError && err != nil { + t.Errorf("ParseLevel(%q) unexpected error: %v", tc.input, err) + } + if level != tc.expected { + t.Errorf("ParseLevel(%q) = %v, want %v", tc.input, level, tc.expected) + } + }) + } +} + +func TestSetLevel(t *testing.T) { + testCases := []slog.Level{ + slog.LevelDebug, + slog.LevelInfo, + slog.LevelWarn, + slog.LevelError, + } + + for _, level := range testCases { + t.Run(level.String(), func(t *testing.T) { + SetLevel(level) + if Level.Level() != level { + t.Errorf("SetLevel(%v) resulted in Level=%v", level, Level.Level()) + } + }) + } +} + +func TestSetupLogger(t *testing.T) { + testCases := []struct { + format string + timestamps bool + hasError bool + }{ + {format: "text", timestamps: false, hasError: false}, + {format: "text", timestamps: true, hasError: false}, + {format: "json", timestamps: false, hasError: false}, + {format: "json", timestamps: true, hasError: false}, + {format: "invalid", timestamps: false, hasError: true}, + } + + for _, tc := range testCases { + t.Run(tc.format, func(t *testing.T) { + err := SetupLogger(tc.format, tc.timestamps) + if tc.hasError && err == nil { + t.Errorf("SetupLogger(%q, %v) expected error, got nil", tc.format, tc.timestamps) + } + if !tc.hasError && err != nil { + t.Errorf("SetupLogger(%q, %v) unexpected error: %v", tc.format, tc.timestamps, err) + } + }) + } +} diff --git a/internal/transform/colors.go b/internal/transform/colors.go index aa7ae38f5..525e245b4 100644 --- a/internal/transform/colors.go +++ b/internal/transform/colors.go @@ -4,6 +4,7 @@ import ( "crypto/sha1" "image/color" "io" + "log/slog" "math/rand" "slices" @@ -11,7 +12,6 @@ import ( "github.com/prymitive/karma/internal/models" "github.com/prymitive/randomcolor" - "github.com/rs/zerolog/log" plcolors "gopkg.in/go-playground/colors.v1" ) @@ -39,11 +39,12 @@ func rgbToBrightness(r, g, b uint8) int32 { func parseCustomColor(colorStore models.LabelsColorMap, key, val, customColor string) { color, err := plcolors.Parse(customColor) if err != nil { - log.Warn(). - Err(err). - Str("key", key). - Str("value", val). - Msg("Failed to parse custom color") + slog.Warn( + "Failed to parse custom color", + slog.Any("error", err), + slog.String("key", key), + slog.String("value", val), + ) return } rgb := color.ToRGB() diff --git a/internal/uri/http.go b/internal/uri/http.go index a311625ab..55910920e 100644 --- a/internal/uri/http.go +++ b/internal/uri/http.go @@ -3,10 +3,10 @@ package uri import ( "fmt" "io" + "log/slog" "net/http" "github.com/klauspost/compress/gzip" - "github.com/rs/zerolog/log" ) // HTTPURIReader can read data from http:// and https:// URIs @@ -16,10 +16,7 @@ type HTTPURIReader struct { func (r *HTTPURIReader) Read(uri string, headers map[string]string) (io.ReadCloser, error) { suri := SanitizeURI(uri) - log.Info(). - Str("uri", suri). - Dur("timeout", r.client.Timeout). - Msg("GET request") + slog.Info("GET request", slog.String("uri", suri), slog.Duration("timeout", r.client.Timeout)) request, err := http.NewRequest("GET", uri, nil) if err != nil { diff --git a/internal/uri/uri_test.go b/internal/uri/uri_test.go index e5487d9c4..461a3c41a 100644 --- a/internal/uri/uri_test.go +++ b/internal/uri/uri_test.go @@ -12,7 +12,6 @@ import ( "time" "github.com/klauspost/compress/gzip" - "github.com/rs/zerolog" "github.com/prymitive/karma/internal/uri" ) @@ -110,7 +109,6 @@ func readAll(source io.ReadCloser) (int64, error) { } func TestHTTPReader(t *testing.T) { - zerolog.SetGlobalLevel(zerolog.FatalLevel) for _, testCase := range httpTransportTests { t.Run(testCase.name, func(t *testing.T) { handler := func(w http.ResponseWriter, _ *http.Request) { diff --git a/scripts/test-main.sh b/scripts/test-main.sh index c6763fd3c..5b80b885d 100755 --- a/scripts/test-main.sh +++ b/scripts/test-main.sh @@ -23,7 +23,7 @@ ALERTMANAGER_URI=http://localhost \ ALERTMANAGER_INTERVAL=1s \ LISTEN_ADDRESS=127.0.0.1 \ LISTEN_PORT=0 \ -LOG_LEVEL=fatal \ +LOG_LEVEL=error \ LOG_CONFIG=false \ ./karma.test \ -test.run '^TestRunMain$' \