prom

package
v0.13.1 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2021 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Overview

Package prom implements a Prometheus-lite client for service discovery, scraping metrics into a WAL, and remote_write. Clients are broken into a set of instances, each of which contain their own set of configs.

Index

Constants

View Source
const (
	DefaultCleanupAge    = 12 * time.Hour
	DefaultCleanupPeriod = 30 * time.Minute
)

Variables

View Source
var (
	DefaultConfig = Config{
		Global:                 config.DefaultGlobalConfig,
		InstanceRestartBackoff: instance.DefaultBasicManagerConfig.InstanceRestartBackoff,
		WALCleanupAge:          DefaultCleanupAge,
		WALCleanupPeriod:       DefaultCleanupPeriod,
		ServiceConfig:          ha.DefaultConfig,
		ServiceClientConfig:    client.DefaultConfig,
		InstanceMode:           DefaultInstanceMode,
	}
)

Functions

This section is empty.

Types

type Agent

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

Agent is an agent for collecting Prometheus metrics. It acts as a Prometheus-lite; only running the service discovery, remote_write, and WAL components of Prometheus. It is broken down into a series of Instances, each of which perform metric collection.

func New

func New(reg prometheus.Registerer, cfg Config, logger log.Logger) (*Agent, error)

New creates and starts a new Agent.

func (*Agent) Config added in v0.4.0

func (a *Agent) Config() Config

func (*Agent) InstanceManager added in v0.4.0

func (a *Agent) InstanceManager() instance.Manager

func (*Agent) ListInstancesHandler

func (a *Agent) ListInstancesHandler(w http.ResponseWriter, _ *http.Request)

ListInstances writes the set of currently running instances to the http.ResponseWriter.

func (*Agent) ListTargetsHandler added in v0.5.0

func (a *Agent) ListTargetsHandler(w http.ResponseWriter, _ *http.Request)

ListTargetsHandler retrieves the full set of targets across all instances and shows information on them.

func (*Agent) Stop

func (a *Agent) Stop()

Stop stops the agent and all its instances.

func (*Agent) WireAPI

func (a *Agent) WireAPI(r *mux.Router)

WireAPI adds API routes to the provided mux router.

func (*Agent) WireGRPC

func (a *Agent) WireGRPC(s *grpc.Server)

type Config

type Config struct {
	// Whether the Prometheus subsystem should be enabled.
	Enabled bool `yaml:"-"`

	Global                 config.GlobalConfig `yaml:"global"`
	WALDir                 string              `yaml:"wal_directory"`
	WALCleanupAge          time.Duration       `yaml:"wal_cleanup_age"`
	WALCleanupPeriod       time.Duration       `yaml:"wal_cleanup_period"`
	ServiceConfig          ha.Config           `yaml:"scraping_service"`
	ServiceClientConfig    client.Config       `yaml:"scraping_service_client"`
	Configs                []instance.Config   `yaml:"configs,omitempty"`
	InstanceRestartBackoff time.Duration       `yaml:"instance_restart_backoff,omitempty"`
	InstanceMode           InstanceMode        `yaml:"instance_mode"`
}

Config defines the configuration for the entire set of Prometheus client instances, along with a global configuration.

func (*Config) ApplyDefaults

func (c *Config) ApplyDefaults() error

ApplyDefaults applies default values to the Config and validates it.

func (*Config) RegisterFlags

func (c *Config) RegisterFlags(f *flag.FlagSet)

RegisterFlags defines flags corresponding to the Config.

func (*Config) UnmarshalYAML added in v0.4.0

func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements yaml.Unmarshaler.

type InstanceMode added in v0.5.0

type InstanceMode string

InstanceMode controls how instances are created.

var (
	InstanceModeDistinct InstanceMode = "distinct"
	InstanceModeShared   InstanceMode = "shared"

	DefaultInstanceMode = InstanceModeShared
)

Types of instance modes

func (*InstanceMode) UnmarshalYAML added in v0.5.0

func (m *InstanceMode) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML unmarshals a string to an InstanceMode. Fails if the string is unrecognized.

type ListTargetsResponse added in v0.5.0

type ListTargetsResponse []TargetInfo

ListTargetsResponse is returned by the ListTargetsHandler.

type TargetInfo added in v0.5.0

type TargetInfo struct {
	InstanceName string `json:"instance"`
	TargetGroup  string `json:"target_group"`

	Endpoint         string        `json:"endpoint"`
	State            string        `json:"state"`
	Labels           labels.Labels `json:"labels"`
	DiscoveredLabels labels.Labels `json:"discovered_labels"`
	LastScrape       time.Time     `json:"last_scrape"`
	ScrapeDuration   int64         `json:"scrape_duration_ms"`
	ScrapeError      string        `json:"scrape_error"`
}

TargetInfo describes a specific target.

type WALCleaner added in v0.10.0

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

WALCleaner periodically checks for Write Ahead Logs (WALs) that are not associated with any active instance.ManagedInstance and have not been written to in some configured amount of time and deletes them.

func NewWALCleaner added in v0.10.0

func NewWALCleaner(logger log.Logger, manager instance.Manager, walDirectory string, minAge time.Duration, period time.Duration) *WALCleaner

NewWALCleaner creates a new cleaner that looks for abandoned WALs in the given directory and removes them if they haven't been modified in over minAge. Starts a goroutine to periodically run the cleanup method in a loop

func (*WALCleaner) Stop added in v0.10.0

func (c *WALCleaner) Stop()

Stop the cleaner and any background tasks running

Directories

Path Synopsis
ha
Package ha implements a high availability clustering mode for the agent.
Package ha implements a high availability clustering mode for the agent.
Package instance provides a mini Prometheus scraper and remote_writer.
Package instance provides a mini Prometheus scraper and remote_writer.

Jump to

Keyboard shortcuts

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