Documentation ¶
Index ¶
- Variables
- func AbsInt(a int) int
- func ComputeDistance(a *coordinate.Coordinate, b *coordinate.Coordinate) float64
- func DurationMinusBuffer(intv time.Duration, buffer time.Duration, jitter int64) time.Duration
- func DurationMinusBufferDomain(intv time.Duration, buffer time.Duration, jitter int64) (min time.Duration, max time.Duration)
- func EnsurePath(path string, dir bool) error
- func GenerateCoordinate(rtt time.Duration) *coordinate.Coordinate
- func GenerateUUID(checkFn UUIDCheckFunc) (string, error)
- func GetSerfTags(serf *serf.Serf) map[string]string
- func InitTelemetry(cfg TelemetryConfig) (*metrics.InmemSink, error)
- func IsErrEOF(err error) bool
- func MaxInt(a, b int) int
- func MinInt(a, b int) int
- func RandomStagger(intv time.Duration) time.Duration
- func RateScaledInterval(rate float64, min time.Duration, n int) time.Duration
- func SeedMathRand()
- func SerfDefaultConfig() *serf.Config
- func StrContains(l []string, s string) bool
- func UpdateSerfTag(serf *serf.Serf, tag, value string)
- func UserAgent() string
- type CoordinateSet
- type StopChannelContext
- type TelemetryConfig
- type UUIDCheckFunc
Constants ¶
This section is empty.
Variables ¶
var ( // SeededSecurely is set to true if a cryptographically secure seed // was used to initialize rand. When false, the start time is used // as a seed. SeededSecurely bool )
Functions ¶
func ComputeDistance ¶ added in v0.8.0
func ComputeDistance(a *coordinate.Coordinate, b *coordinate.Coordinate) float64
ComputeDistance returns the distance between the two network coordinates in seconds. If either of the coordinates is nil then this will return positive infinity.
func DurationMinusBuffer ¶ added in v0.7.0
DurationMinusBuffer returns a duration, minus a buffer and jitter subtracted from the duration. This function is used primarily for servicing Consul TTL Checks in advance of the TTL.
func DurationMinusBufferDomain ¶ added in v0.7.0
func DurationMinusBufferDomain(intv time.Duration, buffer time.Duration, jitter int64) (min time.Duration, max time.Duration)
DurationMinusBufferDomain returns the domain of valid durations from a call to DurationMinusBuffer. This function is used to check user specified input values to DurationMinusBuffer.
func EnsurePath ¶ added in v0.7.3
EnsurePath is used to make sure a path exists
func GenerateCoordinate ¶ added in v0.8.0
func GenerateCoordinate(rtt time.Duration) *coordinate.Coordinate
GenerateCoordinate creates a new coordinate with the given distance from the origin. This should only be used for tests.
func GenerateUUID ¶ added in v1.4.0
func GenerateUUID(checkFn UUIDCheckFunc) (string, error)
func InitTelemetry ¶ added in v1.2.0
func InitTelemetry(cfg TelemetryConfig) (*metrics.InmemSink, error)
InitTelemetry configures go-metrics based on map of telemetry config values as returned by Runtimecfg.Config().
func IsErrEOF ¶ added in v1.0.0
IsErrEOF returns true if we get an EOF error from the socket itself, or an EOF equivalent error from yamux.
func RandomStagger ¶
RandomStagger returns an interval between 0 and the duration
func RateScaledInterval ¶
RateScaledInterval is used to choose an interval to perform an action in order to target an aggregate number of actions per second across the whole cluster.
func SeedMathRand ¶
func SeedMathRand()
SeedMathRand provides weak, but guaranteed seeding, which is better than running with Go's default seed of 1. A call to SeedMathRand() is expected to be called via init(), but never a second time.
func SerfDefaultConfig ¶ added in v1.0.2
SerfDefaultConfig returns a Consul-flavored Serf default configuration, suitable as a basis for a LAN, WAN, segment, or area.
func StrContains ¶
StrContains checks if a list contains a string
func UpdateSerfTag ¶ added in v1.4.0
Types ¶
type CoordinateSet ¶ added in v0.9.3
type CoordinateSet map[string]*coordinate.Coordinate
CoordinateSet holds all the coordinates for a given node, indexed by network segment name.
func (CoordinateSet) Intersect ¶ added in v0.9.3
func (cs CoordinateSet) Intersect(other CoordinateSet) (*coordinate.Coordinate, *coordinate.Coordinate)
Intersect tries to return a pair of coordinates which are compatible with the current set and a given set. We employ some special knowledge about network segments to avoid doing a full intersection, since this is in several hot paths. This might return nil for either coordinate in the output pair if an intersection cannot be found. The ComputeDistance function above is designed to deal with that.
type StopChannelContext ¶ added in v1.4.0
type StopChannelContext struct {
StopCh <-chan struct{}
}
StopChannelContext implements the context.Context interface You provide the channel to select on to determine whether the context should be canceled and other code such as the rate.Limiter will automatically use the channel appropriately
func (*StopChannelContext) Deadline ¶ added in v1.4.0
func (c *StopChannelContext) Deadline() (deadline time.Time, ok bool)
func (*StopChannelContext) Done ¶ added in v1.4.0
func (c *StopChannelContext) Done() <-chan struct{}
func (*StopChannelContext) Err ¶ added in v1.4.0
func (c *StopChannelContext) Err() error
func (*StopChannelContext) Value ¶ added in v1.4.0
func (c *StopChannelContext) Value(key interface{}) interface{}
type TelemetryConfig ¶ added in v1.2.0
type TelemetryConfig struct { // CirconusAPIApp is an app name associated with API token. // Default: "consul" // // hcl: telemetry { circonus_api_app = string } CirconusAPIApp string `json:"circonus_api_app,omitempty" mapstructure:"circonus_api_app"` // CirconusAPIToken is a valid API Token used to create/manage check. If provided, // metric management is enabled. // Default: none // // hcl: telemetry { circonus_api_token = string } CirconusAPIToken string `json:"circonus_api_token,omitempty" mapstructure:"circonus_api_token"` // CirconusAPIURL is the base URL to use for contacting the Circonus API. // Default: "https://api.circonus.com/v2" // // hcl: telemetry { circonus_api_url = string } CirconusAPIURL string `json:"circonus_apiurl,omitempty" mapstructure:"circonus_apiurl"` // CirconusBrokerID is an explicit broker to use when creating a new check. The numeric portion // of broker._cid. If metric management is enabled and neither a Submission URL nor Check ID // is provided, an attempt will be made to search for an existing check using Instance ID and // Search Tag. If one is not found, a new HTTPTRAP check will be created. // Default: use Select Tag if provided, otherwise, a random Enterprise Broker associated // with the specified API token or the default Circonus Broker. // Default: none // // hcl: telemetry { circonus_broker_id = string } CirconusBrokerID string `json:"circonus_broker_id,omitempty" mapstructure:"circonus_broker_id"` // CirconusBrokerSelectTag is a special tag which will be used to select a broker when // a Broker ID is not provided. The best use of this is to as a hint for which broker // should be used based on *where* this particular instance is running. // (e.g. a specific geo location or datacenter, dc:sfo) // Default: none // // hcl: telemetry { circonus_broker_select_tag = string } CirconusBrokerSelectTag string `json:"circonus_broker_select_tag,omitempty" mapstructure:"circonus_broker_select_tag"` // CirconusCheckDisplayName is the name for the check which will be displayed in the Circonus UI. // Default: value of CirconusCheckInstanceID // // hcl: telemetry { circonus_check_display_name = string } CirconusCheckDisplayName string `json:"circonus_check_display_name,omitempty" mapstructure:"circonus_check_display_name"` // CirconusCheckForceMetricActivation will force enabling metrics, as they are encountered, // if the metric already exists and is NOT active. If check management is enabled, the default // behavior is to add new metrics as they are encountered. If the metric already exists in the // check, it will *NOT* be activated. This setting overrides that behavior. // Default: "false" // // hcl: telemetry { circonus_check_metrics_activation = (true|false) CirconusCheckForceMetricActivation string `json:"circonus_check_force_metric_activation,omitempty" mapstructure:"circonus_check_force_metric_activation"` // CirconusCheckID is the check id (not check bundle id) from a previously created // HTTPTRAP check. The numeric portion of the check._cid field. // Default: none // // hcl: telemetry { circonus_check_id = string } CirconusCheckID string `json:"circonus_check_id,omitempty" mapstructure:"circonus_check_id"` // CirconusCheckInstanceID serves to uniquely identify the metrics coming from this "instance". // It can be used to maintain metric continuity with transient or ephemeral instances as // they move around within an infrastructure. // Default: hostname:app // // hcl: telemetry { circonus_check_instance_id = string } CirconusCheckInstanceID string `json:"circonus_check_instance_id,omitempty" mapstructure:"circonus_check_instance_id"` // CirconusCheckSearchTag is a special tag which, when coupled with the instance id, helps to // narrow down the search results when neither a Submission URL or Check ID is provided. // Default: service:app (e.g. service:consul) // // hcl: telemetry { circonus_check_search_tag = string } CirconusCheckSearchTag string `json:"circonus_check_search_tag,omitempty" mapstructure:"circonus_check_search_tag"` // CirconusCheckSearchTag is a special tag which, when coupled with the instance id, helps to // narrow down the search results when neither a Submission URL or Check ID is provided. // Default: service:app (e.g. service:consul) // // hcl: telemetry { circonus_check_tags = string } CirconusCheckTags string `json:"circonus_check_tags,omitempty" mapstructure:"circonus_check_tags"` // CirconusSubmissionInterval is the interval at which metrics are submitted to Circonus. // Default: 10s // // hcl: telemetry { circonus_submission_interval = "duration" } CirconusSubmissionInterval string `json:"circonus_submission_interval,omitempty" mapstructure:"circonus_submission_interval"` // CirconusCheckSubmissionURL is the check.config.submission_url field from a // previously created HTTPTRAP check. // Default: none // // hcl: telemetry { circonus_submission_url = string } CirconusSubmissionURL string `json:"circonus_submission_url,omitempty" mapstructure:"circonus_submission_url"` // DisableHostname will disable hostname prefixing for all metrics. // // hcl: telemetry { disable_hostname = (true|false) DisableHostname bool `json:"disable_hostname,omitempty" mapstructure:"disable_hostname"` // DogStatsdAddr is the address of a dogstatsd instance. If provided, // metrics will be sent to that instance // // hcl: telemetry { dogstatsd_addr = string } DogstatsdAddr string `json:"dogstatsd_addr,omitempty" mapstructure:"dogstatsd_addr"` // DogStatsdTags are the global tags that should be sent with each packet to dogstatsd // It is a list of strings, where each string looks like "my_tag_name:my_tag_value" // // hcl: telemetry { dogstatsd_tags = []string } DogstatsdTags []string `json:"dogstatsd_tags,omitempty" mapstructure:"dogstatsd_tags"` // PrometheusRetentionTime is the retention time for prometheus metrics if greater than 0. // A value of 0 disable Prometheus support. Regarding Prometheus, it is considered a good // practice to put large values here (such as a few days), and at least the interval between // prometheus requests. // // hcl: telemetry { prometheus_retention_time = "duration" } PrometheusRetentionTime time.Duration `json:"prometheus_retention_time,omitempty" mapstructure:"prometheus_retention_time"` // FilterDefault is the default for whether to allow a metric that's not // covered by the filter. // // hcl: telemetry { filter_default = (true|false) } FilterDefault bool `json:"filter_default,omitempty" mapstructure:"filter_default"` // AllowedPrefixes is a list of filter rules to apply for allowing metrics // by prefix. Use the 'prefix_filter' option and prefix rules with '+' to be // included. // // hcl: telemetry { prefix_filter = []string{"+<expr>", "+<expr>", ...} } AllowedPrefixes []string `json:"allowed_prefixes,omitempty" mapstructure:"allowed_prefixes"` // BlockedPrefixes is a list of filter rules to apply for blocking metrics // by prefix. Use the 'prefix_filter' option and prefix rules with '-' to be // excluded. // // hcl: telemetry { prefix_filter = []string{"-<expr>", "-<expr>", ...} } BlockedPrefixes []string `json:"blocked_prefixes,omitempty" mapstructure:"blocked_prefixes"` // MetricsPrefix is the prefix used to write stats values to. // Default: "consul." // // hcl: telemetry { metrics_prefix = string } MetricsPrefix string `json:"metrics_prefix,omitempty" mapstructure:"metrics_prefix"` // StatsdAddr is the address of a statsd instance. If provided, // metrics will be sent to that instance. // // hcl: telemetry { statsd_address = string } StatsdAddr string `json:"statsd_address,omitempty" mapstructure:"statsd_address"` // StatsiteAddr is the address of a statsite instance. If provided, // metrics will be streamed to that instance. // // hcl: telemetry { statsite_address = string } StatsiteAddr string `json:"statsite_address,omitempty" mapstructure:"statsite_address"` }
TelemetryConfig is embedded in config.RuntimeConfig and holds the configuration variables for go-metrics. It is a separate struct to allow it to be exported as JSON and passed to other process like managed connect proxies so they can inherit the agent's telemetry config.
It is in lib package rather than agent/config because we need to use it in the shared InitTelemetry functions below, but we can't import agent/config due to a dependency cycle.
func (*TelemetryConfig) MergeDefaults ¶ added in v1.2.0
func (c *TelemetryConfig) MergeDefaults(defaults *TelemetryConfig)
MergeDefaults copies any non-zero field from defaults into the current config.
type UUIDCheckFunc ¶ added in v1.4.0
UUIDCheckFunc should determine whether the given UUID is actually unique and allowed to be used
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package freeport provides a helper for allocating free ports across multiple processes on the same machine.
|
Package freeport provides a helper for allocating free ports across multiple processes on the same machine. |
Package semaphore implements a simple semaphore that is based on golang.org/x/sync/semaphore but doesn't support weights.
|
Package semaphore implements a simple semaphore that is based on golang.org/x/sync/semaphore but doesn't support weights. |