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.
Click to show internal directories.
Click to hide internal directories.