prometheus

package
v0.88.0 Latest Latest
Warning

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

Go to latest
Published: Jan 9, 2026 License: Apache-2.0 Imports: 48 Imported by: 2

Documentation

Index

Constants

View Source
const (
	StorageDir   = "/prometheus"
	ConfDir      = "/etc/prometheus/config"
	ConfOutDir   = "/etc/prometheus/config_out"
	WebConfigDir = "/etc/prometheus/web_config"

	// TODO: RulesDir should be moved to the server package, since it is not used by the agent.
	// It is here at the moment because promcfg uses it, and moving as is will cause import cycle error.
	// nolint:godoclint
	RulesDir = "/etc/prometheus/rules"

	ConfigFilename         = "prometheus.yaml.gz"
	ConfigEnvsubstFilename = "prometheus.env.yaml"
	DefaultPortName        = "web"
	DefaultLogFileVolume   = "log-file"
	DefaultLogDirectory    = "/var/log/prometheus"

	// DefaultTerminationGracePeriodSeconds defines how long Kubernetes should
	// wait before killing Prometheus on pod termination.
	// Prometheus may take a significant time to shut down due to data
	// checkpointing. By default, the operator allows up to 10 minutes for
	// clean termination.
	DefaultTerminationGracePeriodSeconds = int64(600)
)

Variables

View Source
var (
	// ShardLabelName is the statefulset's label identifying the Prometheus/PrometheusAgent resource's shard.
	ShardLabelName = "operator.prometheus.io/shard"

	// PrometheusNameLabelName is the statefulset's label identifying the Prometheus/PrometheusAgent resource.
	PrometheusNameLabelName = "operator.prometheus.io/name"

	// PrometheusModeLabelName is the statefulset's label identifying whether the owning resource is a Prometheus or PrometheusAgent.
	PrometheusModeLabelName = "operator.prometheus.io/mode"

	ProbeTimeoutSeconds int32 = 3
	LabelPrometheusName       = "prometheus-name"
)

Functions

func AddAPIServerConfigToStore added in v0.67.0

func AddAPIServerConfigToStore(ctx context.Context, store *assets.StoreBuilder, namespace string, config *monitoringv1.APIServerConfig) error

func AddRemoteReadsToStore added in v0.67.0

func AddRemoteReadsToStore(ctx context.Context, store *assets.StoreBuilder, namespace string, rrs []monitoringv1.RemoteReadSpec) error

AddRemoteReadsToStore loads all secret/configmap references from remote-read configs into the store.

func AddScrapeClassesToStore added in v0.72.0

func AddScrapeClassesToStore(ctx context.Context, store *assets.StoreBuilder, namespace string, scrapeClasses []monitoringv1.ScrapeClass) error

func ApplyConfigurationFromPrometheus added in v0.69.1

func ApplyConfigurationFromPrometheus(p *monitoringv1.Prometheus, updateScaleSubresource bool) *monitoringv1ac.PrometheusApplyConfiguration

ApplyConfigurationFromPrometheus updates the Prometheus/PrometheusAgent Status subresource. It can optionally update the scale subresource as well.

func ApplyConfigurationFromPrometheusAgent added in v0.69.1

func ApplyConfigurationFromPrometheusAgent(p *monitoringv1alpha1.PrometheusAgent, updateScaleSubresource bool) *monitoringv1alpha1ac.PrometheusAgentApplyConfiguration

func BuildCommonVolumes added in v0.64.0

func BuildCommonVolumes(p monitoringv1.PrometheusInterface, tlsSecrets *operator.ShardedSecret, statefulSet bool) ([]v1.Volume, []v1.VolumeMount, error)

BuildCommonVolumes returns a set of volumes to be mounted on the spec that are common between Prometheus Server and Agent.

func BuildConfigReloader added in v0.70.0

func BuildConfigReloader(
	p monitoringv1.PrometheusInterface,
	c Config,
	initContainer bool,
	mounts []v1.VolumeMount,
	watchedDirectories []string,
	opts ...operator.ReloaderOption,
) v1.Container

func BuildStatefulSetService added in v0.79.0

func BuildStatefulSetService(name string, selector map[string]string, p monitoringv1.PrometheusInterface, config Config) *v1.Service

BuildStatefulSetService returns a governing service to be used for a statefulset.

func CompareScrapeTimeoutToScrapeInterval added in v0.64.0

func CompareScrapeTimeoutToScrapeInterval(scrapeTimeout, scrapeInterval monitoringv1.Duration) error

CompareScrapeTimeoutToScrapeInterval validates value of scrapeTimeout based on scrapeInterval.

func ConfigSecretName added in v0.64.0

func ConfigSecretName(p monitoringv1.PrometheusInterface) string

func CreateConfigReloaderVolumeMounts added in v0.75.0

func CreateConfigReloaderVolumeMounts() []v1.VolumeMount

func ExpectedStatefulSetShardNames added in v0.64.0

func ExpectedStatefulSetShardNames(
	p monitoringv1.PrometheusInterface,
) []string

func KeyToStatefulSetKey added in v0.64.0

func KeyToStatefulSetKey(p monitoringv1.PrometheusInterface, key string, shard int) string

func LabelSelectorForStatefulSets added in v0.85.0

func LabelSelectorForStatefulSets(mode string) string

LabelSelectorForStatefulSets returns a label selector which selects statefulsets deployed with the server or agent mode.

func MakeConfigurationSecret added in v0.67.0

func MakeConfigurationSecret(p monitoringv1.PrometheusInterface, config Config, data []byte) (*v1.Secret, error)

func MakeContainerPorts added in v0.75.0

func MakeContainerPorts(cpf monitoringv1.CommonPrometheusFields) []v1.ContainerPort

func MakeExpectedLivenessProbe added in v0.75.0

func MakeExpectedLivenessProbe() *v1.Probe

func MakeExpectedReadinessProbe added in v0.75.0

func MakeExpectedReadinessProbe() *v1.Probe

func MakeExpectedStartupProbe added in v0.75.0

func MakeExpectedStartupProbe() *v1.Probe

func MakeK8sTopologySpreadConstraint added in v0.71.0

func MakeK8sTopologySpreadConstraint(selectorLabels map[string]string, tscs []monitoringv1.TopologySpreadConstraint) []v1.TopologySpreadConstraint

func NewLogger added in v0.75.0

func NewLogger() *slog.Logger

func NewTLSAssetSecret added in v0.64.0

func NewTLSAssetSecret(p monitoringv1.PrometheusInterface, config Config) *v1.Secret

func Prefix added in v0.76.0

func PrefixedName added in v0.76.0

func PrefixedName(p monitoringv1.PrometheusInterface) string

func ReplicasNumberPtr added in v0.67.0

func ReplicasNumberPtr(
	p monitoringv1.PrometheusInterface,
) *int32

ReplicasNumberPtr returns a ptr to the normalized number of replicas.

func ShareProcessNamespace added in v0.70.0

func ShareProcessNamespace(p monitoringv1.PrometheusInterface) *bool

func SubPathForStorage added in v0.64.0

func SubPathForStorage(s *monitoringv1.StorageSpec) string

SubPathForStorage is stil here because promcfg still uses it.

func TLSAssetsSecretName added in v0.64.0

func TLSAssetsSecretName(p monitoringv1.PrometheusInterface) string

func UsesDefaultFileVolume added in v0.80.0

func UsesDefaultFileVolume(file string) bool

func VolumeClaimName added in v0.66.0

func VolumeName added in v0.64.0

func WebConfigSecretName added in v0.49.0

func WebConfigSecretName(p monitoringv1.PrometheusInterface) string

Types

type Collector added in v0.64.0

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

func NewCollectorForStores added in v0.64.0

func NewCollectorForStores(s ...cache.Store) *Collector

func (*Collector) Collect added in v0.64.0

func (c *Collector) Collect(ch chan<- prometheus.Metric)

Collect implements the prometheus.Collector interface.

func (*Collector) Describe added in v0.64.0

func (c *Collector) Describe(ch chan<- *prometheus.Desc)

Describe implements the prometheus.Collector interface.

type Config

type Config struct {
	LocalHost                  string
	ReloaderConfig             operator.ContainerConfig
	PrometheusDefaultBaseImage string
	ThanosDefaultBaseImage     string
	Annotations                operator.Map
	Labels                     operator.Map
}

Config defines the operator's parameters for the Prometheus controllers. Whenever the value of one of these parameters is changed, it triggers an update of the managed statefulsets.

type ConfigGenerator added in v0.48.0

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

ConfigGenerator knows how to generate a Prometheus configuration which is compatible with a given Prometheus version.

func NewConfigGenerator added in v0.23.0

func NewConfigGenerator(
	logger *slog.Logger,
	p monitoringv1.PrometheusInterface,
	opts ...ConfigGeneratorOption,
) (*ConfigGenerator, error)

NewConfigGenerator creates a ConfigGenerator for the provided Prometheus resource.

func (*ConfigGenerator) AddHonorLabels added in v0.55.0

func (cg *ConfigGenerator) AddHonorLabels(cfg yaml.MapSlice, honorLabels bool) yaml.MapSlice

AddHonorLabels adds the honor_labels field into scrape configurations. if OverrideHonorLabels is true then honor_labels is always false.

func (*ConfigGenerator) AddHonorTimestamps added in v0.55.0

func (cg *ConfigGenerator) AddHonorTimestamps(cfg yaml.MapSlice, userHonorTimestamps *bool) yaml.MapSlice

AddHonorTimestamps adds the honor_timestamps field into scrape configurations. honor_timestamps is false only when the user specified it or when the global override applies. For backwards compatibility with Prometheus <2.9.0 we don't set honor_timestamps.

func (*ConfigGenerator) AddLimitsToYAML added in v0.55.0

func (cg *ConfigGenerator) AddLimitsToYAML(cfg yaml.MapSlice, k limitKey, limit *uint64, enforcedLimit *uint64) yaml.MapSlice

AddLimitsToYAML appends the given limit key to the configuration if supported by the Prometheus version.

func (*ConfigGenerator) AddRemoteWriteToStore added in v0.87.0

func (cg *ConfigGenerator) AddRemoteWriteToStore(ctx context.Context, store *assets.StoreBuilder, namespace string, rws []monitoringv1.RemoteWriteSpec) error

AddRemoteWriteToStore validates the remote-write configurations and loads all secret/configmap references into the store.

func (*ConfigGenerator) AddTrackTimestampsStaleness added in v0.70.0

func (cg *ConfigGenerator) AddTrackTimestampsStaleness(cfg yaml.MapSlice, trackTimestampsStaleness *bool) yaml.MapSlice

AddTrackTimestampsStaleness adds the track_timestamps_staleness field into scrape configurations. For backwards compatibility with Prometheus <2.48.0 we don't set track_timestamps_staleness.

func (*ConfigGenerator) AppendCommandlineArgument added in v0.62.0

func (cg *ConfigGenerator) AppendCommandlineArgument(m []monitoringv1.Argument, argument monitoringv1.Argument) []monitoringv1.Argument

AppendCommandlineArgument appends the name/v argument to the given []monitoringv1.Argument and returns the updated slice.

func (*ConfigGenerator) AppendMapItem added in v0.55.0

func (cg *ConfigGenerator) AppendMapItem(m yaml.MapSlice, k string, v any) yaml.MapSlice

AppendMapItem appends the k/v item to the given yaml.MapSlice and returns the updated slice.

func (*ConfigGenerator) BuildCommonPrometheusArgs added in v0.78.0

func (cg *ConfigGenerator) BuildCommonPrometheusArgs() []monitoringv1.Argument

BuildCommonPrometheusArgs builds a slice of arguments that are common between Prometheus Server and Agent.

func (*ConfigGenerator) BuildPodMetadata added in v0.78.0

func (cg *ConfigGenerator) BuildPodMetadata() (map[string]string, map[string]string)

func (*ConfigGenerator) BuildProbes added in v0.78.0

func (cg *ConfigGenerator) BuildProbes() (*v1.Probe, *v1.Probe, *v1.Probe)

BuildProbes returns a tuple of 3 probe definitions: 1. startup probe 2. readiness probe 3. liveness probe

The /-/ready handler returns OK only after the TSDB initialization has completed. The WAL replay can take a significant time for large setups hence we enable the startup probe with a generous failure threshold (15 minutes) to ensure that the readiness probe only comes into effect once Prometheus is effectively ready. We don't want to use the /-/healthy handler here because it returns OK as soon as the web server is started (irrespective of the WAL replay).

func (*ConfigGenerator) GenerateAgentConfiguration added in v0.64.0

func (cg *ConfigGenerator) GenerateAgentConfiguration(
	sMons map[string]*monitoringv1.ServiceMonitor,
	pMons map[string]*monitoringv1.PodMonitor,
	probes map[string]*monitoringv1.Probe,
	sCons map[string]*monitoringv1alpha1.ScrapeConfig,
	store *assets.StoreBuilder,
	additionalScrapeConfigs []byte,
) ([]byte, error)

GenerateAgentConfiguration creates a serialized YAML representation of a Prometheus Agent configuration using the provided resources.

func (*ConfigGenerator) GenerateRemoteWriteConfig added in v0.82.0

func (cg *ConfigGenerator) GenerateRemoteWriteConfig(rws []monitoringv1.RemoteWriteSpec, s assets.StoreGetter) yaml.MapItem

func (*ConfigGenerator) GenerateServerConfiguration added in v0.64.0

func (cg *ConfigGenerator) GenerateServerConfiguration(
	p *monitoringv1.Prometheus,
	sMons map[string]*monitoringv1.ServiceMonitor,
	pMons map[string]*monitoringv1.PodMonitor,
	probes map[string]*monitoringv1.Probe,
	sCons map[string]*monitoringv1alpha1.ScrapeConfig,
	store *assets.StoreBuilder,
	additionalScrapeConfigs []byte,
	additionalAlertRelabelConfigs []byte,
	additionalAlertManagerConfigs []byte,
	ruleConfigMapNames []string,
) ([]byte, error)

GenerateServerConfiguration creates a serialized YAML representation of a Prometheus Server configuration using the provided resources.

func (*ConfigGenerator) IsCompatible added in v0.62.0

func (cg *ConfigGenerator) IsCompatible() bool

IsCompatible return true or false depending if the version being used is compatible.

func (*ConfigGenerator) Version added in v0.78.0

func (cg *ConfigGenerator) Version() semver.Version

Version returns the currently configured Prometheus version.

func (*ConfigGenerator) Warn added in v0.62.0

func (cg *ConfigGenerator) Warn(field string)

Warn logs a warning.

func (*ConfigGenerator) WithKeyVals added in v0.55.0

func (cg *ConfigGenerator) WithKeyVals(keyvals ...any) *ConfigGenerator

WithKeyVals returns a new ConfigGenerator with the same characteristics as the current object, expect that the keyvals are appended to the existing logger.

func (*ConfigGenerator) WithMaximumVersion added in v0.55.0

func (cg *ConfigGenerator) WithMaximumVersion(version string) *ConfigGenerator

WithMaximumVersion returns a new ConfigGenerator that does nothing (except logging a warning message) if the Prometheus version is greater than or equal to the given version. The method panics if version isn't a valid SemVer value.

func (*ConfigGenerator) WithMinimumVersion added in v0.55.0

func (cg *ConfigGenerator) WithMinimumVersion(version string) *ConfigGenerator

WithMinimumVersion returns a new ConfigGenerator that does nothing (except logging a warning message) if the Prometheus version is lesser than the given version. The method panics if version isn't a valid SemVer value.

type ConfigGeneratorOption added in v0.77.0

type ConfigGeneratorOption func(*ConfigGenerator)

func WithDaemonSet added in v0.77.0

func WithDaemonSet() ConfigGeneratorOption

func WithEndpointSliceSupport added in v0.77.0

func WithEndpointSliceSupport() ConfigGeneratorOption

func WithInlineTLSConfig added in v0.81.0

func WithInlineTLSConfig() ConfigGeneratorOption

func WithPrometheusTopologySharding added in v0.80.0

func WithPrometheusTopologySharding() ConfigGeneratorOption

func WithoutVersionCheck added in v0.82.0

func WithoutVersionCheck() ConfigGeneratorOption

WithoutVersionCheck returns a ConfigGenerator which doesn't perform any version check.

type ListAllByNamespaceFn added in v0.65.1

type ListAllByNamespaceFn func(namespace string, selector labels.Selector, appendFn cache.AppendFunc) error

type ResourceSelector added in v0.64.0

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

ResourceSelector knows how to select and verify scrape configuration resources that are matched by a Prometheus or PrometheusAgent object.

func NewResourceSelector added in v0.64.0

func NewResourceSelector(
	l *slog.Logger,
	p monitoringv1.PrometheusInterface,
	store *assets.StoreBuilder,
	namespaceInformers cache.SharedIndexInformer,
	metrics *operator.Metrics,
	eventRecorder *operator.EventRecorder,
) (*ResourceSelector, error)

func (*ResourceSelector) SelectPodMonitors added in v0.64.0

SelectPodMonitors returns the PodMonitors that match the selectors in the Prometheus custom resource. This function also populates authentication stores and performs validations against scrape intervals and relabel configs.

func (*ResourceSelector) SelectProbes added in v0.64.0

SelectProbes returns the probes matching the selectors specified in the Prometheus CR. This function also populates authentication stores and performs validations against scrape intervals, relabel configs and Probe URLs.

func (*ResourceSelector) SelectScrapeConfigs added in v0.65.0

SelectScrapeConfigs returns the ScrapeConfigs which match the selectors in the Prometheus CR and filters them returning all the configuration.

func (*ResourceSelector) SelectServiceMonitors added in v0.64.0

SelectServiceMonitors returns the ServiceMonitors that match the selectors in the Prometheus custom resource. This function also populates authentication stores and performs validations against scrape intervals and relabel configs.

func (*ResourceSelector) ValidateRelabelConfigs added in v0.76.0

func (rs *ResourceSelector) ValidateRelabelConfigs(rcs []monitoringv1.RelabelConfig) error

type StatusReporter added in v0.66.0

type StatusReporter struct {
	Kclient         kubernetes.Interface
	Reconciliations *operator.ReconciliationTracker
	SsetInfs        *informers.ForResource
	Rr              *operator.ResourceReconciler
}

func (*StatusReporter) Process added in v0.66.0

Process will determine the Status of a Prometheus resource (server or agent) depending on its current state in the cluster.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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