mirror of
https://github.com/prometheus/statsd_exporter.git
synced 2024-11-26 09:11:01 +00:00
Language fixes in README, reduce map lookups in saveLabelValues.
Signed-off-by: Ivan Mikheykin <ivan.mikheykin@flant.com>
This commit is contained in:
parent
e550f061f6
commit
331d2a56d0
2 changed files with 18 additions and 16 deletions
16
README.md
16
README.md
|
@ -268,7 +268,7 @@ defaults:
|
|||
buckets: [.005, .01, .025, .05, .1, .25, .5, 1, 2.5 ]
|
||||
match_type: glob
|
||||
glob_disable_ordering: false
|
||||
ttl: 0 # metrics not expired
|
||||
ttl: 0 # metrics do not expire
|
||||
mappings:
|
||||
# This will be a histogram using the buckets set in `defaults`.
|
||||
- match: test.timing.*.*.*
|
||||
|
@ -353,15 +353,15 @@ Possible values for `match_metric_type` are `gauge`, `counter` and `timer`.
|
|||
|
||||
### Time series expiration
|
||||
|
||||
`ttl` parameter can be used to define expiration time for stale metrics.
|
||||
Value is a time duration with valid time units: "ns", "us" (or "µs"),
|
||||
The `ttl` parameter can be used to define the expiration time for stale metrics.
|
||||
The value is a time duration with valid time units: "ns", "us" (or "µs"),
|
||||
"ms", "s", "m", "h". For example, `ttl: 1m20s`. `0` value is used to indicate
|
||||
not expired metrics.
|
||||
metrics that do not expire.
|
||||
|
||||
Expiration is useful to gather metrics with changing label values from
|
||||
dynamic environments like Kubernetes. For example, metric
|
||||
`ingress_nginx_upstream_retries_count` with label `pod` and
|
||||
changing pod name as a value for this label.
|
||||
TTLs are applied to each mapped metric name/labels combination whenever
|
||||
new samples are received. This means that you cannot immediately expire a
|
||||
metric only by changing the mapping configuration. At least one sample must
|
||||
be received for updated mappings to take effect.
|
||||
|
||||
## Using Docker
|
||||
|
||||
|
|
18
exporter.go
18
exporter.go
|
@ -149,7 +149,7 @@ func NewSummaryContainer(mapper *mapper.MetricMapper) *SummaryContainer {
|
|||
}
|
||||
}
|
||||
|
||||
func (c *SummaryContainer) Get(metricName string, labels prometheus.Labels, help string, mapping *mapper.MetricMapping) (prometheus.Summary, error) {
|
||||
func (c *SummaryContainer) Get(metricName string, labels prometheus.Labels, help string, mapping *mapper.MetricMapping) (prometheus.Observer, error) {
|
||||
summaryVec, ok := c.Elements[metricName]
|
||||
if !ok {
|
||||
quantiles := c.mapper.Defaults.Quantiles
|
||||
|
@ -192,7 +192,7 @@ func NewHistogramContainer(mapper *mapper.MetricMapper) *HistogramContainer {
|
|||
}
|
||||
}
|
||||
|
||||
func (c *HistogramContainer) Get(metricName string, labels prometheus.Labels, help string, mapping *mapper.MetricMapping) (prometheus.Histogram, error) {
|
||||
func (c *HistogramContainer) Get(metricName string, labels prometheus.Labels, help string, mapping *mapper.MetricMapping) (prometheus.Observer, error) {
|
||||
histogramVec, ok := c.Elements[metricName]
|
||||
if !ok {
|
||||
buckets := c.mapper.Defaults.Buckets
|
||||
|
@ -459,22 +459,24 @@ func (b *Exporter) removeStaleMetrics() {
|
|||
|
||||
// saveLabelValues stores label values set to labelValues and update lastRegisteredAt time and ttl value
|
||||
func (b *Exporter) saveLabelValues(metricName string, labels prometheus.Labels, ttl time.Duration) {
|
||||
_, hasMetric := b.labelValues[metricName]
|
||||
metric, hasMetric := b.labelValues[metricName]
|
||||
if !hasMetric {
|
||||
b.labelValues[metricName] = make(map[uint64]*LabelValues)
|
||||
metric = make(map[uint64]*LabelValues)
|
||||
b.labelValues[metricName] = metric
|
||||
}
|
||||
hash := hashNameAndLabels(metricName, labels)
|
||||
_, ok := b.labelValues[metricName][hash]
|
||||
metricLabelValues, ok := metric[hash]
|
||||
if !ok {
|
||||
b.labelValues[metricName][hash] = &LabelValues{
|
||||
metricLabelValues = &LabelValues{
|
||||
labels: labels,
|
||||
ttl: ttl,
|
||||
}
|
||||
b.labelValues[metricName][hash] = metricLabelValues
|
||||
}
|
||||
now := time.Now()
|
||||
b.labelValues[metricName][hash].lastRegisteredAt = now
|
||||
metricLabelValues.lastRegisteredAt = now
|
||||
// Update ttl from mapping
|
||||
b.labelValues[metricName][hash].ttl = ttl
|
||||
metricLabelValues.ttl = ttl
|
||||
}
|
||||
|
||||
func NewExporter(mapper *mapper.MetricMapper) *Exporter {
|
||||
|
|
Loading…
Reference in a new issue