statsdmetrics

package
v3.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2022 License: Apache-2.0 Imports: 6 Imported by: 3

Documentation

Overview

Package statsdmetrics contains a MetricsCollector that submits circuit metrics to statsd using the github.com/cactus/go-statsd-client/statsd interface.

Index

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) Gauge

func (p *CircuitMetricsCollector) Gauge(stat string, val int64, sampleRate float32) error

func (*CircuitMetricsCollector) Inc

func (p *CircuitMetricsCollector) Inc(stat string, val int64, sampleRate float32) error

func (*CircuitMetricsCollector) Opened

func (c *CircuitMetricsCollector) Opened(now time.Time)

Opened sets a gauge as opened for the collector

func (*CircuitMetricsCollector) TimingDuration

func (p *CircuitMetricsCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error

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

func (*FallbackMetricsCollector) Gauge

func (p *FallbackMetricsCollector) Gauge(stat string, val int64, sampleRate float32) error

func (*FallbackMetricsCollector) Inc

func (p *FallbackMetricsCollector) Inc(stat string, val int64, sampleRate float32) error

func (*FallbackMetricsCollector) Success

func (c *FallbackMetricsCollector) Success(now time.Time, duration time.Duration)

Success sends a success to statsd

func (*FallbackMetricsCollector) TimingDuration

func (p *FallbackMetricsCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error

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

func (*RunMetricsCollector) Gauge

func (p *RunMetricsCollector) Gauge(stat string, val int64, sampleRate float32) error

func (*RunMetricsCollector) Inc

func (p *RunMetricsCollector) Inc(stat string, val int64, sampleRate float32) error

func (*RunMetricsCollector) Success

func (c *RunMetricsCollector) Success(now time.Time, duration time.Duration)

Success sends a success to statsd

func (*RunMetricsCollector) TimingDuration

func (p *RunMetricsCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error

type SLOCollector

type SLOCollector struct {
	SampleRate float32
	// contains filtered or unexported fields
}

SLOCollector collects SLO level metrics

func (*SLOCollector) Failed

func (s *SLOCollector) Failed()

Failed increments a failed metric

func (*SLOCollector) Gauge

func (p *SLOCollector) Gauge(stat string, val int64, sampleRate float32) error

func (*SLOCollector) Inc

func (p *SLOCollector) Inc(stat string, val int64, sampleRate float32) error

func (*SLOCollector) Passed

func (s *SLOCollector) Passed()

Passed increments a passed metric

func (*SLOCollector) TimingDuration

func (p *SLOCollector) TimingDuration(stat string, val time.Duration, sampleRate float32) error

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL