Documentation ¶
Index ¶
- Constants
- func AggregationTimeout() time.Duration
- func CompileProcessingRules(rules []*ProcessingRule) error
- func ContainsWildcard(path string) bool
- func ExpectedTagsDuration() time.Duration
- func IsExpectedTagsSet() bool
- func TaggerWarmupDuration() time.Duration
- func ValidateProcessingRules(rules []*ProcessingRule) error
- type ChannelMessage
- type CountInfo
- type Endpoint
- type Endpoints
- func BuildEndpoints(httpConnectivity HTTPConnectivity) (*Endpoints, error)
- func BuildEndpointsWithConfig(logsConfig *LogsConfigKeys, endpointPrefix string, ...) (*Endpoints, error)
- func BuildHTTPEndpoints() (*Endpoints, error)
- func BuildHTTPEndpointsWithConfig(logsConfig *LogsConfigKeys, endpointPrefix string) (*Endpoints, error)
- func BuildServerlessEndpoints() (*Endpoints, error)
- func NewEndpoints(main Endpoint, additionals []Endpoint, useProto bool, useHTTP bool) *Endpoints
- func NewEndpointsWithBatchSettings(main Endpoint, additionals []Endpoint, useProto bool, useHTTP bool, ...) *Endpoints
- type HTTPConnectivity
- type InfoProvider
- type Lambda
- type LogSource
- func (s *LogSource) AddInput(input string)
- func (s *LogSource) GetInfo(key string) InfoProvider
- func (s *LogSource) GetInfoStatus() map[string][]string
- func (s *LogSource) GetInputs() []string
- func (s *LogSource) GetSourceType() SourceType
- func (s *LogSource) RegisterInfo(i InfoProvider)
- func (s *LogSource) RemoveInput(input string)
- func (s *LogSource) SetSourceType(sourceType SourceType)
- type LogSources
- type LogStatus
- type LogsConfig
- type LogsConfigKeys
- type MappedInfo
- type Messages
- type ProcessingRule
- type SourceType
- type TailingMode
Constants ¶
const ( ChanSize = 100 NumberOfPipelines = 4 )
Pipeline constraints
const ( TCPType = "tcp" UDPType = "udp" FileType = "file" DockerType = "docker" JournaldType = "journald" WindowsEventType = "windows_event" SnmpTrapsType = "snmp_traps" StringChannelType = "string_channel" // UTF16BE for UTF-16 Big endian encoding UTF16BE string = "utf-16-be" // UTF16LE for UTF-16 Little Endian encoding UTF16LE string = "utf-16-le" )
Logs source types
const ( ForceBeginning = iota ForceEnd Beginning End )
Tailing Modes
const ( ExcludeAtMatch = "exclude_at_match" IncludeAtMatch = "include_at_match" MaskSequences = "mask_sequences" MultiLine = "multi_line" )
Processing rule types
const ContainerCollectAll = "container_collect_all"
ContainerCollectAll is the name of the docker integration that collect logs from all containers
const (
// DateFormat is the default date format.
DateFormat = "2006-01-02T15:04:05.000000000Z"
)
const SnmpTraps = "snmp_traps"
SnmpTraps is the name of the integration that collects logs from SNMP traps received by the Agent
Variables ¶
This section is empty.
Functions ¶
func AggregationTimeout ¶ added in v0.9.0
AggregationTimeout is used when performing aggregation operations
func CompileProcessingRules ¶
func CompileProcessingRules(rules []*ProcessingRule) error
CompileProcessingRules compiles all processing rule regular expressions.
func ContainsWildcard ¶
ContainsWildcard returns true if the path contains any wildcard character
func ExpectedTagsDuration ¶ added in v0.9.0
ExpectedTagsDuration returns a duration of the time expected tags will be submitted for.
func IsExpectedTagsSet ¶ added in v0.9.0
func IsExpectedTagsSet() bool
IsExpectedTagsSet returns boolean showing if expected tags feature is enabled.
func TaggerWarmupDuration ¶
TaggerWarmupDuration is used to configure the tag providers
func ValidateProcessingRules ¶
func ValidateProcessingRules(rules []*ProcessingRule) error
ValidateProcessingRules validates the rules and raises an error if one is misconfigured. Each processing rule must have: - a valid name - a valid type - a valid pattern that compiles
Types ¶
type ChannelMessage ¶ added in v0.9.0
type ChannelMessage struct { Content []byte // Optional. Must be UTC. If not provided, time.Now().UTC() will be used // Used in the Serverless Agent Timestamp time.Time // Optional. // Used in the Serverless Agent Lambda *Lambda }
ChannelMessage represents a log line sent to datadog, with its metadata
func NewChannelMessageFromLambda ¶ added in v0.9.0
func NewChannelMessageFromLambda(content []byte, utcTime time.Time, ARN, reqID, functionName string) *ChannelMessage
NewChannelMessageFromLambda construts a message with content and with the given timestamp and Lambda metadata
type CountInfo ¶ added in v0.9.0
type CountInfo struct {
// contains filtered or unexported fields
}
CountInfo records a simple count
func NewCountInfo ¶ added in v0.9.0
NewCountInfo creates a new CountInfo instance
type Endpoint ¶
type Endpoint struct { APIKey string `mapstructure:"api_key" json:"api_key"` Host string Port int UseSSL bool UseCompression bool `mapstructure:"use_compression" json:"use_compression"` CompressionLevel int `mapstructure:"compression_level" json:"compression_level"` ProxyAddress string ConnectionResetInterval time.Duration BackoffFactor float64 BackoffBase float64 BackoffMax float64 RecoveryInterval int RecoveryReset bool }
Endpoint holds all the organization and network parameters to send logs to Datadog.
type Endpoints ¶
type Endpoints struct { Main Endpoint Additionals []Endpoint UseProto bool UseHTTP bool BatchWait time.Duration BatchMaxConcurrentSend int BatchMaxSize int BatchMaxContentSize int }
Endpoints holds the main endpoint and additional ones to dualship logs.
func BuildEndpoints ¶
func BuildEndpoints(httpConnectivity HTTPConnectivity) (*Endpoints, error)
BuildEndpoints returns the endpoints to send logs.
func BuildEndpointsWithConfig ¶ added in v0.9.0
func BuildEndpointsWithConfig(logsConfig *LogsConfigKeys, endpointPrefix string, httpConnectivity HTTPConnectivity) (*Endpoints, error)
BuildEndpointsWithConfig returns the endpoints to send logs.
func BuildHTTPEndpoints ¶
BuildHTTPEndpoints returns the HTTP endpoints to send logs to.
func BuildHTTPEndpointsWithConfig ¶ added in v0.9.0
func BuildHTTPEndpointsWithConfig(logsConfig *LogsConfigKeys, endpointPrefix string) (*Endpoints, error)
BuildHTTPEndpointsWithConfig uses two arguments that instructs it how to access configuration parameters, then returns the HTTP endpoints to send logs to. This function is able to default to the 'classic' BuildHTTPEndpoints() w ldHTTPEndpointsWithConfigdefault variables logsConfigDefaultKeys and httpEndpointPrefix
func BuildServerlessEndpoints ¶ added in v0.9.0
BuildServerlessEndpoints returns the endpoints to send logs for the Serverless agent.
func NewEndpoints ¶
NewEndpoints returns a new endpoints composite with default batching settings
func NewEndpointsWithBatchSettings ¶ added in v0.9.0
func NewEndpointsWithBatchSettings(main Endpoint, additionals []Endpoint, useProto bool, useHTTP bool, batchWait time.Duration, batchMaxConcurrentSend int, batchMaxSize int, batchMaxContentSize int) *Endpoints
NewEndpointsWithBatchSettings returns a new endpoints composite with non-default batching settings specified
type HTTPConnectivity ¶
type HTTPConnectivity bool
HTTPConnectivity is the status of the HTTP connectivity
var ( // HTTPConnectivitySuccess is the status for successful HTTP connectivity HTTPConnectivitySuccess HTTPConnectivity = true // HTTPConnectivityFailure is the status for failed HTTP connectivity HTTPConnectivityFailure HTTPConnectivity = false )
type InfoProvider ¶ added in v0.9.0
InfoProvider is a general interface to provide info about a log source. It is used in the agent status page. The expected usage is for a piece of code that wants to surface something on the status page register an info provider with the source with a unique key/name. This file contains useful base implementations, but InfoProvider can be extended/implemented for more complex data.
When implementing InfoProvider - be aware of the 2 ways it is used by the status page:
- when a single message is returned, the statuspage will display a single line: InfoKey(): Info()[0]
- when multiple messages are returned, the status page will display an indented list: InfoKey(): Info()[0] Info()[1] Info()[n]
InfoKey only needs to be unique per source, and should be human readable.
type Lambda ¶ added in v0.9.0
Lambda is a struct storing information about the Lambda function and function execution.
type LogSource ¶
type LogSource struct { // Put expvar Int first because it's modified with sync/atomic, so it needs to // be 64-bit aligned on 32-bit systems. See https://golang.org/pkg/sync/atomic/#pkg-note-BUG BytesRead expvar.Int Name string Config *LogsConfig Status *LogStatus Messages *Messages // In the case that the source is overridden, keep a reference to the parent for bubbling up information about the child ParentSource *LogSource // LatencyStats tracks internal stats on the time spent by messages from this source in a processing pipeline, i.e. // the duration between when a message is decoded by the tailer/listener/decoder and when the message is handled by a sender LatencyStats *util.StatsTracker // contains filtered or unexported fields }
LogSource holds a reference to an integration name and a log configuration, and allows to track errors and successful operations on it. Both name and configuration are static for now and determined at creation time. Changing the status is designed to be thread safe.
func ContainerCollectAllSource ¶ added in v0.9.0
func ContainerCollectAllSource() *LogSource
ContainerCollectAllSource returns a source to collect all logs from all containers.
func NewLogSource ¶
func NewLogSource(name string, config *LogsConfig) *LogSource
NewLogSource creates a new log source.
func SNMPTrapsSource ¶ added in v0.9.0
func SNMPTrapsSource() *LogSource
SNMPTrapsSource returs a source to forward SNMP traps as logs.
func (*LogSource) GetInfo ¶ added in v0.9.0
func (s *LogSource) GetInfo(key string) InfoProvider
GetInfo gets an InfoProvider instance by the key
func (*LogSource) GetInfoStatus ¶ added in v0.9.0
GetInfoStatus returns a primitive representation of the info for the status page
func (*LogSource) GetSourceType ¶
func (s *LogSource) GetSourceType() SourceType
GetSourceType returns the sourceType used by this source
func (*LogSource) RegisterInfo ¶ added in v0.9.0
func (s *LogSource) RegisterInfo(i InfoProvider)
RegisterInfo registers some info to display on the status page
func (*LogSource) RemoveInput ¶
RemoveInput removes an input from this source.
func (*LogSource) SetSourceType ¶
func (s *LogSource) SetSourceType(sourceType SourceType)
SetSourceType sets a format that give information on how the source lines should be parsed
type LogSources ¶
type LogSources struct {
// contains filtered or unexported fields
}
LogSources stores a list of log sources.
func CreateSources ¶
func CreateSources(sourcesArray []*LogSource) *LogSources
CreateSources creates sources
func (*LogSources) AddSource ¶
func (s *LogSources) AddSource(source *LogSource)
AddSource adds a new source.
func (*LogSources) GetAddedForType ¶
func (s *LogSources) GetAddedForType(sourceType string) chan *LogSource
GetAddedForType returns the new added sources matching the provided type.
func (*LogSources) GetRemovedForType ¶
func (s *LogSources) GetRemovedForType(sourceType string) chan *LogSource
GetRemovedForType returns the new removed sources matching the provided type.
func (*LogSources) GetSources ¶
func (s *LogSources) GetSources() []*LogSource
GetSources returns all the sources currently held.
func (*LogSources) RemoveSource ¶
func (s *LogSources) RemoveSource(source *LogSource)
RemoveSource removes a source.
type LogStatus ¶
type LogStatus struct {
// contains filtered or unexported fields
}
LogStatus tracks errors and success.
type LogsConfig ¶
type LogsConfig struct { Type string Port int // Network Path string // File, Journald Encoding string `mapstructure:"encoding" json:"encoding"` // File ExcludePaths []string `mapstructure:"exclude_paths" json:"exclude_paths"` // File TailingMode string `mapstructure:"start_position" json:"start_position"` // File IncludeUnits []string `mapstructure:"include_units" json:"include_units"` // Journald ExcludeUnits []string `mapstructure:"exclude_units" json:"exclude_units"` // Journald ContainerMode bool `mapstructure:"container_mode" json:"container_mode"` // Journald Image string // Docker Label string // Docker // Name contains the container name Name string // Docker // Identifier contains the container ID Identifier string // Docker ChannelPath string `mapstructure:"channel_path" json:"channel_path"` // Windows Event Query string // Windows Event // used as input only by the Channel tailer. // could have been unidirectional but the tailer could not close it in this case. Channel chan *ChannelMessage Service string Source string SourceCategory string Tags []string ProcessingRules []*ProcessingRule `mapstructure:"log_processing_rules" json:"log_processing_rules"` }
LogsConfig represents a log source config, which can be for instance a file to tail or a port to listen to.
func ParseJSON ¶
func ParseJSON(data []byte) ([]*LogsConfig, error)
ParseJSON parses the data formatted in JSON returns an error if the parsing failed.
func ParseYAML ¶
func ParseYAML(data []byte) ([]*LogsConfig, error)
ParseYAML parses the data formatted in YAML, returns an error if the parsing failed.
func (*LogsConfig) Validate ¶
func (c *LogsConfig) Validate() error
Validate returns an error if the config is misconfigured
type LogsConfigKeys ¶ added in v0.9.0
type LogsConfigKeys struct {
// contains filtered or unexported fields
}
LogsConfigKeys stores logs configuration keys stored in YAML configuration files
func NewLogsConfigKeys ¶ added in v0.9.0
func NewLogsConfigKeys(configPrefix string, config coreConfig.Config) *LogsConfigKeys
NewLogsConfigKeys returns a new logs configuration keys set
type MappedInfo ¶ added in v0.9.0
type MappedInfo struct {
// contains filtered or unexported fields
}
MappedInfo collects multiple info messages with a unique key
func NewMappedInfo ¶ added in v0.9.0
func NewMappedInfo(key string) *MappedInfo
NewMappedInfo creates a new MappedInfo instance
func (*MappedInfo) Info ¶ added in v0.9.0
func (m *MappedInfo) Info() []string
Info returns the info
func (*MappedInfo) InfoKey ¶ added in v0.9.0
func (m *MappedInfo) InfoKey() string
InfoKey returns the key
func (*MappedInfo) RemoveMessage ¶ added in v0.9.0
func (m *MappedInfo) RemoveMessage(key string)
RemoveMessage removes a message with a unique key
func (*MappedInfo) SetMessage ¶ added in v0.9.0
func (m *MappedInfo) SetMessage(key string, message string)
SetMessage sets a message with a unique key
type Messages ¶
type Messages struct {
// contains filtered or unexported fields
}
Messages holds messages and warning that can be displayed in the status Warnings are display at the top of the log section in the status and messages are displayed in the log source that generated the message
func NewMessages ¶
func NewMessages() *Messages
NewMessages initialize Messages with the default values
func (*Messages) AddMessage ¶
AddMessage create a message
func (*Messages) GetMessages ¶
GetMessages returns all the messages
func (*Messages) RemoveMessage ¶
RemoveMessage removes a message
type ProcessingRule ¶
type ProcessingRule struct { Type string Name string ReplacePlaceholder string `mapstructure:"replace_placeholder" json:"replace_placeholder"` Pattern string // TODO: should be moved out Regex *regexp.Regexp Placeholder []byte }
ProcessingRule defines an exclusion or a masking rule to be applied on log lines
func GlobalProcessingRules ¶
func GlobalProcessingRules() ([]*ProcessingRule, error)
GlobalProcessingRules returns the global processing rules to apply to all logs.
type SourceType ¶
type SourceType string
SourceType used for log line parsing logic. TODO: remove this logic.
const ( // DockerSourceType docker source type DockerSourceType SourceType = "docker" // KubernetesSourceType kubernetes source type KubernetesSourceType SourceType = "kubernetes" )
type TailingMode ¶
type TailingMode uint8
TailingMode type
func TailingModeFromString ¶
func TailingModeFromString(mode string) (TailingMode, bool)
TailingModeFromString parses a string and returns a corresponding tailing mode, default to End if not found
func (TailingMode) String ¶
func (mode TailingMode) String() string
TailingModeToString returns seelog string representation for a specified tailing mode. Returns "" for invalid tailing mode.