Documentation

Overview

Package monitor contains the code for sending metric data to monitoring endpoints.

Package monitor contains the code for sending metric data to monitoring endpoints.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ProdxmonScopes is the list of oauth2 scopes needed on the http client
	// given to NewHTTPMonitor.
	ProdxmonScopes = []string{"https://www.googleapis.com/auth/prodxmon"}
)

Functions

func SerializeCells

func SerializeCells(cells []types.Cell, now time.Time) []*pb.MetricsCollection

SerializeCells creates a MetricsCollection message from a slice of cells.

func SerializeDataSet

func SerializeDataSet(c types.Cell) *pb.MetricsDataSet

SerializeDataSet creates a new MetricsDataSet without any data, but just with the metric metadata fields populated.

func SerializeValue

func SerializeValue(c types.Cell, now time.Time) *pb.MetricsData

SerializeValue creates a new MetricsData representing this cell's value.

Types

type Fake

type Fake struct {
	CS      int
	Cells   [][]types.Cell
	SendErr error
}

Fake is a fake Monitor.

func (*Fake) ChunkSize

func (m *Fake) ChunkSize() int

ChunkSize returns the fake value.

func (*Fake) Close

func (m *Fake) Close() error

Close always works.

func (*Fake) Send

func (m *Fake) Send(c context.Context, cells []types.Cell) error

Send appends the cells to Cells, unless SendErr is set.

type Monitor

type Monitor interface {
	// ChunkSize returns the maximum number of metrics this Monitor can Send in
	// one go.  If there are more metrics, they will be broken up into chunks and
	// Send will be called multiple times.  A ChunkSize of 0 disables chunking.
	ChunkSize() int

	Send(ctx context.Context, cells []types.Cell) error

	// Close closes any resources held by the monitor.
	//
	// Close need not be called at program exit.
	Close() error
}

A Monitor can send a collection of metrics somewhere.

func NewDebugMonitor

func NewDebugMonitor(path string) Monitor

NewDebugMonitor returns a Monitor that outputs metrics to a log, and optionally a file on disk.

func NewHTTPMonitor

func NewHTTPMonitor(ctx context.Context, client *http.Client, endpoint *url.URL) (Monitor, error)

NewHTTPMonitor creates a new Monitor object that sends metric to an HTTP (or HTTPS) endpoint. The http client should be authenticated as required.

func NewNilMonitor

func NewNilMonitor() Monitor

NewNilMonitor returns a Monitor that does nothing.