Documentation
¶
Overview ¶
Package statsdmetrics contains a MetricsCollector that submits circuit metrics to statsd using the github.com/cactus/go-statsd-client/statsd interface.
Index ¶
- type CircuitMetricsCollector
- func (c *CircuitMetricsCollector) Closed(now time.Time)
- func (p *CircuitMetricsCollector) Gauge(stat string, val int64, sampleRate float32) error
- func (p *CircuitMetricsCollector) Inc(stat string, val int64, sampleRate float32) error
- func (c *CircuitMetricsCollector) Opened(now time.Time)
- func (p *CircuitMetricsCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error
- type CommandFactory
- type ConcurrencyCollector
- type FallbackMetricsCollector
- func (c *FallbackMetricsCollector) ErrConcurrencyLimitReject(now time.Time)
- func (c *FallbackMetricsCollector) ErrFailure(now time.Time, duration time.Duration)
- func (p *FallbackMetricsCollector) Gauge(stat string, val int64, sampleRate float32) error
- func (p *FallbackMetricsCollector) Inc(stat string, val int64, sampleRate float32) error
- func (c *FallbackMetricsCollector) Success(now time.Time, duration time.Duration)
- func (p *FallbackMetricsCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error
- type RunMetricsCollector
- func (c *RunMetricsCollector) ErrBadRequest(now time.Time, duration time.Duration)
- func (c *RunMetricsCollector) ErrConcurrencyLimitReject(now time.Time)
- func (c *RunMetricsCollector) ErrFailure(now time.Time, duration time.Duration)
- func (c *RunMetricsCollector) ErrInterrupt(now time.Time, duration time.Duration)
- func (c *RunMetricsCollector) ErrShortCircuit(now time.Time)
- func (c *RunMetricsCollector) ErrTimeout(now time.Time, duration time.Duration)
- func (p *RunMetricsCollector) Gauge(stat string, val int64, sampleRate float32) error
- func (p *RunMetricsCollector) Inc(stat string, val int64, sampleRate float32) error
- func (c *RunMetricsCollector) Success(now time.Time, duration time.Duration)
- func (p *RunMetricsCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error
- type SLOCollector
- func (s *SLOCollector) Failed()
- func (p *SLOCollector) Gauge(stat string, val int64, sampleRate float32) error
- func (p *SLOCollector) Inc(stat string, val int64, sampleRate float32) error
- func (s *SLOCollector) Passed()
- func (p *SLOCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error
- type StatSender
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CircuitMetricsCollector ¶
type CircuitMetricsCollector struct {
SampleRate float32
// contains filtered or unexported fields
}
CircuitMetricsCollector collects opened/closed metrics
func (*CircuitMetricsCollector) Closed ¶
func (c *CircuitMetricsCollector) Closed(now time.Time)
Closed sets a gauge as closed for the collector
func (*CircuitMetricsCollector) Opened ¶
func (c *CircuitMetricsCollector) Opened(now time.Time)
Opened sets a gauge as opened for the collector
type CommandFactory ¶
type CommandFactory struct {
StatSender StatSender
SampleRate float32
// This function will sanitize the circuit name. If you leave it empty, we will use a default implementation.
// You are free to make this however you want to sanitize your circuit names for statsd.
SanitizeStatsdFunction func(name string) string
}
CommandFactory allows ingesting statsd metrics
func (*CommandFactory) CommandProperties ¶
func (c *CommandFactory) CommandProperties(circuitName string) circuit.Config
CommandProperties creates statsd metrics for a circuit
Example ¶
This example shows how to inject a statsd metric collector into a circuit
package main
import (
"github.com/cactus/go-statsd-client/statsd"
"github.com/cep21/circuit/v3"
"github.com/cep21/circuit/v3/metrics/statsdmetrics"
)
// Our interface should be satisfied by go-statsd-client
var _ statsdmetrics.StatSender = statsd.StatSender(nil)
// This example shows how to inject a statsd metric collector into a circuit
func main() {
// This factory allows us to report statsd metrics from the circuit
f := statsdmetrics.CommandFactory{
StatSender: &statsd.NoopClient{},
}
// Wire the statsd factory into the circuit manager
h := circuit.Manager{
DefaultCircuitProperties: []circuit.CommandPropertiesConstructor{f.CommandProperties},
}
// This created circuit will now use statsd
h.MustCreateCircuit("using-statsd")
}
Output:
func (*CommandFactory) ConcurrencyCollector ¶
func (c *CommandFactory) ConcurrencyCollector(manager *circuit.Manager) *ConcurrencyCollector
ConcurrencyCollector returns a ConcurrencyCollector, which can be used to collect stats on each circuit tracked by the manager. You should call `Start` on the returned object and `Close` when you are done collecting metrics.
func (*CommandFactory) SLOCollector ¶
func (c *CommandFactory) SLOCollector(circuitName string) responsetimeslo.Collector
SLOCollector tracks SLO stats for statsd
type ConcurrencyCollector ¶
type ConcurrencyCollector struct {
StatSender StatSender
SanitizeStatsdFunction func(name string) string
Delay faststats.AtomicInt64
Manager *circuit.Manager
SampleRate float32
// contains filtered or unexported fields
}
ConcurrencyCollector runs as a background routine to collect concurrency stats
func (*ConcurrencyCollector) Close ¶
func (c *ConcurrencyCollector) Close() error
Close stops the `Start` routine
func (*ConcurrencyCollector) Collect ¶
func (c *ConcurrencyCollector) Collect()
Collect reports concurrency information for each circuit
func (*ConcurrencyCollector) Start ¶
func (c *ConcurrencyCollector) Start()
Start blocks forever and runs circuit collection on a delay of variable `Delay`
type FallbackMetricsCollector ¶
type FallbackMetricsCollector struct {
SampleRate float32
// contains filtered or unexported fields
}
FallbackMetricsCollector collects fallback metrics
func (*FallbackMetricsCollector) ErrConcurrencyLimitReject ¶
func (c *FallbackMetricsCollector) ErrConcurrencyLimitReject(now time.Time)
ErrConcurrencyLimitReject sends a concurrency-limit to statsd
func (*FallbackMetricsCollector) ErrFailure ¶
func (c *FallbackMetricsCollector) ErrFailure(now time.Time, duration time.Duration)
ErrFailure sends a failure to statsd
type RunMetricsCollector ¶
type RunMetricsCollector struct {
SampleRate float32
// contains filtered or unexported fields
}
RunMetricsCollector collects command metrics
func (*RunMetricsCollector) ErrBadRequest ¶
func (c *RunMetricsCollector) ErrBadRequest(now time.Time, duration time.Duration)
ErrBadRequest sends a bad request error to statsd
func (*RunMetricsCollector) ErrConcurrencyLimitReject ¶
func (c *RunMetricsCollector) ErrConcurrencyLimitReject(now time.Time)
ErrConcurrencyLimitReject sends a concurrency limit error to statsd
func (*RunMetricsCollector) ErrFailure ¶
func (c *RunMetricsCollector) ErrFailure(now time.Time, duration time.Duration)
ErrFailure sends a failure to statsd
func (*RunMetricsCollector) ErrInterrupt ¶
func (c *RunMetricsCollector) ErrInterrupt(now time.Time, duration time.Duration)
ErrInterrupt sends an interrupt error to statsd
func (*RunMetricsCollector) ErrShortCircuit ¶
func (c *RunMetricsCollector) ErrShortCircuit(now time.Time)
ErrShortCircuit sends a short circuit to statsd
func (*RunMetricsCollector) ErrTimeout ¶
func (c *RunMetricsCollector) ErrTimeout(now time.Time, duration time.Duration)
ErrTimeout sends a timeout to statsd
type SLOCollector ¶
type SLOCollector struct {
SampleRate float32
// contains filtered or unexported fields
}
SLOCollector collects SLO level metrics
type StatSender ¶
type StatSender interface {
// Inc increments a statsd metric
Inc(stat string, val int64, sampleRate float32) error
// Gauge sets a statsd metric
Gauge(stat string, val int64, sampleRate float32) error
// TimingDuration adds a statsd timing
TimingDuration(stat string, val time.Duration, sampleRate float32) error
}
The StatSender interface wraps all the statsd metric methods we care about