metrics

package
v0.9.4 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2024 License: AGPL-3.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Namespace = "gatewayd"
)

Variables

View Source
var (
	ClientConnections = promauto.NewGauge(prometheus.GaugeOpts{
		Namespace: Namespace,
		Name:      "client_connections",
		Help:      "Number of client connections",
	})
	ServerConnections = promauto.NewGauge(prometheus.GaugeOpts{
		Namespace: Namespace,
		Name:      "server_connections",
		Help:      "Number of server connections",
	})
	TLSConnections = promauto.NewGauge(prometheus.GaugeOpts{
		Namespace: Namespace,
		Name:      "tls_connections",
		Help:      "Number of TLS connections",
	})
	ServerTicksFired = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "server_ticks_fired_total",
		Help:      "Total number of server ticks fired",
	})
	BytesReceivedFromClient = promauto.NewSummary(prometheus.SummaryOpts{
		Namespace: Namespace,
		Name:      "bytes_received_from_client",
		Help:      "Number of bytes received from client",
	})
	BytesSentToServer = promauto.NewSummary(prometheus.SummaryOpts{
		Namespace: Namespace,
		Name:      "bytes_sent_to_server",
		Help:      "Number of bytes sent to server",
	})
	BytesReceivedFromServer = promauto.NewSummary(prometheus.SummaryOpts{
		Namespace: Namespace,
		Name:      "bytes_received_from_server",
		Help:      "Number of bytes received from server",
	})
	BytesSentToClient = promauto.NewSummary(prometheus.SummaryOpts{
		Namespace: Namespace,
		Name:      "bytes_sent_to_client",
		Help:      "Number of bytes sent to client",
	})
	TotalTrafficBytes = promauto.NewSummary(prometheus.SummaryOpts{
		Namespace: Namespace,
		Name:      "traffic_bytes",
		Help:      "Number of total bytes passed through GatewayD via client or server",
	})
	PluginsLoaded = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "plugins_loaded_total",
		Help:      "Number of plugins loaded",
	})
	PluginHooksRegistered = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "plugin_hooks_registered_total",
		Help:      "Number of plugin hooks registered",
	})
	PluginHooksExecuted = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "plugin_hooks_executed_total",
		Help:      "Number of plugin hooks executed",
	})
	ProxyHealthChecks = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "proxy_health_checks_total",
		Help:      "Number of proxy health checks",
	})
	ProxiedConnections = promauto.NewGauge(prometheus.GaugeOpts{
		Namespace: Namespace,
		Name:      "proxied_connections",
		Help:      "Number of proxy connects",
	})
	ProxyPassThroughsToClient = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "proxy_passthroughs_to_client_total",
		Help:      "Number of successful proxy passthroughs from server to client",
	})
	ProxyPassThroughsToServer = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "proxy_passthroughs_to_server_total",
		Help:      "Number of successful proxy passthroughs from client to server",
	})
	ProxyPassThroughTerminations = promauto.NewCounter(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "proxy_passthrough_terminations_total",
		Help:      "Number of proxy passthrough terminations by plugins",
	})
	APIRequests = promauto.NewCounterVec(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "api_requests_total",
		Help:      "Number of API requests",
	}, []string{"method", "endpoint"})
	APIRequestsErrors = promauto.NewCounterVec(prometheus.CounterOpts{
		Namespace: Namespace,
		Name:      "api_requests_errors_total",
		Help:      "Number of API request errors",
	}, []string{"method", "endpoint", "error"})
)

Functions

This section is empty.

Types

type HeaderBypassResponseWriter added in v0.8.1

type HeaderBypassResponseWriter struct {
	http.ResponseWriter
}

HeaderBypassResponseWriter implements the http.ResponseWriter interface and allows us to bypass the response header when writing to the response. This is useful for merging metrics from multiple sources.

func (*HeaderBypassResponseWriter) Write added in v0.8.1

func (w *HeaderBypassResponseWriter) Write(data []byte) (int, error)

Write writes the data to the response.

func (*HeaderBypassResponseWriter) WriteHeader added in v0.8.1

func (w *HeaderBypassResponseWriter) WriteHeader(int)

WriteHeader intentionally does nothing, but is required to implement the http.ResponseWriter.

type IMerger

type IMerger interface {
	Add(pluginName string, unixDomainSocket string)
	Remove(pluginName string)
	ReadMetrics() (map[string][]byte, *gerr.GatewayDError)
	MergeMetrics(pluginMetrics map[string][]byte) *gerr.GatewayDError
	Start()
	Stop()
}

type Merger

type Merger struct {
	Logger              zerolog.Logger
	MetricsMergerPeriod time.Duration
	Addresses           map[string]string
	OutputMetrics       []byte
	// contains filtered or unexported fields
}

func NewMerger

func NewMerger(
	ctx context.Context, merger Merger,
) *Merger

NewMerger creates a new metrics merger.

func (*Merger) Add

func (m *Merger) Add(pluginName string, unixDomainSocket string)

Add adds a plugin and its unix domain socket to the map of plugins to merge metrics from.

func (*Merger) MergeMetrics added in v0.3.1

func (m *Merger) MergeMetrics(pluginMetrics map[string][]byte) *gerr.GatewayDError

func (*Merger) ReadMetrics

func (m *Merger) ReadMetrics() (map[string][]byte, *gerr.GatewayDError)

ReadMetrics reads metrics from plugins by reading from their unix domain sockets.

func (*Merger) Remove added in v0.4.1

func (m *Merger) Remove(pluginName string)

Remove removes a plugin and its unix domain socket from the map of plugins, so that merging metrics don't pick it up on the next scheduled run.

func (*Merger) Start

func (m *Merger) Start()

Start starts the metrics merger.

func (*Merger) Stop

func (m *Merger) Stop()

Stop stops the metrics merger.

Jump to

Keyboard shortcuts

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