httpconfig

package
v0.26.0 Latest Latest
Warning

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

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

Documentation

Overview

Package httpconfig is a wrapper around github.com/prometheus/common/config.

Index

Constants

This section is empty.

Variables

View Source
var ThanosUserAgent = fmt.Sprintf("Thanos/%s", version.Version)

Functions

func NewHTTPClient

func NewHTTPClient(cfg ClientConfig, name string) (*http.Client, error)

NewHTTPClient returns a new HTTP client.

func NewRoundTripperFromConfig

func NewRoundTripperFromConfig(cfg config_util.HTTPClientConfig, transportConfig TransportConfig, name string) (http.RoundTripper, error)

NewRoundTripperFromConfig returns a new HTTP RoundTripper configured for the given http.HTTPClientConfig and http.HTTPClientOption.

Types

type AddressProvider

type AddressProvider interface {
	Resolve(context.Context, []string) error
	Addresses() []string
}

type BasicAuth

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

BasicAuth configures basic authentication for HTTP clients.

func (BasicAuth) IsZero

func (b BasicAuth) IsZero() bool

IsZero returns false if basic authentication isn't enabled.

type Client

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

Client represents a client that can send requests to a cluster of HTTP-based endpoints.

func NewClient

func NewClient(logger log.Logger, cfg EndpointsConfig, client *http.Client, provider AddressProvider) (*Client, error)

NewClient returns a new Client.

func (*Client) Discover

func (c *Client) Discover(ctx context.Context)

Discover runs the service to discover endpoints until the given context is done.

func (*Client) Do

func (c *Client) Do(req *http.Request) (*http.Response, error)

Do executes an HTTP request with the underlying HTTP client.

func (*Client) Endpoints

func (c *Client) Endpoints() []*url.URL

Endpoints returns the list of known endpoints.

func (*Client) Resolve

func (c *Client) Resolve(ctx context.Context) error

Resolve refreshes and resolves the list of targets.

type ClientConfig

type ClientConfig struct {
	// The HTTP basic authentication credentials for the targets.
	BasicAuth BasicAuth `yaml:"basic_auth"`
	// The bearer token for the targets.
	BearerToken string `yaml:"bearer_token"`
	// The bearer token file for the targets.
	BearerTokenFile string `yaml:"bearer_token_file"`
	// HTTP proxy server to use to connect to the targets.
	ProxyURL string `yaml:"proxy_url"`
	// TLSConfig to use to connect to the targets.
	TLSConfig TLSConfig `yaml:"tls_config"`
	// TransportConfig for Client transport properties
	TransportConfig TransportConfig `yaml:"transport_config"`
	// ClientMetrics contains metrics that will be used to instrument
	// the client that will be created with this config.
	ClientMetrics *extpromhttp.ClientMetrics `yaml:"-"`
}

ClientConfig configures an HTTP client.

func NewClientConfigFromYAML

func NewClientConfigFromYAML(cfg []byte) (*ClientConfig, error)

type Config

type Config struct {
	HTTPClientConfig ClientConfig    `yaml:"http_config"`
	EndpointsConfig  EndpointsConfig `yaml:",inline"`
}

Config is a structure that allows pointing to various HTTP endpoint, e.g ruler connecting to queriers.

func BuildConfig

func BuildConfig(addrs []string) ([]Config, error)

BuildConfig returns a configuration from a static addresses.

func DefaultConfig

func DefaultConfig() Config

func LoadConfigs

func LoadConfigs(confYAML []byte) ([]Config, error)

LoadConfigs loads a list of Config from YAML data.

func (*Config) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type EndpointsConfig

type EndpointsConfig struct {
	// List of addresses with DNS prefixes.
	StaticAddresses []string `yaml:"static_configs"`
	// List of file  configurations (our FileSD supports different DNS lookups).
	FileSDConfigs []FileSDConfig `yaml:"file_sd_configs"`

	// The URL scheme to use when talking to targets.
	Scheme string `yaml:"scheme"`

	// Path prefix to add in front of the endpoint path.
	PathPrefix string `yaml:"path_prefix"`
}

EndpointsConfig configures a cluster of HTTP endpoints from static addresses and file service discovery.

type FileSDConfig

type FileSDConfig struct {
	Files           []string       `yaml:"files"`
	RefreshInterval model.Duration `yaml:"refresh_interval"`
}

FileSDConfig represents a file service discovery configuration.

type TLSConfig

type TLSConfig struct {
	// The CA cert to use for the targets.
	CAFile string `yaml:"ca_file"`
	// The client cert file for the targets.
	CertFile string `yaml:"cert_file"`
	// The client key file for the targets.
	KeyFile string `yaml:"key_file"`
	// Used to verify the hostname for the targets. See https://tools.ietf.org/html/rfc4366#section-3.1
	ServerName string `yaml:"server_name"`
	// Disable target certificate validation.
	InsecureSkipVerify bool `yaml:"insecure_skip_verify"`
}

TLSConfig configures TLS connections.

type TransportConfig

type TransportConfig struct {
	MaxIdleConns          int   `yaml:"max_idle_conns"`
	MaxIdleConnsPerHost   int   `yaml:"max_idle_conns_per_host"`
	IdleConnTimeout       int64 `yaml:"idle_conn_timeout"`
	ResponseHeaderTimeout int64 `yaml:"response_header_timeout"`
	ExpectContinueTimeout int64 `yaml:"expect_continue_timeout"`
	MaxConnsPerHost       int   `yaml:"max_conns_per_host"`
	DisableCompression    bool  `yaml:"disable_compression"`
	TLSHandshakeTimeout   int64 `yaml:"tls_handshake_timeout"`
}

Transport configures client's transport properties.

Jump to

Keyboard shortcuts

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