Documentation ¶
Index ¶
- Constants
- func CreateAndRegisterSDMetrics(reg prometheus.Registerer) (map[string]DiscovererMetrics, error)
- func HTTPClientOptions(opts ...config.HTTPClientOption) func(*Manager)
- func MarshalYAMLWithInlineConfigs(in interface{}) (interface{}, error)
- func Name(n string) func(*Manager)
- func RegisterConfig(config Config)
- func RegisterK8sClientMetricsWithPrometheus(registerer prometheus.Registerer) error
- func RegisterSDMetrics(registerer prometheus.Registerer, rmm RefreshMetricsManager) (map[string]DiscovererMetrics, error)
- func UnmarshalYAMLWithInlineConfigs(out interface{}, unmarshal func(interface{}) error) error
- type Config
- type Configs
- type Discoverer
- type DiscovererMetrics
- type DiscovererOptions
- type Manager
- func (m *Manager) ApplyConfig(cfg map[string]Configs) error
- func (m *Manager) Providers() []*Provider
- func (m *Manager) Run() error
- func (m *Manager) StartCustomProvider(ctx context.Context, name string, worker Discoverer)
- func (m *Manager) SyncCh() <-chan map[string][]*targetgroup.Group
- func (m *Manager) UnregisterMetrics()
- type MetricRegisterer
- type Metrics
- type NoopDiscovererMetrics
- type Provider
- type RefreshMetrics
- type RefreshMetricsInstantiator
- type RefreshMetricsManager
- type RefreshMetricsVecs
- type StaticConfig
- type StaticProvider
Constants ¶
const (
KubernetesMetricsNamespace = "prometheus_sd_kubernetes"
)
Variables ¶
This section is empty.
Functions ¶
func CreateAndRegisterSDMetrics ¶
func CreateAndRegisterSDMetrics(reg prometheus.Registerer) (map[string]DiscovererMetrics, error)
Registers the metrics needed for SD mechanisms. Does not register the metrics for the Discovery Manager. TODO(ptodev): Add ability to unregister the metrics?
func HTTPClientOptions ¶
func HTTPClientOptions(opts ...config.HTTPClientOption) func(*Manager)
HTTPClientOptions sets the list of HTTP client options to expose to Discoverers. It is up to Discoverers to choose to use the options provided.
func MarshalYAMLWithInlineConfigs ¶
func MarshalYAMLWithInlineConfigs(in interface{}) (interface{}, error)
MarshalYAMLWithInlineConfigs helps implement yaml.Marshal for structs that have a Configs field that should be inlined.
func RegisterConfig ¶
func RegisterConfig(config Config)
RegisterConfig registers the given Config type for YAML marshaling and unmarshaling.
func RegisterK8sClientMetricsWithPrometheus ¶
func RegisterK8sClientMetricsWithPrometheus(registerer prometheus.Registerer) error
func RegisterSDMetrics ¶
func RegisterSDMetrics(registerer prometheus.Registerer, rmm RefreshMetricsManager) (map[string]DiscovererMetrics, error)
RegisterSDMetrics registers the metrics used by service discovery mechanisms. RegisterSDMetrics should be called only once during the lifetime of the Prometheus process. There is no need for the Prometheus process to unregister the metrics.
func UnmarshalYAMLWithInlineConfigs ¶
UnmarshalYAMLWithInlineConfigs helps implement yaml.Unmarshal for structs that have a Configs field that should be inlined.
Types ¶
type Config ¶
type Config interface { // Name returns the name of the discovery mechanism. Name() string // NewDiscoverer returns a Discoverer for the Config // with the given DiscovererOptions. NewDiscoverer(DiscovererOptions) (Discoverer, error) // NewDiscovererMetrics returns the metrics used by the service discovery. NewDiscovererMetrics(prometheus.Registerer, RefreshMetricsInstantiator) DiscovererMetrics }
A Config provides the configuration and constructor for a Discoverer.
type Configs ¶
type Configs []Config
Configs is a slice of Config values that uses custom YAML marshaling and unmarshaling to represent itself as a mapping of the Config values grouped by their types.
func (Configs) MarshalYAML ¶
MarshalYAML implements yaml.Marshaler.
func (*Configs) SetDirectory ¶
SetDirectory joins any relative file paths with dir.
func (*Configs) UnmarshalYAML ¶
UnmarshalYAML implements yaml.Unmarshaler.
type Discoverer ¶
type Discoverer interface { // Run hands a channel to the discovery provider (Consul, DNS, etc.) through which // it can send updated target groups. It must return when the context is canceled. // It should not close the update channel on returning. Run(ctx context.Context, up chan<- []*targetgroup.Group) }
Discoverer provides information about target groups. It maintains a set of sources from which TargetGroups can originate. Whenever a discovery provider detects a potential change, it sends the TargetGroup through its channel.
Discoverer does not know if an actual change happened. It does guarantee that it sends the new TargetGroup whenever a change happens.
Discoverers should initially send a full set of all discoverable TargetGroups.
type DiscovererMetrics ¶
type DiscovererMetrics interface { Register() error Unregister() }
Internal metrics of service discovery mechanisms.
type DiscovererOptions ¶
type DiscovererOptions struct { Logger log.Logger Metrics DiscovererMetrics // Extra HTTP client options to expose to Discoverers. This field may be // ignored; Discoverer implementations must opt-in to reading it. HTTPClientOptions []config.HTTPClientOption }
DiscovererOptions provides options for a Discoverer.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager maintains a set of discovery providers and sends each update to a map channel. Targets are grouped by the target set name.
func NewManager ¶
func NewManager(ctx context.Context, logger log.Logger, registerer prometheus.Registerer, sdMetrics map[string]DiscovererMetrics, options ...func(*Manager)) *Manager
NewManager is the Discovery Manager constructor.
func (*Manager) ApplyConfig ¶
ApplyConfig checks if discovery provider with supplied config is already running and keeps them as is. Remaining providers are then stopped and new required providers are started using the provided config.
func (*Manager) StartCustomProvider ¶
func (m *Manager) StartCustomProvider(ctx context.Context, name string, worker Discoverer)
StartCustomProvider is used for sdtool. Only use this if you know what you're doing.
func (*Manager) SyncCh ¶
func (m *Manager) SyncCh() <-chan map[string][]*targetgroup.Group
SyncCh returns a read only channel used by all the clients to receive target updates.
func (*Manager) UnregisterMetrics ¶
func (m *Manager) UnregisterMetrics()
UnregisterMetrics unregisters manager metrics. It does not unregister service discovery or refresh metrics, whose lifecycle is managed independent of the discovery Manager.
type MetricRegisterer ¶
type MetricRegisterer interface { RegisterMetrics() error UnregisterMetrics() }
A utility to be used by implementations of discovery.Discoverer which need to manage the lifetime of their metrics.
func NewMetricRegisterer ¶
func NewMetricRegisterer(reg prometheus.Registerer, metrics []prometheus.Collector) MetricRegisterer
Creates an instance of a MetricRegisterer. Typically called inside the implementation of the NewDiscoverer() method.
type Metrics ¶
type Metrics struct { FailedConfigs prometheus.Gauge DiscoveredTargets *prometheus.GaugeVec ReceivedUpdates prometheus.Counter DelayedUpdates prometheus.Counter SentUpdates prometheus.Counter }
Metrics to be used with a discovery manager.
func NewManagerMetrics ¶
func NewManagerMetrics(registerer prometheus.Registerer, sdManagerName string) (*Metrics, error)
func (*Metrics) Unregister ¶
func (m *Metrics) Unregister(registerer prometheus.Registerer)
Unregister unregisters all metrics.
type NoopDiscovererMetrics ¶
type NoopDiscovererMetrics struct{}
Create a dummy metrics struct, because this SD doesn't have any metrics.
func (*NoopDiscovererMetrics) Register ¶
func (*NoopDiscovererMetrics) Register() error
Register implements discovery.DiscovererMetrics.
func (*NoopDiscovererMetrics) Unregister ¶
func (*NoopDiscovererMetrics) Unregister()
Unregister implements discovery.DiscovererMetrics.
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider holds a Discoverer instance, its configuration, cancel func and its subscribers.
func (*Provider) Discoverer ¶
func (p *Provider) Discoverer() Discoverer
Discoverer return the Discoverer of the provider.
type RefreshMetrics ¶
type RefreshMetrics struct { Failures prometheus.Counter Duration prometheus.Observer }
Metrics used by the "refresh" package. We define them here in the "discovery" package in order to avoid a cyclic dependency between "discovery" and "refresh".
type RefreshMetricsInstantiator ¶
type RefreshMetricsInstantiator interface {
Instantiate(mech string) *RefreshMetrics
}
Instantiate the metrics used by the "refresh" package.
type RefreshMetricsManager ¶
type RefreshMetricsManager interface { DiscovererMetrics RefreshMetricsInstantiator }
An interface for registering, unregistering, and instantiating metrics for the "refresh" package. Refresh metrics are registered and unregistered outside of the service discovery mechanism. This is so that the same metrics can be reused across different service discovery mechanisms. To manage refresh metrics inside the SD mechanism, we'd need to use const labels which are specific to that SD. However, doing so would also expose too many unused metrics on the Prometheus /metrics endpoint.
func NewRefreshMetrics ¶
func NewRefreshMetrics(reg prometheus.Registerer) RefreshMetricsManager
type RefreshMetricsVecs ¶
type RefreshMetricsVecs struct {
// contains filtered or unexported fields
}
Metric vectors for the "refresh" package. We define them here in the "discovery" package in order to avoid a cyclic dependency between "discovery" and "refresh".
func (*RefreshMetricsVecs) Instantiate ¶
func (m *RefreshMetricsVecs) Instantiate(mech string) *RefreshMetrics
Instantiate returns metrics out of metric vectors.
func (*RefreshMetricsVecs) Register ¶
func (m *RefreshMetricsVecs) Register() error
Register implements discovery.DiscovererMetrics.
func (*RefreshMetricsVecs) Unregister ¶
func (m *RefreshMetricsVecs) Unregister()
Unregister implements discovery.DiscovererMetrics.
type StaticConfig ¶
type StaticConfig []*targetgroup.Group
A StaticConfig is a Config that provides a static list of targets.
func (StaticConfig) Name ¶
func (StaticConfig) Name() string
Name returns the name of the service discovery mechanism.
func (StaticConfig) NewDiscoverer ¶
func (c StaticConfig) NewDiscoverer(DiscovererOptions) (Discoverer, error)
NewDiscoverer returns a Discoverer for the Config.
func (StaticConfig) NewDiscovererMetrics ¶
func (c StaticConfig) NewDiscovererMetrics(prometheus.Registerer, RefreshMetricsInstantiator) DiscovererMetrics
No metrics are needed for this service discovery mechanism.
type StaticProvider ¶
type StaticProvider struct {
TargetGroups []*targetgroup.Group
}
StaticProvider holds a list of target groups that never change.
func (*StaticProvider) Run ¶
func (sd *StaticProvider) Run(ctx context.Context, ch chan<- []*targetgroup.Group)
Run implements the Worker interface.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package install has the side-effect of registering all builtin service discovery config types.
|
Package install has the side-effect of registering all builtin service discovery config types. |