Documentation ¶
Index ¶
- Constants
- Variables
- func ConsumePanic(sentry *raven.Client, stats *statsd.Client, hostname string, err interface{})
- func NewSocket(addr *net.UDPAddr, recvBuf int, reuseport bool) (net.PacketConn, error)
- type Config
- type Consul
- type DatadogTraceSpan
- type Discoverer
- type EventWorker
- type Proxy
- func (p *Proxy) HTTPServe()
- func (p *Proxy) Handler() http.Handler
- func (p *Proxy) ProxyMetrics(ctx context.Context, jsonMetrics []samplers.JSONMetric)
- func (p *Proxy) ProxyTraces(ctx context.Context, traces []DatadogTraceSpan)
- func (p *Proxy) RefreshDestinations(serviceName string, ring *consistent.Consistent, mtx *sync.Mutex)
- func (p *Proxy) Shutdown()
- func (p *Proxy) Start()
- type ProxyConfig
- type Server
- func (s *Server) Flush()
- func (s *Server) FlushGlobal(ctx context.Context)
- func (s *Server) FlushLocal(ctx context.Context)
- func (s *Server) HTTPServe()
- func (s *Server) HandleMetricPacket(packet []byte) error
- func (s *Server) HandleTracePacket(packet []byte)
- func (s *Server) Handler() http.Handler
- func (s *Server) ImportMetrics(ctx context.Context, jsonMetrics []samplers.JSONMetric)
- func (s *Server) IsLocal() bool
- func (s *Server) ReadMetricSocket(packetPool *sync.Pool, reuseport bool)
- func (s *Server) ReadTCPSocket()
- func (s *Server) ReadTraceSocket(packetPool *sync.Pool)
- func (s *Server) Shutdown()
- func (s *Server) Start()
- func (s *Server) TracingEnabled() bool
- type TraceWorker
- type Worker
- type WorkerMetrics
Constants ¶
const REDACTED = "REDACTED"
REDACTED is used to replace values that we don't want to leak into loglines (e.g., credentials)
Variables ¶
var VERSION = "dirty"
VERSION stores the current veneur version. It must be a var so it can be set at link time.
Functions ¶
func ConsumePanic ¶ added in v1.3.1
ConsumePanic is intended to be called inside a deferred function when recovering from a panic. It accepts the value of recover() as its only argument, and reports the panic to Sentry, prints the stack, and then repanics (to ensure your program terminates)
Types ¶
type Config ¶
type Config struct { Aggregates []string `yaml:"aggregates"` APIHostname string `yaml:"api_hostname"` AwsAccessKeyID string `yaml:"aws_access_key_id"` AwsRegion string `yaml:"aws_region"` AwsS3Bucket string `yaml:"aws_s3_bucket"` AwsSecretAccessKey string `yaml:"aws_secret_access_key"` Debug bool `yaml:"debug"` EnableProfiling bool `yaml:"enable_profiling"` FlushFile string `yaml:"flush_file"` FlushMaxPerBody int `yaml:"flush_max_per_body"` ForwardAddress string `yaml:"forward_address"` Hostname string `yaml:"hostname"` HTTPAddress string `yaml:"http_address"` InfluxAddress string `yaml:"influx_address"` InfluxConsistency string `yaml:"influx_consistency"` InfluxDBName string `yaml:"influx_db_name"` Interval string `yaml:"interval"` Key string `yaml:"key"` MetricMaxLength int `yaml:"metric_max_length"` NumReaders int `yaml:"num_readers"` NumWorkers int `yaml:"num_workers"` OmitEmptyHostname bool `yaml:"omit_empty_hostname"` Percentiles []float64 `yaml:"percentiles"` ReadBufferSizeBytes int `yaml:"read_buffer_size_bytes"` SentryDsn string `yaml:"sentry_dsn"` StatsAddress string `yaml:"stats_address"` Tags []string `yaml:"tags"` TcpAddress string `yaml:"tcp_address"` TLSAuthorityCertificate string `yaml:"tls_authority_certificate"` TLSCertificate string `yaml:"tls_certificate"` TLSKey string `yaml:"tls_key"` TraceAddress string `yaml:"trace_address"` TraceAPIAddress string `yaml:"trace_api_address"` TraceMaxLengthBytes int `yaml:"trace_max_length_bytes"` UdpAddress string `yaml:"udp_address"` }
func ReadConfig ¶
ReadConfig unmarshals the config file and slurps in it's data.
type Consul ¶ added in v1.3.1
Consul is a Discoverer that uses Consul to find healthy instances of a given name.
type DatadogTraceSpan ¶
type DatadogTraceSpan struct { Duration int64 `json:"duration"` Error int64 `json:"error"` Meta map[string]string `json:"meta"` Metrics map[string]float64 `json:"metrics"` Name string `json:"name"` ParentID int64 `json:"parent_id,omitempty"` Resource string `json:"resource,omitempty"` Service string `json:"service"` SpanID int64 `json:"span_id"` Start int64 `json:"start"` TraceID int64 `json:"trace_id"` Type string `json:"type"` }
DatadogTraceSpan represents a trace span as JSON for the Datadog tracing API.
type Discoverer ¶ added in v1.3.1
Discoverer is an interface for various service discovery mechanisms. You could implement your own by implementing this method! See consul.go
type EventWorker ¶
type EventWorker struct { EventChan chan samplers.UDPEvent ServiceCheckChan chan samplers.UDPServiceCheck // contains filtered or unexported fields }
EventWorker is similar to a Worker but it collects events and service checks instead of metrics.
func NewEventWorker ¶
func NewEventWorker(stats *statsd.Client) *EventWorker
NewEventWorker creates an EventWorker ready to collect events and service checks.
func (*EventWorker) Flush ¶
func (ew *EventWorker) Flush() ([]samplers.UDPEvent, []samplers.UDPServiceCheck)
Flush returns the EventWorker's stored events and service checks and resets the stored contents.
func (*EventWorker) Work ¶
func (ew *EventWorker) Work()
Work will start the EventWorker listening for events and service checks. This function will never return.
type Proxy ¶ added in v1.3.1
type Proxy struct { Sentry *raven.Client Hostname string ForwardDestinations *consistent.Consistent TraceDestinations *consistent.Consistent Discoverer Discoverer ConsulForwardService string ConsulTraceService string ConsulInterval time.Duration ForwardDestinationsMtx sync.Mutex TraceDestinationsMtx sync.Mutex HTTPAddr string HTTPClient *http.Client Statsd *statsd.Client AcceptingForwards bool AcceptingTraces bool // contains filtered or unexported fields }
func NewProxyFromConfig ¶ added in v1.3.1
func NewProxyFromConfig(conf ProxyConfig) (p Proxy, err error)
func (*Proxy) HTTPServe ¶ added in v1.3.1
func (p *Proxy) HTTPServe()
HTTPServe starts the HTTP server and listens perpetually until it encounters an unrecoverable error.
func (*Proxy) Handler ¶ added in v1.3.1
Handler returns the Handler responsible for routing request processing.
func (*Proxy) ProxyMetrics ¶ added in v1.3.1
func (p *Proxy) ProxyMetrics(ctx context.Context, jsonMetrics []samplers.JSONMetric)
ProxyMetrics takes a sliceof JSONMetrics and breaks them up into multiple HTTP requests by MetricKey using the hash ring.
func (*Proxy) ProxyTraces ¶ added in v1.3.1
func (p *Proxy) ProxyTraces(ctx context.Context, traces []DatadogTraceSpan)
func (*Proxy) RefreshDestinations ¶ added in v1.3.1
func (p *Proxy) RefreshDestinations(serviceName string, ring *consistent.Consistent, mtx *sync.Mutex)
RefreshDestinations updates the server's list of valid destinations for flushing. This should be called periodically to ensure we have the latest data.
type ProxyConfig ¶ added in v1.3.1
type ProxyConfig struct { ConsulForwardServiceName string `yaml:"consul_forward_service_name"` ConsulRefreshInterval string `yaml:"consul_refresh_interval"` ConsulTraceServiceName string `yaml:"consul_trace_service_name"` Debug bool `yaml:"debug"` EnableProfiling bool `yaml:"enable_profiling"` ForwardAddress string `yaml:"forward_address"` HTTPAddress string `yaml:"http_address"` SentryDsn string `yaml:"sentry_dsn"` StatsAddress string `yaml:"stats_address"` TraceAddress string `yaml:"trace_address"` TraceAPIAddress string `yaml:"trace_api_address"` }
func ReadProxyConfig ¶ added in v1.3.1
func ReadProxyConfig(path string) (c ProxyConfig, err error)
ReadProxyConfig unmarshals the proxy config file and slurps in its data.
type Server ¶
type Server struct { Workers []*Worker EventWorker *EventWorker TraceWorker *TraceWorker Statsd *statsd.Client Sentry *raven.Client Hostname string Tags []string DDHostname string DDAPIKey string DDTraceAddress string HTTPClient *http.Client HTTPAddr string ForwardAddr string UDPAddr *net.UDPAddr TraceAddr *net.UDPAddr RcvbufBytes int TCPAddr *net.TCPAddr HistogramPercentiles []float64 FlushMaxPerBody int HistogramAggregates samplers.HistogramAggregates // contains filtered or unexported fields }
A Server is the actual veneur instance that will be run.
func NewFromConfig ¶
NewFromConfig creates a new veneur server from a configuration specification.
func (*Server) Flush ¶
func (s *Server) Flush()
Flush takes the slices of metrics, combines then and marshals them to json for posting to Datadog.
func (*Server) FlushGlobal ¶
FlushGlobal sends any global metrics to their destination.
func (*Server) FlushLocal ¶
FlushLocal takes the slices of metrics, combines then and marshals them to json for posting to Datadog.
func (*Server) HTTPServe ¶
func (s *Server) HTTPServe()
HTTPServe starts the HTTP server and listens perpetually until it encounters an unrecoverable error.
func (*Server) HandleMetricPacket ¶
HandleMetricPacket processes each packet that is sent to the server, and sends to an appropriate worker (EventWorker or Worker).
func (*Server) HandleTracePacket ¶
HandleTracePacket accepts an incoming packet as bytes and sends it to the appropriate worker.
func (*Server) ImportMetrics ¶
func (s *Server) ImportMetrics(ctx context.Context, jsonMetrics []samplers.JSONMetric)
ImportMetrics feeds a slice of json metrics to the server's workers
func (*Server) IsLocal ¶
IsLocal indicates whether veneur is running as a local instance (forwarding non-local data to a global veneur instance) or is running as a global instance (sending all data directly to the final destination).
func (*Server) ReadMetricSocket ¶
ReadMetricSocket listens for available packets to handle.
func (*Server) ReadTCPSocket ¶
func (s *Server) ReadTCPSocket()
ReadTCPSocket listens on Server.TCPAddr for new connections, starting a goroutine for each.
func (*Server) ReadTraceSocket ¶
ReadTraceSocket listens for available packets to handle.
func (*Server) Shutdown ¶
func (s *Server) Shutdown()
Shutdown signals the server to shut down after closing all current connections.
func (*Server) Start ¶
func (s *Server) Start()
Start spins up the Server to do actual work, firing off goroutines for various workers and utilities.
func (*Server) TracingEnabled ¶
TracingEnabled returns true if tracing is enabled.
type TraceWorker ¶
TraceWorker is similar to a Worker but it collects events and service checks instead of metrics.
func NewTraceWorker ¶
func NewTraceWorker(stats *statsd.Client) *TraceWorker
NewTraceWorker creates an TraceWorker ready to collect events and service checks.
func (*TraceWorker) Flush ¶
func (tw *TraceWorker) Flush() *ring.Ring
Flush returns the TraceWorker's stored spans and resets the stored contents.
func (*TraceWorker) Work ¶
func (tw *TraceWorker) Work()
Work will start the EventWorker listening for events and service checks. This function will never return.
type Worker ¶
type Worker struct { PacketChan chan samplers.UDPMetric ImportChan chan []samplers.JSONMetric QuitChan chan struct{} // contains filtered or unexported fields }
Worker is the doodad that does work.
func (*Worker) Flush ¶
func (w *Worker) Flush() WorkerMetrics
Flush resets the worker's internal metrics and returns their contents.
func (*Worker) ImportMetric ¶
func (w *Worker) ImportMetric(other samplers.JSONMetric)
ImportMetric receives a metric from another veneur instance
func (*Worker) MetricsProcessedCount ¶ added in v1.2.0
MetricsProcessedCount is a convenince method for testing that allows us to fetch the Worker's processed count in a non-racey way.
func (*Worker) ProcessMetric ¶
ProcessMetric takes a Metric and samples it
This is standalone to facilitate testing
type WorkerMetrics ¶
type WorkerMetrics struct {
// contains filtered or unexported fields
}
WorkerMetrics is just a plain struct bundling together the flushed contents of a worker
func NewWorkerMetrics ¶
func NewWorkerMetrics() WorkerMetrics
NewWorkerMetrics initializes a WorkerMetrics struct
func (WorkerMetrics) Upsert ¶
func (wm WorkerMetrics) Upsert(mk samplers.MetricKey, Scope samplers.MetricScope, tags []string) bool
Upsert creates an entry on the WorkerMetrics struct for the given metrickey (if one does not already exist) and updates the existing entry (if one already exists). Returns true if the metric entry was created and false otherwise.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
Package ssf is a generated protocol buffer package.
|
Package ssf is a generated protocol buffer package. |
Package tdigest provides an implementation of Ted Dunning's t-digest, an approximate histogram for online, distributed applications.
|
Package tdigest provides an implementation of Ted Dunning's t-digest, an approximate histogram for online, distributed applications. |
Package trace provies an experimental API for initiating traces.
|
Package trace provies an experimental API for initiating traces. |