Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
93
accumulator.go
Normal file
93
accumulator.go
Normal file
|
@ -0,0 +1,93 @@
|
|||
package telegraf
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// Accumulator allows adding metrics to the processing flow.
|
||||
type Accumulator interface {
|
||||
// AddFields adds a metric to the accumulator with the given measurement
|
||||
// name, fields, and tags (and timestamp). If a timestamp is not provided,
|
||||
// then the accumulator sets it to "now".
|
||||
AddFields(measurement string,
|
||||
fields map[string]interface{},
|
||||
tags map[string]string,
|
||||
t ...time.Time)
|
||||
|
||||
// AddGauge is the same as AddFields, but will add the metric as a "Gauge" type
|
||||
AddGauge(measurement string,
|
||||
fields map[string]interface{},
|
||||
tags map[string]string,
|
||||
t ...time.Time)
|
||||
|
||||
// AddCounter is the same as AddFields, but will add the metric as a "Counter" type
|
||||
AddCounter(measurement string,
|
||||
fields map[string]interface{},
|
||||
tags map[string]string,
|
||||
t ...time.Time)
|
||||
|
||||
// AddSummary is the same as AddFields, but will add the metric as a "Summary" type
|
||||
AddSummary(measurement string,
|
||||
fields map[string]interface{},
|
||||
tags map[string]string,
|
||||
t ...time.Time)
|
||||
|
||||
// AddHistogram is the same as AddFields, but will add the metric as a "Histogram" type
|
||||
AddHistogram(measurement string,
|
||||
fields map[string]interface{},
|
||||
tags map[string]string,
|
||||
t ...time.Time)
|
||||
|
||||
// AddMetric adds a metric to the accumulator.
|
||||
AddMetric(Metric)
|
||||
|
||||
// SetPrecision sets the timestamp rounding precision. All metrics
|
||||
// added to the accumulator will have their timestamp rounded to the
|
||||
// nearest multiple of precision.
|
||||
SetPrecision(precision time.Duration)
|
||||
|
||||
// Report an error.
|
||||
AddError(err error)
|
||||
|
||||
// Upgrade to a TrackingAccumulator with space for maxTracked
|
||||
// metrics/batches.
|
||||
WithTracking(maxTracked int) TrackingAccumulator
|
||||
}
|
||||
|
||||
// TrackingID uniquely identifies a tracked metric group
|
||||
type TrackingID uint64
|
||||
|
||||
type TrackingData interface {
|
||||
// ID is the TrackingID
|
||||
ID() TrackingID
|
||||
|
||||
// RefCount is the number of tracking metrics still persistent and referencing this tracking ID
|
||||
RefCount() int32
|
||||
}
|
||||
|
||||
// DeliveryInfo provides the results of a delivered metric group.
|
||||
type DeliveryInfo interface {
|
||||
// ID is the TrackingID
|
||||
ID() TrackingID
|
||||
|
||||
// Delivered returns true if the metric was processed successfully.
|
||||
Delivered() bool
|
||||
}
|
||||
|
||||
// TrackingAccumulator is an Accumulator that provides a signal when the
|
||||
// metric has been fully processed. Sending more metrics than the accumulator
|
||||
// has been allocated for without reading status from the Accepted or Rejected
|
||||
// channels is an error.
|
||||
type TrackingAccumulator interface {
|
||||
Accumulator
|
||||
|
||||
// Add the Metric and arrange for tracking feedback after processing.
|
||||
AddTrackingMetric(m Metric) TrackingID
|
||||
|
||||
// Add a group of Metrics and arrange for a signal when the group has been
|
||||
// processed.
|
||||
AddTrackingMetricGroup(group []Metric) TrackingID
|
||||
|
||||
// Delivered returns a channel that will contain the tracking results.
|
||||
Delivered() <-chan DeliveryInfo
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue