util

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2021 License: Apache-2.0 Imports: 41 Imported by: 72

Documentation

Index

Constants

View Source
const HostnameProviderConfiguration = "configuration"

HostnameProviderConfiguration is the key for the hostname provider associated to datadog.yaml

View Source
const InsertionSortThreshold = 40

InsertionSortThreshold is the slice size after which we should consider using the stdlib sort method instead of the InsertionSort implemented below.

Variables

This section is empty.

Functions

func CopyDir

func CopyDir(src, dst string) error

CopyDir copies directory recursively

func CopyFile

func CopyFile(src, dst string) error

CopyFile atomically copies file path `src“ to file path `dst`.

func CopyFileAll

func CopyFileAll(src, dst string) error

CopyFileAll calls CopyFile, but will create necessary directories for `dst`.

func DetectCloudProvider

func DetectCloudProvider(ctx context.Context)

DetectCloudProvider detects the cloud provider where the agent is running in order: * AWS ECS/Fargate * AWS EC2 * GCE * Azure * Alibaba * Tencent

func EnsureParentDirsExist

func EnsureParentDirsExist(p string) error

EnsureParentDirsExist makes a path immediately available for writing by creating the necessary parent directories.

func Fqdn

func Fqdn(hostname string) string

Fqdn returns the FQDN for the host if any

func GetAgentNetworkMode

func GetAgentNetworkMode(context.Context) (string, error)

GetAgentNetworkMode retrieves from Docker the network mode of the Agent container

func GetAgentUTSMode

func GetAgentUTSMode(context.Context) (containers.UTSMode, error)

GetAgentUTSMode retrieves from Docker the UTS mode of the Agent container

func GetCloudProviderNTPHosts added in v0.9.0

func GetCloudProviderNTPHosts(ctx context.Context) []string

GetCloudProviderNTPHosts detects the cloud provider where the agent is running in order and returns its NTP host name.

func GetFileModTime added in v0.9.0

func GetFileModTime(path string) (time.Time, error)

GetFileModTime gets the modification time

func GetFileSize added in v0.9.0

func GetFileSize(path string) (int64, error)

GetFileSize gets the file size

func GetGoRoutinesDump

func GetGoRoutinesDump() (string, error)

GetGoRoutinesDump returns the stack trace of every Go routine of a running Agent.

func GetHostname

func GetHostname(ctx context.Context) (string, error)

GetHostname retrieves the host name from GetHostnameData

func GetJSONSerializableMap

func GetJSONSerializableMap(m interface{}) interface{}

GetJSONSerializableMap returns a JSON serializable map from a raw map

func GetNetworkID

func GetNetworkID(ctx context.Context) (string, error)

GetNetworkID retrieves the network_id which can be used to improve network connection resolution. This can be configured or detected. The following sources will be queried: * configuration * GCE * EC2

func HTTPHeaders

func HTTPHeaders() map[string]string

HTTPHeaders returns a http headers including various basic information (User-Agent, Content-Type...).

func InsertionSort

func InsertionSort(elements []string)

InsertionSort sorts in-place the given elements, not doing any allocation. It is very efficient for on slices but if memory allocation is not an issue, consider using the stdlib `sort.Sort` method on slices having a size > InsertionSortThreshold. See `pkg/util/sort_benchmarks_note.md` for more details.

func LogVersionHistory

func LogVersionHistory()

LogVersionHistory loads version history file, append new entry if agent version is different than the last entry in the JSON file, trim the file if too many entries then save the file.

func SetupCoreDump added in v0.9.0

func SetupCoreDump() error

SetupCoreDump enables core dumps and sets the core dump size limit based on configuration

func SortUniqInPlace

func SortUniqInPlace(elements []string) []string

SortUniqInPlace sorts and remove duplicates from elements in place The returned slice is a subslice of elements

func Wait added in v0.9.0

func Wait(d time.Duration)

Wait attempts to provide a higher precision sleep. It will sleep for larger periods, and spin-wait for periods under 1us.

Types

type BiMap

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

BiMap provides a bidirectional map of keys and values.

func NewBiMap

func NewBiMap(k, v interface{}) *BiMap

NewBiMap instantiates BiMap

func (*BiMap) AddKV

func (b *BiMap) AddKV(k, v interface{}) error

AddKV adds value `v` to map the map indexed with key `k`.

func (*BiMap) GetKV

func (b *BiMap) GetKV(key interface{}) (interface{}, error)

GetKV gets value provided the key.

func (*BiMap) GetKVBimap

func (b *BiMap) GetKVBimap(key interface{}) (interface{}, error)

GetKVBimap looks for the provided key both for keys and values in the map.

The first occurrence will be returned.

func (*BiMap) GetKVReverse

func (b *BiMap) GetKVReverse(key interface{}) (interface{}, error)

GetKVReverse gets key provided the value.

func (*BiMap) Keys

func (b *BiMap) Keys() []interface{}

Keys returns a slice with all keys in the map.

func (*BiMap) Values

func (b *BiMap) Values() []interface{}

Values returns a slice with all values in the map.

type HostnameData

type HostnameData struct {
	Hostname string
	Provider string
}

HostnameData contains hostname and the hostname provider

func GetHostnameData

func GetHostnameData(ctx context.Context) (HostnameData, error)

GetHostnameData retrieves the host name for the Agent and hostname provider, trying to query these environments/api, in order: * Config (`hostname') * Config (`hostname_file') * GCE * Docker * kubernetes * os * EC2

type NamedPipe

type NamedPipe interface {
	Open() error
	Ready() bool
	Read(b []byte) (int, error)
	Write(b []byte) (int, error)
	Close() error
}

NamedPipe interface to NamedPipes (multi-platform)

func GetPipe

func GetPipe(path string) (NamedPipe, error)

GetPipe returns a named pipe to path

type PollingFunc added in v0.9.0

type PollingFunc func() (value float64)

PollingFunc is polled at specified intervals to collect the value that should be included in the slidingWindow data

type SlidingWindow added in v0.9.0

type SlidingWindow interface {
	// Start validates the parameters of a SlidingWindow object and starts the
	// ticker. Start can only be invoked once on an instance.
	Start(PollingFunc, StatsUpdateFunc) error

	// Stop stops the polling and processing of the data.
	Stop()

	// Average returns an average of all the polled values collected so far over
	// the sliding window range.
	Average() float64

	// WindowSize returns the amount of time that the SlidingWindow will keep
	// the polled values before evicting them.
	WindowSize() time.Duration
}

SlidingWindow is the public API that we expose from the slidingWindow object

func NewSlidingWindow added in v0.9.0

func NewSlidingWindow(windowSize time.Duration, pollingInterval time.Duration) (SlidingWindow, error)

NewSlidingWindow creates a new instance of a slidingWindow

func NewSlidingWindowWithClock added in v0.9.0

func NewSlidingWindowWithClock(windowSize time.Duration, pollingInterval time.Duration, clock clock.Clock) (SlidingWindow, error)

NewSlidingWindowWithClock creates a new instance of a slidingWindow but with a custom clock implementation

type Stat

type Stat struct {
	Val int64
	Ts  time.Time
}

Stat type includes a statted value and its timestamp.

type Stats

type Stats struct {
	Aggregated chan Stat
	// contains filtered or unexported fields
}

Stats type structure enabling statting facilities.

func NewStats

func NewStats(sz uint32) (*Stats, error)

NewStats constructor for Stats

func (*Stats) Process

func (s *Stats) Process()

Process call to start processing statistics

func (*Stats) StatEvent

func (s *Stats) StatEvent(v int64)

StatEvent aggregates an event with value v

func (*Stats) Stop

func (s *Stats) Stop()

Stop call to stop processing statistics. Once stopped, Stats cannot be restarted.

func (*Stats) Update

func (s *Stats) Update(expStat *expvar.Int)

Update update the expvar parameter with the last aggregated value

type StatsTracker added in v0.9.0

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

StatsTracker Keeps track of simple stats over its lifetime and a configurable time range. StatsTracker is designed to be memory efficient by aggregating data into buckets. For example a time frame of 24 hours with a bucketFrame of 1 hour will ensure that only 24 points are ever kept in memory. New data is considered in the stats immediately while old data is removed by dropping expired aggregated buckets.

func NewStatsTracker added in v0.9.0

func NewStatsTracker(timeFrame time.Duration, bucketSize time.Duration) *StatsTracker

NewStatsTracker Creates a new StatsTracker instance

func NewStatsTrackerWithTimeProvider added in v0.9.0

func NewStatsTrackerWithTimeProvider(timeFrame time.Duration, bucketSize time.Duration, timeProvider timeProvider) *StatsTracker

NewStatsTrackerWithTimeProvider Creates a new StatsTracker instance with a time provider closure (mostly for testing)

func (*StatsTracker) Add added in v0.9.0

func (s *StatsTracker) Add(value int64)

Add Records a new value to the stats tracker

func (*StatsTracker) AllTimeAvg added in v0.9.0

func (s *StatsTracker) AllTimeAvg() int64

AllTimeAvg Gets the all time average of values seen so far

func (*StatsTracker) AllTimePeak added in v0.9.0

func (s *StatsTracker) AllTimePeak() int64

AllTimePeak Gets the largest value seen so far

func (*StatsTracker) MovingAvg added in v0.9.0

func (s *StatsTracker) MovingAvg() int64

MovingAvg Gets the moving average of values within the time frame

func (*StatsTracker) MovingPeak added in v0.9.0

func (s *StatsTracker) MovingPeak() int64

MovingPeak Gets the largest value seen within the time frame

type StatsUpdateFunc added in v0.9.0

type StatsUpdateFunc func(SlidingWindow)

StatsUpdateFunc is invoked when the polling function finishes collecting the data and the internal stats are updated.

type WinNamedPipe

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

WinNamedPipe holds the named pipe configuration

func (*WinNamedPipe) Close

func (p *WinNamedPipe) Close() error

Close the underlying named pipe

func (*WinNamedPipe) Open

func (p *WinNamedPipe) Open() error

Open named pipe

func (*WinNamedPipe) Read

func (p *WinNamedPipe) Read(b []byte) (int, error)

Read from the pipe

func (*WinNamedPipe) Ready

func (p *WinNamedPipe) Ready() bool

Ready returns whether the pipe is ready to read and write

func (*WinNamedPipe) Write

func (p *WinNamedPipe) Write(b []byte) (int, error)

Write to the pipe

Directories

Path Synopsis
buf module
Package cachedfetch provides a read-through cache for fetched values.
Package cachedfetch provides a read-through cache for fetched values.
cri
providers/windows
Package windows We need a file in this package as it's referenced by a file built on windows
Package windows We need a file in this package as it's referenced by a file built on windows
image Module
defaultpaths module
ecs
Package ecs provides metadata collection when the Agent runs on the ECS platform
Package ecs provides metadata collection when the Agent runs on the ECS platform
metadata
Package metadata provides clients for Metadata APIs exposed by the ECS agent.
Package metadata provides clients for Metadata APIs exposed by the ECS agent.
Package executable provides information on the executable that started the process and utils to find other executables on the system
Package executable provides information on the executable that started the process and utils to find other executables on the system
fxutil module
go_routines module
validate
Package validate provides hostname validation helpers
Package validate provides hostname validation helpers
log module
setup Module
option module
optional module
pointer module
scrubber module
sort module
startstop module
statstracker module
socket Module
tagger module
uuid module
winutil module

Jump to

Keyboard shortcuts

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