Documentation ¶
Overview ¶
Package config defines the exporter configuration objects
Index ¶
- Constants
- Variables
- func Decoder(target interface{}, allowUnused bool) (*mapstructure.Decoder, error)
- func DefaultConfigFile() []byte
- func LoadAndSanitizeConfig(configData []byte) (string, error)
- func MapStructureDecodeHookFunc() mapstructure.DecodeHookFuncType
- type AuthConfig
- type BasicAuthConfig
- type BasicServiceConfig
- type BasicServiceSettings
- type Bytes
- type ChallengeResponseConfig
- type ChallengeResponseConfigValidationError
- type ChallengeResponseServiceSettings
- type CollectorConfig
- type Config
- type HTTPRequestAuth
- type HTTPServiceConfig
- type HTTPSettings
- type HTTPStatusRange
- type HTTPVerb
- type HostConfig
- type HostSettings
- type IPNetwork
- type MapStructureDecoder
- type ProxyURL
- type Regexp
- type ServiceSettings
- type TLSCertificatePool
- type URL
- type WebConfig
Constants ¶
const ( TLSCACertsSystem string = "system" ProxyEnvironment string = "environment" ProxyDirect string = "direct" )
const (
TLSCertificatePoolMaxNonFileEntryReturn int = 50
)
Variables ¶
var (
ErrInvalidInputType = errors.New("invalid input type for decoder")
)
var (
ErrInvalidPEMFile = errors.New("PEM file could not be added to certificate pool")
)
var (
ErrMapStructureDecode = errors.New("MapStructureDecode function failed")
)
Functions ¶
func Decoder ¶ added in v0.9.1
func Decoder(target interface{}, allowUnused bool) (*mapstructure.Decoder, error)
Decoder returns the decoder for config maps.
func DefaultConfigFile ¶ added in v0.9.1
func DefaultConfigFile() []byte
DefaultConfigFile returns the default embedded YAML config which sets the poller_defaults.
func LoadAndSanitizeConfig ¶ added in v0.9.1
LoadAndSanitizeConfig is used purely for displaying the config to users. It removes sensitive keys from the config and provides a reserialized YAML view of it.
func MapStructureDecodeHookFunc ¶ added in v0.9.1
func MapStructureDecodeHookFunc() mapstructure.DecodeHookFuncType
MapStructureDecodeHookFunc returns a DecodeHookFunc that applies output to the UnmarshalYAML function, when the target type implements the yaml.Unmarshaller interface.
Types ¶
type AuthConfig ¶ added in v0.9.1
type AuthConfig struct {
BasicAuthCredentials []BasicAuthConfig `mapstructure:"basic_auth,omitempty"`
}
AuthConfig holds the configuration of any authentication put on the exporter interface.
type BasicAuthConfig ¶ added in v0.9.1
type BasicAuthConfig struct { Username string `mapstructure:"username,omitempty"` // Username to accept Password string `mapstructure:"password,omitempty"` // Plain text password to accept }
BasicAuthConfig defines basic authentication credentials to accept on the web interface. If Password is not set, then the credential set is ignored. The password is plaintext.
type BasicServiceConfig ¶
type BasicServiceConfig struct { BasicServiceSettings `mapstructure:",squash"` Name string `mapstructure:"name"` // Name of the service Protocol string `mapstructure:"proto,omitempty"` // TCP or UDP Port uint64 `mapstructure:"port"` // Port number of the service }
A basic network service.
type BasicServiceSettings ¶ added in v0.9.1
type BasicServiceSettings struct { Timeout model.Duration `mapstructure:"timeout,omitempty"` // Number of seconds to wait for response TLSEnable bool `mapstructure:"tls_enable,omitempty"` // The service uses TLS TLSCACerts TLSCertificatePool `mapstructure:"tls_cacerts,omitempty"` // Path to CAfile to verify the service TLS with Proxy string `mapstructure:"proxy,omitempty"` // Proxy configuration for the service ProxyAuth *BasicAuthConfig `mapstructure:"proxy_auth,omitempty"` // Authentication for the proxy service }
BasicServiceSettings are the common settings all services share.
type Bytes ¶
type Bytes []byte
Bytes implements a custom []byte slice implemented TextMarshaller so base64 binary content can be passed n.
func (*Bytes) MarshalText ¶ added in v0.9.1
MarshalText implements the encoding.TextMarshaler interface.
func (*Bytes) UnmarshalText ¶ added in v0.9.1
UnmarshalText implements the encoding.TextUnmarshaler interface.
type ChallengeResponseConfig ¶
type ChallengeResponseConfig struct { BasicServiceConfig `mapstructure:",squash"` ChallengeString *string `mapstructure:"challenge,omitempty"` ChallengeBinary Bytes `mapstructure:"challenge_b64,omitempty"` // Supercedes the string ResponseRegex *Regexp `mapstructure:"response_re,omitempty"` // Regex that must match. It is applied to the binary output. ResponseLiteral *string `mapstructure:"response,omitempty"` // Literal string that must match ResponseBinary Bytes `mapstructure:"response_b64,omitempty"` // Literal bytes which must match - supercedes the string MaxBytes uint64 `mapstructure:"max_bytes,omitempty"` // Maximum number of bytes to read while looking for the response regex. 0 means read until connection closes. }
Similar to a banner check, but first sends the specified data befoe looking for a response.
type ChallengeResponseConfigValidationError ¶
type ChallengeResponseConfigValidationError struct {
ServiceDescription string
}
func (ChallengeResponseConfigValidationError) Error ¶
func (r ChallengeResponseConfigValidationError) Error() string
type ChallengeResponseServiceSettings ¶ added in v0.9.1
type ChallengeResponseServiceSettings struct {
MaxBytes uint64 `mapstructure:"max_bytes,omitempty"` // Maximum number of bytes to read from connection for response searching
}
type CollectorConfig ¶ added in v0.9.1
type CollectorConfig struct {
MaxConnections int `mapstructure:"max_connections,omitempty"`
}
CollectorConfig configures globals limits on the Prometheus metric collectors.
type Config ¶
type Config struct { Web *WebConfig `mapstructure:"web,omitempty"` Collector *CollectorConfig `mapstructure:"collector,omitempty"` HostDefault *HostSettings `mapstructure:"host_defaults,omitempty"` Hosts []*HostConfig `mapstructure:"hosts,omitempty"` }
Config is the top-level config item the.
func LoadFromFile ¶
type HTTPRequestAuth ¶ added in v0.9.1
type HTTPRequestAuth struct {
BasicAuth *BasicAuthConfig `mapstructure:"basic_auth,omitempty"`
}
HTTPRequestAuth represents configuration for sending HTTP requests.
type HTTPServiceConfig ¶
type HTTPServiceConfig struct { ChallengeResponseConfig `mapstructure:",squash"` HTTPSettings `mapstructure:",squash"` Verb HTTPVerb `mapstructure:"verb,omitempty"` // HTTP verb to use URL URL `mapstructure:"url,omitempty"` // HTTP request URL to send RequestAuth HTTPRequestAuth `mapstructure:"auth,omitempty"` // Authentication configuration }
An HTTP speaking service. Does not yet support being a proxy. If TLSEnable is not set but you request HTTPS, it'll fail.
type HTTPSettings ¶ added in v0.9.1
type HTTPSettings struct { HTTPMaxRedirects int64 `mapstructure:"http_max_redirects,omitempty"` EnableRedirects bool `mapstructure:"http_enable_redirects,omitempty"` // If set to true, does not follow redirects Headers []map[string]string `mapstructure:"http_headers,omitempty"` // HTTP request headers to set SuccessStatuses HTTPStatusRange `mapstructure:"http_success_status,omitempty"` // List of status codes indicating success }
HTTPSettings are inheritable HTTP settings.
type HTTPStatusRange ¶
HTTPStatusRange is a range of HTTP status codes which can be specifid in YAML using human-friendly ranging notation.
func (*HTTPStatusRange) FromString ¶ added in v0.9.1
func (hsr *HTTPStatusRange) FromString(ranges string) error
FromString initializes a new HTTPStatusRange from the given string specifier
func (HTTPStatusRange) MarshalText ¶ added in v0.9.1
func (hsr HTTPStatusRange) MarshalText() ([]byte, error)
MarshalText implements the encoding.TextMarshaler.
func (*HTTPStatusRange) UnmarshalText ¶ added in v0.9.1
func (hsr *HTTPStatusRange) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler.
type HTTPVerb ¶ added in v0.9.1
type HTTPVerb string
HTTPVerb wraps string to ensure that verbs are uppercase. It doesn't check if they're valid to allow people to do stupid things with them if they want.
func (*HTTPVerb) MarshalText ¶ added in v0.9.1
MarshalText implements the encoding.TextMarshaler interface.
func (*HTTPVerb) UnmarshalText ¶ added in v0.9.1
UnmarshalText implements the encoding.TextUnmarshaler interface.
type HostConfig ¶
type HostConfig struct { Hostname string `mapstructure:"hostname"` // Host or IP to contact HostSettings `mapstructure:",squash"` BasicChecks []*BasicServiceConfig `mapstructure:"basic_checks,omitempty"` ChallengeResponseChecks []*ChallengeResponseConfig `mapstructure:"challenge_response_checks,omitempty"` HTTPChecks []*HTTPServiceConfig `mapstructure:"http_checks,omitempty"` }
HostConfig defines a host which we want to find service information about. Hosts export DNS checks.
type HostSettings ¶ added in v0.9.1
type HostSettings struct { PollFrequency model.Duration `mapstructure:"poll_frequency,omitempty"` // Frequency to poll this specific host PingDisable bool `mapstructure:"disable_ping,omitempty"` // Disable ping checks for this host PingTimeout model.Duration `mapstructure:"ping_timeout,omitempty"` // Maximum ping timeout PingCount uint64 `mapstructure:"ping_count,omitempty"` // Number of pings to send each poll ServiceDefaults ServiceSettings `mapstructure:"service_defaults,omitempty"` }
HostSettings contains the poller configuration which is applied per hostname (as opposed to per service).
type IPNetwork ¶
IPNetwork is the config wrapper type for an IP Network.
func (IPNetwork) MarshalYAML ¶
func (*IPNetwork) UnmarshalYAML ¶
type MapStructureDecoder ¶ added in v0.9.1
type MapStructureDecoder interface {
MapStructureDecode(interface{}) error
}
MapStructureDecoder is detected by MapStructureDecodeHookFunc to allow a type to decode itself.
type ProxyURL ¶ added in v0.9.1
type ProxyURL string
ProxyURL is a custom type to validate roxy specifications.
func (*ProxyURL) MarshalText ¶ added in v0.9.1
UnmarshalText MarshalText encoding.UnmarshalText.
func (*ProxyURL) UnmarshalText ¶ added in v0.9.1
UnmarshalText implements encoding.UnmarshalText.
type Regexp ¶
Regexp encapsulates a regexp.Regexp and makes it YAML marshallable.
func (*Regexp) MarshalText ¶ added in v0.9.1
MarshalText implements the encoding.TextMarshaler interface.
func (*Regexp) UnmarshalText ¶ added in v0.9.1
UnmarshalText implements the encoding.TextUnmarshaler interface.
type ServiceSettings ¶ added in v0.9.1
type ServiceSettings struct { BasicServiceSettings `mapstructure:",squash"` ChallengeResponseServiceSettings `mapstructure:",squash"` HTTPSettings `mapstructure:",squash"` }
ServiceSettings is used for declaring service defaults.
type TLSCertificatePool ¶ added in v0.9.1
TLSCertificatePool is our custom type for decoding a certificate pool out of YAML.
func (*TLSCertificatePool) MapStructureDecode ¶ added in v0.9.1
func (t *TLSCertificatePool) MapStructureDecode(input interface{}) error
MapStructureDecode implements the yaml.Unmarshaler interface for tls_cacerts.
type URL ¶
URL is a custom URL type that allows validation at configuration load time.
func (*URL) MarshalText ¶ added in v0.9.1
MarshalYAML implements the yaml.Marshaler interface for URLs.
func (*URL) UnmarshalText ¶ added in v0.9.1
UnmarshalYAML implements the yaml.Unmarshaler interface for URLs.
type WebConfig ¶ added in v0.9.1
type WebConfig struct { TelemetryPath string `mapstructure:"telemetry_path,omitempty"` ReadHeaderTimeout model.Duration `mapstructure:"read_header_timeout,omitempty"` Listen []URL `mapstructure:"listen,omitempty"` Auth *AuthConfig `mapstructure:"auth,omitempty"` }
WebConfig holds global configuration for the exporters webserver.