sinks

package
v2.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Jan 9, 2018 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsAcceptableMetric

func IsAcceptableMetric(metric samplers.InterMetric, sink MetricSink) bool

IsAcceptableMetric returns true if a metric is meant to be ingested by a given sink.

Types

type MetricSink

type MetricSink interface {
	Name() string
	// Start finishes setting up the sink and starts any
	// background processing tasks that the sink might have to run
	// in the background. It's invoked when the server starts.
	Start(traceClient *trace.Client) error
	// Flush receives `InterMetric`s from Veneur and is
	// responsible for "sinking" these metrics to whatever it's
	// backend wants. Note that the sink must **not** mutate the
	// incoming metrics as they are shared with other sinks. Sinks
	// must also check each metric with IsAcceptableMetric to
	// verify they are eligible to consume the metric.
	Flush(context.Context, []samplers.InterMetric) error
	// This one is temporary?
	FlushEventsChecks(ctx context.Context, events []samplers.UDPEvent, checks []samplers.UDPServiceCheck)
}

MetricSink is a receiver of `InterMetric`s when Veneur periodically flushes it's aggregated metrics.

type SpanSink

type SpanSink interface {
	// Start finishes setting up the sink and starts any
	// background processing tasks that the sink might have to run
	// in the background. It's invoked when the server starts.
	Start(*trace.Client) error

	// Name returns the span sink's name for debugging purposes
	Name() string

	// Flush receives `SSFSpan`s from Veneur **as they arrive**. If the sink wants
	// to buffer spans it may do so and defer sending until `Flush` is called.
	Ingest(*ssf.SSFSpan) error

	// Invoked at the same interval as metric flushes, this can be used as a
	// signal for the sink to write out if it was buffering or something.
	Flush()
}

SpanSink is a receiver of spans that handles sending those spans to some downstream sink. Calls to `Ingest(span)` are meant to give the sink control of the span, with periodic calls to flush as a signal for sinks that don't handle their own flushing in a separate goroutine, etc. Note that SpanSinks differ from MetricSinks because Veneur does *not* aggregate Spans.

Directories

Path Synopsis
Package metrics provides sinks that are used by veneur internally.
Package metrics provides sinks that are used by veneur internally.

Jump to

Keyboard shortcuts

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