discovery

package
v0.0.0-...-c72af41 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultConsulConfig = ConsulConfig{
		TagSeparator:     ",",
		Scheme:           "http",
		Server:           "localhost:8500",
		AllowStale:       true,
		PassingOnly:      false,
		RefreshInterval:  time.Duration(30 * time.Second),
		HTTPClientConfig: promconfig.DefaultHTTPClientConfig,
	}
)
View Source
var DiscoveryFailureTotal = promauto.NewCounter(prometheus.CounterOpts{
	Name: utils.MetricSuffix + "_discovery_failure",
	Help: "Total number of failures during discovery",
})

Functions

This section is empty.

Types

type ConsulConfig

type ConsulConfig struct {
	Server       string            `yaml:"server,omitempty"`
	Token        promconfig.Secret `yaml:"token,omitempty"`
	Datacenter   string            `yaml:"datacenter,omitempty"`
	Namespace    string            `yaml:"namespace,omitempty"`
	TagSeparator string            `yaml:"tag_separator,omitempty"`
	Scheme       string            `yaml:"scheme,omitempty"`
	Username     string            `yaml:"username,omitempty"`
	Password     promconfig.Secret `yaml:"password,omitempty"`

	// See https://www.consul.io/docs/internals/consensus.html#consistency-modes,
	// stale reads are a lot cheaper and are a necessity if you have >5k targets.
	AllowStale bool `yaml:"allow_stale"`
	// By default use blocking queries (https://www.consul.io/api/index.html#blocking-queries)
	// but allow users to throttle updates if necessary. This can be useful because of "bugs" like
	// https://github.com/hashicorp/consul/issues/3712 which cause an un-necessary
	// amount of requests on consul.
	RefreshInterval time.Duration `yaml:"refresh_interval,omitempty"`

	// See https://www.consul.io/api/catalog.html#list-services
	// The list of services for which targets are discovered.
	// Defaults to all services if empty.
	Services []string `yaml:"services,omitempty"`
	// A list of tags used to filter instances inside a service. Services must contain all tags in the list.
	ServiceTags []string `yaml:"tags,omitempty"`
	// Desired node metadata.
	NodeMeta map[string]string `yaml:"node_meta,omitempty"`

	HTTPClientConfig promconfig.HTTPClientConfig `yaml:",inline"`

	// Prober specifics
	PassingOnly bool `yaml:"passing_only,omitempty"`
}

ConsulConfig is the configuration for Consul service discovery.

func (*ConsulConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type ConsulDiscoverer

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

func NewConsulDiscoverer

func NewConsulDiscoverer(logger log.Logger, config ConsulConfig, topologyChan chan topology.ClusterMap,
	topologyBuilderFn func(log.Logger, []ServiceEntry) (topology.ClusterMap, error)) (ConsulDiscoverer, error)

func (*ConsulDiscoverer) Start

func (cd *ConsulDiscoverer) Start() error

func (*ConsulDiscoverer) UpdateTopology

func (cd *ConsulDiscoverer) UpdateTopology() error

type GenericDiscoveryConfig

type GenericDiscoveryConfig struct {
	// Key for the cluster name
	MetaClusterKey string `yaml:"meta_cluster_key,omitempty"`
	// Specific configuration consul
	ConsulConfig ConsulConfig `yaml:"consul_sd_config,omitempty"`
}

Contains the keys/tags to use during the topology generation

func (GenericDiscoveryConfig) GetGenericTopologyBuilder

func (conf GenericDiscoveryConfig) GetGenericTopologyBuilder(
	ClusterFn func(log.Logger, []ServiceEntry) (topology.ProbeableEndpoint, error),
	NodeFn func(log.Logger, ServiceEntry) (topology.ProbeableEndpoint, error)) func(log.Logger, []ServiceEntry) (topology.ClusterMap, error)

func (GenericDiscoveryConfig) GroupNodesByCluster

func (conf GenericDiscoveryConfig) GroupNodesByCluster(logger log.Logger, entries []ServiceEntry) map[string][]ServiceEntry

func (*GenericDiscoveryConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type ServiceEntry

type ServiceEntry struct {
	Service string
	Tags    []string
	Meta    map[string]string
	Port    int
	Address string
}

Jump to

Keyboard shortcuts

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