prometheus

package
v0.0.0-...-a17e1e9 Latest Latest
Warning

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

Go to latest
Published: Mar 17, 2021 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

FS defines file system used to read and write configuration files

View Source
var Reload = func() error {
	mu.Lock()
	defer mu.Unlock()
	logPrintf("Reloading Prometheus")
	cmd := exec.Command("pkill", "-HUP", "prometheus")
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	err := cmdRun(cmd)
	if err != nil {
		logPrintf(err.Error())
	}
	logPrintf("Prometheus was reloaded")
	return err
}

Reload sends `pkill -HUP` signal to `prometheus` process.

View Source
var Run = func() error {
	logPrintf("Starting Prometheus")
	cmdString := "prometheus"
	flags := EnvToPrometheusFlags("ARG")
	if len(flags) > 0 {
		allFlags := strings.Join(flags, " ")
		cmdString = fmt.Sprintf("%s %s", cmdString, allFlags)
	}
	cmd := exec.Command("/bin/sh", "-c", cmdString)
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	return cmdRun(cmd)
}

Run starts `prometheus` process

Functions

func EnvToPrometheusFlags

func EnvToPrometheusFlags(prefix string) []string

EnvToPrometheusFlags converts environmental variables into a string of flags to be used with prometheus v2 CLI

func GetAlertConfig

func GetAlertConfig(alerts map[string]Alert) string

GetAlertConfig returns Prometheus configuration snippet related to alerts.

func WriteConfig

func WriteConfig(configPath string, scrapes map[string]Scrape,
	alerts map[string]Alert, nodeLabels map[string]map[string]string)

WriteConfig creates Prometheus configuration at configPath and writes alerts into /etc/prometheus/alert.rules

Types

type Alert

type Alert struct {
	AlertAnnotations   map[string]string `json:"alertAnnotations,omitempty"`
	AlertFor           string            `json:"alertFor,omitempty"`
	AlertIf            string            `json:"alertIf,omitempty"`
	AlertLabels        map[string]string `json:"alertLabels,omitempty"`
	AlertName          string            `json:"alertName"`
	AlertPersistent    bool              `json:"alertPersistent"`
	AlertNameFormatted string
	ServiceName        string `json:"serviceName"`
	Replicas           int    `json:"replicas"`
}

Alert defines data used to create alert configuration snippet

type AlertingConfig

type AlertingConfig struct {
	AlertRelabelConfigs []*RelabelConfig      `yaml:"alert_relabel_configs,omitempty"`
	AlertmanagerConfigs []*AlertmanagerConfig `yaml:"alertmanagers,omitempty"`
}

AlertingConfig configures alerting and alertmanager related configs.

type AlertmanagerConfig

type AlertmanagerConfig struct {
	ServiceDiscoveryConfig ServiceDiscoveryConfig `yaml:",inline"`
	HTTPClientConfig       HTTPClientConfig       `yaml:",inline"`

	// The URL scheme to use when talking to Alertmanagers.
	Scheme string `yaml:"scheme,omitempty"`
	// Path prefix to add in front of the push endpoint path.
	PathPrefix string `yaml:"path_prefix,omitempty"`
	// The timeout used when sending alerts.
	Timeout string `yaml:"timeout,omitempty"`

	// List of Alertmanager relabel configurations.
	RelabelConfigs []*RelabelConfig `yaml:"relabel_configs,omitempty"`
}

AlertmanagerConfig configures how Alertmanagers can be discovered and communicated with.

type BasicAuth

type BasicAuth struct {
	Username string `yaml:"username"`
	Password string `yaml:"password"`
}

BasicAuth contains basic HTTP authentication credentials.

type Config

type Config struct {
	GlobalConfig   GlobalConfig    `yaml:"global,omitempty"`
	AlertingConfig AlertingConfig  `yaml:"alerting,omitempty"`
	RuleFiles      []string        `yaml:"rule_files,omitempty"`
	ScrapeConfigs  []*ScrapeConfig `yaml:"scrape_configs,omitempty"`

	RemoteWriteConfigs []*RemoteWriteConfig `yaml:"remote_write,omitempty"`
	RemoteReadConfigs  []*RemoteReadConfig  `yaml:"remote_read,omitempty"`
}

Config is the top-level configuration for Prometheus's config files.

func (*Config) CreateFileStaticConfig

func (c *Config) CreateFileStaticConfig(scrapes map[string]Scrape, nodeLabels map[string]map[string]string, fileSDDir string)

CreateFileStaticConfig creates static config files

func (*Config) InsertAlertManagerURL

func (c *Config) InsertAlertManagerURL(alertURLs string)

InsertAlertManagerURL inserts alert into config

func (*Config) InsertEnv

func (c *Config) InsertEnv(envKey string, envValue string) error

InsertEnv inserts envKey/envValue into config

func (*Config) InsertScrapes

func (c *Config) InsertScrapes(scrapes map[string]Scrape)

InsertScrapes inserts scrapes into config

func (*Config) InsertScrapesFromDir

func (c *Config) InsertScrapesFromDir(dir string)

InsertScrapesFromDir inserts scrapes from directory

type DNSSDConfig

type DNSSDConfig struct {
	Names           []string `yaml:"names"`
	RefreshInterval string   `yaml:"refresh_interval,omitempty"`
	Type            string   `yaml:"type"`
	Port            int      `yaml:"port"` // Ignored for SRV records
}

DNSSDConfig is the configuration for DNS based service discovery.

type FileStaticConfig

type FileStaticConfig []*TargetGroup

FileStaticConfig configures File-based service discovery

type GlobalConfig

type GlobalConfig struct {
	// How frequently to scrape targets by default.
	ScrapeInterval string `yaml:"scrape_interval,omitempty"`
	// The default timeout when scraping targets.
	ScrapeTimeout string `yaml:"scrape_timeout,omitempty"`
	// How frequently to evaluate rules by default.
	EvaluationInterval string `yaml:"evaluation_interval,omitempty"`
	// The labels to add to any timeseries that this Prometheus instance scrapes.
	ExternalLabels map[string]string `yaml:"external_labels,omitempty"`
}

GlobalConfig configures values that are used across other configuration objects.

type HTTPClientConfig

type HTTPClientConfig struct {
	// The HTTP basic authentication credentials for the targets.
	BasicAuth *BasicAuth `yaml:"basic_auth,omitempty"`
	// The bearer token for the targets.
	BearerToken string `yaml:"bearer_token,omitempty"`
	// The bearer token file for the targets.
	BearerTokenFile string `yaml:"bearer_token_file,omitempty"`
	// HTTP proxy server to use to connect to the targets.
	ProxyURL string `yaml:"proxy_url,omitempty"`
	// TLSConfig to use to connect to the targets.
	TLSConfig TLSConfig `yaml:"tls_config,omitempty"`
}

HTTPClientConfig configures an HTTP client.

type NodeIP

type NodeIP struct {
	Name string `json:"name"`
	Addr string `json:"addr"`
	ID   string `json:"id"`
}

NodeIP defines a node/addr pair

type NodeIPSet

type NodeIPSet map[NodeIP]struct{}

NodeIPSet is a set of NodeIPs

func (NodeIPSet) Add

func (ns NodeIPSet) Add(name, addr, id string)

Add node to set

func (NodeIPSet) Cardinality

func (ns NodeIPSet) Cardinality() int

Cardinality returns the size of set

func (NodeIPSet) Equal

func (ns NodeIPSet) Equal(other NodeIPSet) bool

Equal returns true when NodeIPSets contain the same elements

func (NodeIPSet) MarshalJSON

func (ns NodeIPSet) MarshalJSON() ([]byte, error)

MarshalJSON creates JSON array from NodeIPSet

func (*NodeIPSet) UnmarshalJSON

func (ns *NodeIPSet) UnmarshalJSON(b []byte) error

UnmarshalJSON recreates NodeIPSet from a JSON array

type QueueConfig

type QueueConfig struct {
	// Number of samples to buffer per shard before we start dropping them.
	Capacity int `yaml:"capacity,omitempty"`

	// Max number of shards, i.e. amount of concurrency.
	MaxShards int `yaml:"max_shards,omitempty"`

	// Maximum number of samples per send.
	MaxSamplesPerSend int `yaml:"max_samples_per_send,omitempty"`

	// Maximum time sample will wait in buffer.
	BatchSendDeadline string `yaml:"batch_send_deadline,omitempty"`

	// Max number of times to retry a batch on recoverable errors.
	MaxRetries int `yaml:"max_retries,omitempty"`

	// On recoverable errors, backoff exponentially.
	MinBackoff string `yaml:"min_backoff,omitempty"`
	MaxBackoff string `yaml:"max_backoff,omitempty"`
}

QueueConfig is the configuration for the queue used to write to remote storage.

type RelabelConfig

type RelabelConfig struct {
	// A list of labels from which values are taken and concatenated
	// with the configured separator in order.
	SourceLabels []string `yaml:"source_labels,flow,omitempty"`
	// Separator is the string between concatenated values from the source labels.
	Separator string `yaml:"separator,omitempty"`
	// Regex against which the concatenation is matched.
	Regex string `yaml:"regex,omitempty"`
	// Modulus to take of the hash of concatenated values from the source labels.
	Modulus uint64 `yaml:"modulus,omitempty"`
	// TargetLabel is the label to which the resulting string is written in a replacement.
	// Regexp interpolation is allowed for the replace action.
	TargetLabel string `yaml:"target_label,omitempty"`
	// Replacement is the regex replacement pattern to be used.
	Replacement string `yaml:"replacement,omitempty"`
	// Action is the action to be performed for the relabeling.
	Action string `yaml:"action,omitempty"`
}

RelabelConfig is the configuration for relabeling of target label sets.

type RemoteReadConfig

type RemoteReadConfig struct {
	URL           string `yaml:"url"`
	RemoteTimeout string `yaml:"remote_timeout,omitempty"`
	ReadRecent    bool   `yaml:"read_recent,omitempty"`

	HTTPClientConfig HTTPClientConfig `yaml:",inline"`

	// RequiredMatchers is an optional list of equality matchers which have to
	// be present in a selector to query the remote read endpoint.
	RequiredMatchers map[string]string `yaml:"required_matchers,omitempty"`
}

RemoteReadConfig is the configuration for reading from remote storage.

type RemoteWriteConfig

type RemoteWriteConfig struct {
	URL                 string           `yaml:"url"`
	RemoteTimeout       string           `yaml:"remote_timeout,omitempty"`
	WriteRelabelConfigs []*RelabelConfig `yaml:"write_relabel_configs,omitempty"`

	HTTPClientConfig HTTPClientConfig `yaml:",inline"`
	QueueConfig      QueueConfig      `yaml:"queue_config,omitempty"`
}

RemoteWriteConfig is the configuration for writing to remote storage.

type SDConfig

type SDConfig struct {
	Files           []string `yaml:"files"`
	RefreshInterval string   `yaml:"refresh_interval,omitempty"`
}

SDConfig is the configuration for file based discovery.

type Scrape

type Scrape struct {
	MetricsPath    string             `json:"metricsPath,string,omitempty"`
	ScrapeInterval string             `json:"scrapeInterval,string,omitempty"`
	ScrapeLabels   *map[string]string `json:"scrapeLabels,omitempty"`
	ScrapePort     int                `json:"scrapePort,string,omitempty"`
	ScrapeTimeout  string             `json:"scrapeTimeout,string,omitempty"`
	ScrapeType     string             `json:"scrapeType"`
	ServiceName    string             `json:"serviceName"`
	NodeInfo       NodeIPSet          `json:"nodeInfo,omitempty"`
}

Scrape defines data used to create scraping configuration snippet

type ScrapeConfig

type ScrapeConfig struct {
	// The job name to which the job label is set by default.
	JobName string `yaml:"job_name"`
	// Indicator whether the scraped metrics should remain unmodified.
	HonorLabels bool `yaml:"honor_labels,omitempty"`
	// A set of query parameters with which the target is scraped.
	Params map[string][]string `yaml:"params,omitempty"`
	// How frequently to scrape the targets of this scrape config.
	ScrapeInterval string `yaml:"scrape_interval,omitempty"`
	// The timeout for scraping targets of this config.
	ScrapeTimeout string `yaml:"scrape_timeout,omitempty"`
	// The HTTP resource path on which to fetch metrics from targets.
	MetricsPath string `yaml:"metrics_path,omitempty"`
	// The URL scheme with which to fetch metrics from targets.
	Scheme string `yaml:"scheme,omitempty"`
	// More than this many samples post metric-relabelling will cause the scrape to fail.
	SampleLimit uint `yaml:"sample_limit,omitempty"`

	ServiceDiscoveryConfig ServiceDiscoveryConfig `yaml:",inline"`
	HTTPClientConfig       HTTPClientConfig       `yaml:",inline"`

	// List of target relabel configurations.
	RelabelConfigs []*RelabelConfig `yaml:"relabel_configs,omitempty"`
	// List of metric relabel configurations.
	MetricRelabelConfigs []*RelabelConfig `yaml:"metric_relabel_configs,omitempty"`
}

ScrapeConfig configures a scraping unit for Prometheus.

type ServiceDiscoveryConfig

type ServiceDiscoveryConfig struct {
	// List of labeled target groups for this job.
	StaticConfigs []*TargetGroup `yaml:"static_configs,omitempty"`
	// List of DNS service discovery configurations.
	DNSSDConfigs []*DNSSDConfig `yaml:"dns_sd_configs,omitempty"`
	// List of file service discovery configurations.
	FileSDConfigs []*SDConfig `yaml:"file_sd_configs,omitempty"`
}

ServiceDiscoveryConfig configures lists of different service discovery mechanisms.

type TLSConfig

type TLSConfig struct {
	// The CA cert to use for the targets.
	CAFile string `yaml:"ca_file,omitempty"`
	// The client cert file for the targets.
	CertFile string `yaml:"cert_file,omitempty"`
	// The client key file for the targets.
	KeyFile string `yaml:"key_file,omitempty"`
	// Used to verify the hostname for the targets.
	ServerName string `yaml:"server_name,omitempty"`
	// Disable target certificate validation.
	InsecureSkipVerify bool `yaml:"insecure_skip_verify"`
}

TLSConfig configures the options for TLS connections.

type TargetGroup

type TargetGroup struct {
	// Targets is a list of targets identified by a label set. Each target is
	// uniquely identifiable in the group by its address label.
	Targets []string `yaml:"targets,omitempty" json:"targets,omitempty"`
	// Labels is a set of labels that is common across all targets in the group.
	Labels map[string]string `yaml:"labels,omitempty" json:"labels,omitempty"`

	// Source is an identifier that describes a group of targets.
	Source string `yaml:"source,omitempty" json:"source,omitempty"`
}

TargetGroup is a set of targets with a common label set(production , test, staging etc.).

Jump to

Keyboard shortcuts

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