Skip to content
This repository was archived by the owner on Jul 28, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@

- [ENHANCEMENT] Updated mongodb_exporter to v0.20.7 (@rfratto)

- [ENHANCEMENT] Upgrade OTel to v0.36 (@mapno)
- [ENHANCEMENT] Updated OTel to v0.36 (@mapno)

- [ENHANCEMENT] Updated statsd_exporter to v0.22.2 (@mattdurham)

- [BUGFIX] Sanitize autologged Loki labels by replacing invalid characters with underscores (@mapno)

Expand Down
5 changes: 1 addition & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,7 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersi
replace go.opentelemetry.io/collector => github.com/grafana/opentelemetry-collector v0.4.1-0.20211008102704-a5d23001cb71

// Pin prometheus dependencies
replace (
github.com/prometheus/common => github.com/prometheus/common v0.23.0
github.com/prometheus/statsd_exporter => github.com/prometheus/statsd_exporter v0.18.1-0.20201124082027-8b2b4c1a2b49
)
replace github.com/prometheus/common => github.com/prometheus/common v0.23.0

// Jaeger v1.16.0 can't be run with go@1.16 (https://github.com/jaegertracing/jaeger/issues/3268)
// Problem was fixed in https://github.com/jaegertracing/jaeger/issues/3268
Expand Down
5 changes: 3 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1784,8 +1784,9 @@ github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.6.1-0.20210313121648-b565fefb1664 h1:iPfnlmqQag8dZBuhfBlGOWunH3dg/LmHObW/aC283hA=
github.com/prometheus/procfs v0.6.1-0.20210313121648-b565fefb1664/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/statsd_exporter v0.18.1-0.20201124082027-8b2b4c1a2b49 h1:09eKR7yabKQRcx0pUHQrf2eXika/0VTPknOsbr4nXvg=
github.com/prometheus/statsd_exporter v0.18.1-0.20201124082027-8b2b4c1a2b49/go.mod h1:YL3FWCG8JBBtaUSxAg4Gz2ZYu22bS84XM89ZQXXTWmQ=
github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ=
github.com/prometheus/statsd_exporter v0.22.2 h1:mZkkLY25lWw4JmYsvO43MaKcTKshRE6UUC/nkdLgD9I=
github.com/prometheus/statsd_exporter v0.22.2/go.mod h1:N4Z1+iSqc9rnxlT1N8Qn3l65Vzb5t4Uq0jpg8nxyhio=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/rafaeljusto/redigomock v0.0.0-20190202135759-257e089e14a1/go.mod h1:JaY6n2sDr+z2WTsXkOmNRUfDy6FN0L6Nk7x06ndm4tY=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
Expand Down
29 changes: 22 additions & 7 deletions pkg/integrations/statsd_exporter/statsd_exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import (
"strconv"
"time"

"github.com/prometheus/statsd_exporter/pkg/mappercache/randomreplacement"

"github.com/prometheus/statsd_exporter/pkg/mappercache/lru"

"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"github.com/grafana/agent/pkg/integrations"
Expand Down Expand Up @@ -113,28 +117,39 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) {
return nil, fmt.Errorf("failed to create metrics for network listeners: %w", err)
}

cacheOption := mapper.WithCacheType(c.CacheType)

if c.ListenUDP == "" && c.ListenTCP == "" && c.ListenUnixgram == "" {
return nil, fmt.Errorf("at least one of UDP/TCP/Unixgram listeners must be used")
}
statsdMapper := &mapper.MetricMapper{MappingsCount: m.MappingsCount}

mapper := &mapper.MetricMapper{MappingsCount: m.MappingsCount}
if c.MappingConfig != nil {
cfgBytes, err := yaml.Marshal(c.MappingConfig)
if err != nil {
return nil, fmt.Errorf("failed to serialize mapping config: %w", err)
}

err = mapper.InitFromYAMLString(string(cfgBytes), c.CacheSize, cacheOption)
err = statsdMapper.InitFromYAMLString(string(cfgBytes))
if err != nil {
return nil, fmt.Errorf("failed to load mapping config: %w", err)
}
} else {
mapper.InitCache(c.CacheSize, cacheOption)
}
var cache mapper.MetricMapperCache
if c.CacheType == "lru" {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Switch statement maybe?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tested it in the integrations environment ;)

cache, err = lru.NewMetricMapperLRUCache(reg, c.CacheSize)
if err != nil {
return nil, err
}
} else if c.CacheType == "random" {
cache, err = randomreplacement.NewMetricMapperRRCache(reg, c.CacheSize)
if err != nil {
return nil, err
}
}
if cache != nil {
statsdMapper.UseCache(cache)
}

e := exporter.NewExporter(reg, mapper, log, m.EventsActions, m.EventsUnmapped, m.ErrorEventStats, m.EventStats, m.ConflictingEventStats, m.MetricsCount)
e := exporter.NewExporter(reg, statsdMapper, log, m.EventsActions, m.EventsUnmapped, m.ErrorEventStats, m.EventStats, m.ConflictingEventStats, m.MetricsCount)

if err := reg.Register(version.NewCollector("statsd_exporter")); err != nil {
return nil, fmt.Errorf("couldn't register version metrics: %w", err)
Expand Down