metric

package
v0.0.0-...-551f129 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// default metric prefix
	DefaultMetricPrefix = "micro_"
	// default label prefix
	DefaultLabelPrefix = "micro_"
)

Functions

func APIWrapper

func APIWrapper(handler http.Handler) apiWrapper

APIWrapper returns an measuring standard http.Handler for api related endpoints.

func NewCallWrapper

func NewCallWrapper(opts ...Option) client.CallWrapper

func NewClientWrapper

func NewClientWrapper(opts ...Option) client.Wrapper

func NewHandlerWrapper

func NewHandlerWrapper(opts ...Option) server.HandlerWrapper

func NewSubscriberWrapper

func NewSubscriberWrapper(opts ...Option) server.SubscriberWrapper

func WebWrapper

func WebWrapper(handlerID string, handler http.Handler) webWrapper

Types

type Config

type Config struct {
	// Recorder is the way the metrics will be recorder in the different backends.
	Recorder model.Recorder
	// Service is an optional identifier for the metrics, this can be useful if
	// a same service has multiple servers (e.g API, metrics and healthchecks).
	Service string
	// GroupedStatus will group the status label in the form of `\dxx`, for example,
	// 200, 201, and 203 will have the label `code="2xx"`. This impacts on the cardinality
	// of the metrics and also improves the performance of queries that are grouped by
	// status code because there are already aggregated in the metric.
	// By default will be false.
	GroupedStatus bool
	// DisableMeasureSize will disable the recording metrics about the response size,
	// by default measuring size is enabled (`DisableMeasureSize` is false).
	DisableMeasureSize bool
	// DisableMeasureInflight will disable the recording metrics about the inflight requests number,
	// by default measuring inflights is enabled (`DisableMeasureInflight` is false).
	DisableMeasureInflight bool
}

Config is the configuration for the middleware factory.

type Middleware

type Middleware struct {
	// contains filtered or unexported fields
}

Middleware is a service that knows how to measure an HTTP handler by wrapping another handler.

Depending on the framework/library we want to measure, this can change a lot, to abstract the way how we measure on the different libraries, Middleware will recieve a `Reporter` that knows how to get the data the Middleware service needs to measure.

func New

func New(cfg Config) Middleware

New returns the a Middleware service.

func (Middleware) Measure

func (m Middleware) Measure(handlerID string, reporter Reporter, next func())

Measure abstracts the HTTP handler implementation by only requesting a reporter, this reporter will return the required data to be measured. it accepts a next function that will be called as the wrapped logic before and after measurement actions.

type Option

type Option func(*Options)

func ServiceID

func ServiceID(id string) Option

func ServiceName

func ServiceName(name string) Option

func ServiceVersion

func ServiceVersion(version string) Option

type Options

type Options struct {
	Name    string
	Version string
	ID      string
}

type Reporter

type Reporter interface {
	Method() string
	Context() context.Context
	URLPath() string
	StatusCode() int
	BytesWritten() int64
}

Reporter knows how to report the data to the Middleware so it can measure the different framework/libraries.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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