prometheus

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2018 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	ClientInterface
	// contains filtered or unexported fields
}

Client for Prometheus API. It hides the way we query Prometheus offering a layer with a high level defined API.

func NewClient

func NewClient() (*Client, error)

NewClient creates a new client to the Prometheus API. It returns an error on any problem.

func (*Client) API

func (in *Client) API() v1.API

API returns the Prometheus V1 HTTP API for performing calls not supported natively by this client

func (*Client) Address

func (in *Client) Address() string

Address return the configured Prometheus service URL

func (*Client) GetAllRequestRates added in v0.6.0

func (in *Client) GetAllRequestRates(namespace string, ratesInterval string, queryTime time.Time) (model.Vector, error)

GetAllRequestRates queries Prometheus to fetch request counter rates, over a time interval, for requests into, internal to, or out of the namespace. Returns (rates, error)

func (*Client) GetAppRequestRates added in v0.6.0

func (in *Client) GetAppRequestRates(namespace, app, ratesInterval string, queryTime time.Time) (model.Vector, model.Vector, error)

GetAppRequestRates queries Prometheus to fetch request counters rates over a time interval for a given app, both in and out. Returns (in, out, error)

func (*Client) GetDestinationServices added in v0.11.0

func (in *Client) GetDestinationServices(namespace string, namespaceCreationTime time.Time, workloadname string) ([]Service, error)

func (*Client) GetMetrics added in v0.6.0

func (in *Client) GetMetrics(query *MetricsQuery) Metrics

GetMetrics returns the Metrics related to the provided query options.

func (*Client) GetNamespaceServicesRequestRates

func (in *Client) GetNamespaceServicesRequestRates(namespace string, ratesInterval string, queryTime time.Time) (model.Vector, error)

GetNamespaceServicesRequestRates queries Prometheus to fetch request counter rates, over a time interval, limited to requests for services in the namespace. Returns (rates, error)

func (*Client) GetServiceHealth

func (in *Client) GetServiceHealth(namespace, servicename string, ports []int32) (EnvoyServiceHealth, error)

GetServiceHealth returns the Health related to the provided service identified by its namespace and service name. It reads Envoy metrics, inbound and outbound When the health is unavailable, total number of members will be 0.

func (*Client) GetServiceRequestRates

func (in *Client) GetServiceRequestRates(namespace, service, ratesInterval string, queryTime time.Time) (model.Vector, error)

GetServiceRequestRates queries Prometheus to fetch request counters rates over a time interval for a given service (hence only inbound). Returns (in, error)

func (*Client) GetSourceWorkloads added in v0.6.0

func (in *Client) GetSourceWorkloads(namespace string, namespaceCreationTime time.Time, servicename string) (map[string][]Workload, error)

GetSourceWorkloads returns a map of list of source workloads for a given service identified by its namespace and service name. Returned map has a destination version as a key and a list of workloads as values. It returns an error on any problem.

func (*Client) GetWorkloadRequestRates added in v0.6.0

func (in *Client) GetWorkloadRequestRates(namespace, workload, ratesInterval string, queryTime time.Time) (model.Vector, model.Vector, error)

GetWorkloadRequestRates queries Prometheus to fetch request counters rates over a time interval for a given workload, both in and out. Returns (in, out, error)

func (*Client) Inject

func (in *Client) Inject(api v1.API)

Inject allows for replacing the API with a mock For testing

type ClientInterface

type ClientInterface interface {
	GetServiceHealth(namespace, servicename string, ports []int32) (EnvoyServiceHealth, error)
	GetAllRequestRates(namespace, ratesInterval string, queryTime time.Time) (model.Vector, error)
	GetNamespaceServicesRequestRates(namespace, ratesInterval string, queryTime time.Time) (model.Vector, error)
	GetServiceRequestRates(namespace, service, ratesInterval string, queryTime time.Time) (model.Vector, error)
	GetAppRequestRates(namespace, app, ratesInterval string, queryTime time.Time) (model.Vector, model.Vector, error)
	GetWorkloadRequestRates(namespace, workload, ratesInterval string, queryTime time.Time) (model.Vector, model.Vector, error)
	GetSourceWorkloads(namespace string, namespaceCreationTime time.Time, servicename string) (map[string][]Workload, error)
	GetDestinationServices(namespace string, namespaceCreationTime time.Time, workloadname string) ([]Service, error)
}

ClientInterface for mocks (only mocked function are necessary here)

type EnvoyRatio

type EnvoyRatio struct {
	Healthy int `json:"healthy"`
	Total   int `json:"total"`
}

EnvoyRatio is the number of healthy members versus total members

type EnvoyServiceHealth added in v0.6.0

type EnvoyServiceHealth struct {
	Inbound  EnvoyRatio `json:"inbound"`
	Outbound EnvoyRatio `json:"outbound"`
}

EnvoyServiceHealth is the number of healthy versus total membership (ie. replicas) inside envoy cluster for inbound and outbound traffic

type Histogram

type Histogram = map[string]*Metric

Histogram contains Metric objects for several histogram-kind statistics

type Metric

type Metric struct {
	Matrix model.Matrix `json:"matrix"`
	// contains filtered or unexported fields
}

Metric holds the Prometheus Matrix model, which contains one or more time series (depending on grouping)

type Metrics

type Metrics struct {
	Source ReporterMetrics `json:"source"`
	Dest   ReporterMetrics `json:"dest"`
}

Metrics contains all simple metrics and histograms data for both source and destination telemetry

type MetricsQuery

type MetricsQuery struct {
	v1.Range
	RateInterval string
	RateFunc     string
	Filters      []string
	Quantiles    []string
	Avg          bool
	ByLabelsIn   []string
	ByLabelsOut  []string
	Namespace    string
	App          string
	Workload     string
	Service      string
	Reporter     string // source | destination, defaults to both if not provided
}

MetricsQuery holds query parameters for a typical metrics query

func (*MetricsQuery) FillDefaults

func (q *MetricsQuery) FillDefaults()

FillDefaults fills the struct with default parameters

type ReporterMetrics added in v0.7.0

type ReporterMetrics struct {
	Metrics    map[string]*Metric   `json:"metrics"`
	Histograms map[string]Histogram `json:"histograms"`
}

ReporterMetrics contains all simple metrics and histograms data for one reporter's telemetry

type Service added in v0.11.0

type Service struct {
	Namespace   string
	App         string
	ServiceName string
}

Service describes a service with contextual information

type Workload added in v0.6.0

type Workload struct {
	Namespace string
	App       string
	Workload  string
	Version   string
}

Workload describes a workload with contextual information

Directories

Path Synopsis
Package internalmetrics provides functionality to collect Prometheus metrics.
Package internalmetrics provides functionality to collect Prometheus metrics.

Jump to

Keyboard shortcuts

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