collector

package
v0.51.0 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2024 License: Apache-2.0 Imports: 15 Imported by: 265

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetCollectorConfigs

func GetCollectorConfigs(labels map[string]string) map[string]string

Types

type Collector

type Collector interface {
	// Collect metrics from this collector.
	// Returns the next time this collector should be collected from.
	// Next collection time is always returned, even when an error occurs.
	// A collection time of zero means no more collection.
	Collect(map[string][]v1.MetricVal) (time.Time, map[string][]v1.MetricVal, error)

	// Return spec for all metrics associated with this collector
	GetSpec() []v1.MetricSpec

	// Name of this collector.
	Name() string
}

Metric collector.

type CollectorManager

type CollectorManager interface {
	// Register a collector.
	RegisterCollector(collector Collector) error

	// Collect from collectors that are ready and return the next time
	// at which a collector will be ready to collect from.
	// Next collection time is always returned, even when an error occurs.
	// A collection time of zero means no more collection.
	Collect() (time.Time, map[string][]v1.MetricVal, error)

	// Get metric spec from all registered collectors.
	GetSpec() ([]v1.MetricSpec, error)
}

Manages and runs collectors.

func NewCollectorManager

func NewCollectorManager() (CollectorManager, error)

Returns a new CollectorManager that is thread-compatible.

type Config

type Config struct {
	// the endpoint to hit to scrape metrics
	Endpoint EndpointConfig `json:"endpoint"`

	// holds information about different metrics that can be collected
	MetricsConfig []MetricConfig `json:"metrics_config"`
}

type EndpointConfig added in v0.24.0

type EndpointConfig struct {
	// The full URL of the endpoint to reach
	URL string
	// A configuration in which an actual URL is constructed from, using the container's ip address
	URLConfig URLConfig
}

func (*EndpointConfig) UnmarshalJSON added in v0.24.0

func (ec *EndpointConfig) UnmarshalJSON(b []byte) error

type FakeCollectorManager

type FakeCollectorManager struct {
}

func (*FakeCollectorManager) Collect

func (fkm *FakeCollectorManager) Collect(metric map[string][]v1.MetricVal) (time.Time, map[string][]v1.MetricVal, error)

func (*FakeCollectorManager) GetSpec

func (fkm *FakeCollectorManager) GetSpec() ([]v1.MetricSpec, error)

func (*FakeCollectorManager) RegisterCollector

func (fkm *FakeCollectorManager) RegisterCollector(collector Collector) error

type GenericCollector

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

func NewCollector

func NewCollector(collectorName string, configFile []byte, metricCountLimit int, containerHandler container.ContainerHandler, httpClient *http.Client) (*GenericCollector, error)

Returns a new collector using the information extracted from the configfile

func (*GenericCollector) Collect

func (collector *GenericCollector) Collect(metrics map[string][]v1.MetricVal) (time.Time, map[string][]v1.MetricVal, error)

Returns collected metrics and the next collection time of the collector

func (*GenericCollector) GetSpec

func (collector *GenericCollector) GetSpec() []v1.MetricSpec

func (*GenericCollector) Name

func (collector *GenericCollector) Name() string

Returns name of the collector

type GenericCollectorManager

type GenericCollectorManager struct {
	Collectors         []*collectorData
	NextCollectionTime time.Time
}

func (*GenericCollectorManager) Collect

func (cm *GenericCollectorManager) Collect() (time.Time, map[string][]v1.MetricVal, error)

func (*GenericCollectorManager) GetSpec

func (cm *GenericCollectorManager) GetSpec() ([]v1.MetricSpec, error)

func (*GenericCollectorManager) RegisterCollector

func (cm *GenericCollectorManager) RegisterCollector(collector Collector) error

type MetricConfig

type MetricConfig struct {
	// the name of the metric
	Name string `json:"name"`

	// enum type for the metric type
	MetricType v1.MetricType `json:"metric_type"`

	// metric units to display on UI and in storage (eg: MB, cores)
	// this is only used for display.
	Units string `json:"units"`

	// data type of the metric (eg: int, float)
	DataType v1.DataType `json:"data_type"`

	// the frequency at which the metric should be collected
	PollingFrequency time.Duration `json:"polling_frequency"`

	// the regular expression that can be used to extract the metric
	Regex string `json:"regex"`
}

metricConfig holds information extracted from the config file about a metric

type Prometheus

type Prometheus struct {
	// the endpoint to hit to scrape metrics
	Endpoint EndpointConfig `json:"endpoint"`

	// the frequency at which metrics should be collected
	PollingFrequency time.Duration `json:"polling_frequency"`

	// holds names of different metrics that can be collected
	MetricsConfig []string `json:"metrics_config"`
}

type PrometheusCollector

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

func NewPrometheusCollector

func NewPrometheusCollector(collectorName string, configFile []byte, metricCountLimit int, containerHandler container.ContainerHandler, httpClient *http.Client) (*PrometheusCollector, error)

Returns a new collector using the information extracted from the configfile

func (*PrometheusCollector) Collect

func (collector *PrometheusCollector) Collect(metrics map[string][]v1.MetricVal) (time.Time, map[string][]v1.MetricVal, error)

Returns collected metrics and the next collection time of the collector

func (*PrometheusCollector) GetSpec

func (collector *PrometheusCollector) GetSpec() []v1.MetricSpec

func (*PrometheusCollector) Name

func (collector *PrometheusCollector) Name() string

Returns name of the collector

type URLConfig added in v0.24.0

type URLConfig struct {
	// the protocol to use for connecting to the endpoint. Eg 'http' or 'https'
	Protocol string `json:"protocol"`

	// the port to use for connecting to the endpoint. Eg '8778'
	Port json.Number `json:"port"`

	// the path to use for the endpoint. Eg '/metrics'
	Path string `json:"path"`
}

Jump to

Keyboard shortcuts

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