mirror of
https://github.com/hanzoai/traces.git
synced 2026-10-30 18:20:41 +00:00
* [Generator] Add DRAIN span_name sanitizer * Fix linter * Fix formatting * Update default manifest * Fix build error in update-fixtures * Remove bad test * Remove misleading comment * Add per-tenant override for drain mode * Do a machines job * Address PR feedback * Address PR review: rename drain_mode config and improve sanitizer - Rename `drain_mode` to `span_name_sanitization` across all config, legacy config, interfaces, and overrides for better user-facing clarity - Add explicit default value "disabled" in RegisterFlagsAndApplyDefaults - Add ValidateSpanNameSanitization function in validation/fields.go - Rename metrics to remove DRAIN reference: `drain_spans_compacted_total` -> `spans_sanitized_total` `post_drain_demand_estimate` -> `post_sanitization_demand_estimate` - Pass configured staleDuration to NewDrainSanitizer instead of hardcoded 15min, consistent with other registry components - Extract "span_name" magic string to labelSpanName constant - Update all tests with new names and signatures * Update manifest * Use empty string as disabled * Update CHANGELOG.md Co-authored-by: Suraj Nath <[email protected]> * Update manifest --------- Co-authored-by: Suraj Nath <[email protected]>
76 lines
2.8 KiB
Go
76 lines
2.8 KiB
Go
package drain
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
|
)
|
|
|
|
const (
|
|
TooFewTokens = "too_few_tokens"
|
|
TooManyTokens = "too_many_tokens"
|
|
)
|
|
|
|
type metrics struct {
|
|
PatternsEvictedTotal *prometheus.CounterVec
|
|
PatternsExpiredTotal *prometheus.CounterVec
|
|
PatternsDetectedTotal *prometheus.CounterVec
|
|
LinesSkipped *prometheus.CounterVec
|
|
TokensPerLine *prometheus.HistogramVec
|
|
}
|
|
|
|
func newMetrics(reg prometheus.Registerer) *metrics {
|
|
return &metrics{
|
|
PatternsEvictedTotal: promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
|
|
Namespace: "tempo",
|
|
Name: "metrics_generator_registry_drain_patterns_evicted_total",
|
|
Help: "The total amount of patterns evicted per tenant",
|
|
}, []string{"tenant"}),
|
|
PatternsExpiredTotal: promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
|
|
Namespace: "tempo",
|
|
Name: "metrics_generator_registry_drain_patterns_expired_total",
|
|
Help: "The total amount of patterns expired per tenant",
|
|
}, []string{"tenant"}),
|
|
PatternsDetectedTotal: promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
|
|
Namespace: "tempo",
|
|
Name: "metrics_generator_registry_drain_patterns_detected_total",
|
|
Help: "The total amount of patterns detected per tenant",
|
|
}, []string{"tenant"}),
|
|
LinesSkipped: promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
|
|
Namespace: "tempo",
|
|
Name: "metrics_generator_registry_drain_lines_skipped_total",
|
|
Help: "The total amount of lines skipped per tenant",
|
|
}, []string{"reason", "tenant"}),
|
|
TokensPerLine: promauto.With(reg).NewHistogramVec(prometheus.HistogramOpts{
|
|
Namespace: "tempo",
|
|
Name: "metrics_generator_registry_drain_tokens_per_line",
|
|
Help: "The number of tokens per line",
|
|
}, []string{"tenant"}),
|
|
}
|
|
}
|
|
|
|
type tenantMetrics struct {
|
|
PatternsEvictedTotal prometheus.Counter
|
|
PatternsExpiredTotal prometheus.Counter
|
|
PatternsDetectedTotal prometheus.Counter
|
|
LinesSkippedTooManyTokens prometheus.Counter
|
|
LinesSkippedTooFewTokens prometheus.Counter
|
|
TokensPerLine prometheus.Observer
|
|
}
|
|
|
|
func (m *metrics) forTenant(tenant string) *tenantMetrics {
|
|
return &tenantMetrics{
|
|
PatternsEvictedTotal: m.PatternsEvictedTotal.WithLabelValues(tenant),
|
|
PatternsExpiredTotal: m.PatternsExpiredTotal.WithLabelValues(tenant),
|
|
PatternsDetectedTotal: m.PatternsDetectedTotal.WithLabelValues(tenant),
|
|
LinesSkippedTooManyTokens: m.LinesSkipped.WithLabelValues(TooManyTokens, tenant),
|
|
LinesSkippedTooFewTokens: m.LinesSkipped.WithLabelValues(TooFewTokens, tenant),
|
|
TokensPerLine: m.TokensPerLine.WithLabelValues(tenant),
|
|
}
|
|
}
|
|
|
|
var globalMetrics = newMetrics(prometheus.DefaultRegisterer)
|
|
|
|
func metricsForTenant(tenant string) *tenantMetrics {
|
|
return globalMetrics.forTenant(tenant)
|
|
}
|