diff --git a/docs/en/02-configuration.md b/docs/en/02-configuration.md index b224680..7d3eda6 100644 --- a/docs/en/02-configuration.md +++ b/docs/en/02-configuration.md @@ -530,6 +530,10 @@ Config for `/errorgroups` API handlers. + **`release`** *`[]string`* *`default=[]`* `log_tags` keys for `release` column. + + + **`env`** *`[]string`* *`default=[]`* + + `log_tags` keys for `env` column. + **`query_filter`** *`map[string]string`* *`optional`* diff --git a/docs/ru/02-configuration.md b/docs/ru/02-configuration.md index c87b942..2303d5f 100644 --- a/docs/ru/02-configuration.md +++ b/docs/ru/02-configuration.md @@ -530,6 +530,10 @@ handlers: + **`release`** *`[]string`* *`default=[]`* Ключи `log_tags` для столбца `release`. + + + **`env`** *`[]string`* *`default=[]`* + + Ключи `log_tags` для столбца `env`. + **`query_filter`** *`map[string]string`* *`optional`* diff --git a/internal/app/config/config.go b/internal/app/config/config.go index 8cc477e..4e5322a 100644 --- a/internal/app/config/config.go +++ b/internal/app/config/config.go @@ -232,6 +232,7 @@ type SeqAPI struct { type LogTagsMapping struct { Release []string `yaml:"release"` + Env []string `yaml:"env"` } type ErrorGroups struct { diff --git a/internal/pkg/repository_ch/repository.go b/internal/pkg/repository_ch/repository.go index 15baedd..65a2d67 100644 --- a/internal/pkg/repository_ch/repository.go +++ b/internal/pkg/repository_ch/repository.go @@ -368,7 +368,7 @@ func (r *repository) GetErrorReleases( OrderBy("release") for col, val := range r.queryFilter { - q = q.Where(sq.Eq{col: val}).GroupBy(col) + q = q.Where(sq.Eq{col: val}) } if req.Env != nil && *req.Env != "" { @@ -410,7 +410,7 @@ func (r *repository) GetServices( OrderBy("service") for col, val := range r.queryFilter { - q = q.Where(sq.Eq{col: val}).GroupBy(col) + q = q.Where(sq.Eq{col: val}) } if req.Env != nil && *req.Env != "" { @@ -429,7 +429,7 @@ func (r *repository) GetServices( rows, err := r.conn.Query(ctx, metricLabels, query, args...) if err != nil { incErrorMetric(err, metricLabels) - return nil, fmt.Errorf("failed to get releases: %w", err) + return nil, fmt.Errorf("failed to get services: %w", err) } services := make([]string, 0) diff --git a/internal/pkg/service/errorgroups/service.go b/internal/pkg/service/errorgroups/service.go index ce7b7e0..6a9752d 100644 --- a/internal/pkg/service/errorgroups/service.go +++ b/internal/pkg/service/errorgroups/service.go @@ -144,13 +144,18 @@ func (s *Service) GetDetails( ByRelease: calcDistribution(counts.ByRelease), } - // remove tags if they are not included in request - if req.Release == nil || *req.Release == "" { - for _, r := range s.logTagsMapping.Release { - delete(details.LogTags, r) + clearLogTags := func(filter *string, mapping []string) { + if filter == nil || *filter == "" { + for _, v := range mapping { + delete(details.LogTags, v) + } } } + // remove tags if they are not included in request + clearLogTags(req.Release, s.logTagsMapping.Release) + clearLogTags(req.Env, s.logTagsMapping.Env) + return details, nil }