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