config

package
v3.3.12 Latest Latest
Warning

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

Go to latest
Published: May 13, 2020 License: BSD-2-Clause Imports: 19 Imported by: 25

Documentation

Overview

Package config provides a common base for Gravwell ingester config files. The ingester will typically need to extend the config struct to allow configuration of data sources. An ingester might implement something like the following:

type cfgType struct {
	Global       config.IngestConfig
	Listener     map[string]*lst
	Preprocessor processors.ProcessorConfig
}

func GetConfig(path string) (*cfgType, error) {
	var cr cfgType
	if err := config.LoadConfigFile(&cr, path); err != nil {
		return nil, err
	}
	if err := cr.Global.Verify(); err != nil {
		return nil, err
	}
	// Verify and set UUID
	if _, ok := cr.Global.IngesterUUID(); !ok {
		id := uuid.New()
		if err := cr.Global.SetIngesterUUID(id, path); err != nil {
			return nil, err
		}
		if id2, ok := cr.Global.IngesterUUID(); !ok || id != id2 {
			return nil, errors.New("Failed to set a new ingester UUID")
		}
	}
	return c, nil
}

Index

Constants

View Source
const (
	DefaultCleartextPort uint16 = 4023
	DefaultTLSPort       uint16 = 4024
)

Variables

View Source
var (
	ErrNoConnections              = errors.New("No connections specified")
	ErrMissingIngestSecret        = errors.New("Ingest-Secret value missing")
	ErrInvalidLogLevel            = errors.New("Invalid Log Level")
	ErrInvalidConnectionTimeout   = errors.New("Invalid connection timeout")
	ErrInvalidIngestCacheSize     = errors.New("Invalid Max Ingest Cache size")
	ErrCacheEnabledZeroMax        = errors.New("Ingest cache enabled with zero Max Cache size")
	ErrGlobalSectionNotFound      = errors.New("Global config section not found")
	ErrInvalidLineLocation        = errors.New("Invalid line location")
	ErrInvalidUpdateLineParameter = errors.New("Update line location does not contain the specified paramter")
)
View Source
var (
	ErrInvalidArg   = errors.New("Invalid arguments")
	ErrEmptyEnvFile = errors.New("Environment secret file is empty")
	ErrBadValue     = errors.New("Environment value is invalid")
)
View Source
var (
	ErrConfigFileTooLarge     = errors.New("Config file is too large")
	ErrFailedFileRead         = errors.New("Failed to read entire config file")
	ErrConfigNotOpen          = errors.New("Configuration is not open")
	ErrInvalidImportInterface = errors.New("Invalid import interface argument")
	ErrInvalidImportParameter = errors.New("parameter is not a pointer")
	ErrInvalidArgument        = errors.New("Invalid argument")
	ErrInvalidMapKeyType      = errors.New("invalid map key type, must be string")
	ErrInvalidMapValueType    = errors.New("invalid map value type, must be pointer to struct")
	ErrBadMap                 = errors.New("VariableConfig has not be initialized")
)

Functions

func AppendDefaultPort

func AppendDefaultPort(bstr string, defPort uint16) string

AppendDefaultPort will append the network port in defPort to the address in bstr, provided the address does not already contain a port. Thus, AppendDefaultPort("10.0.0.1", 4023) will return "10.0.0.1:4023", but AppendDefaultPort("10.0.0.1:5555", 4023) will return "10.0.0.1:5555".

func LoadConfigBytes added in v3.2.5

func LoadConfigBytes(v interface{}, b []byte) error

LoadConfigBytes parses the contents of b into the given interface v.

func LoadConfigFile added in v3.2.5

func LoadConfigFile(v interface{}, p string) (err error)

LoadConfigFile will open a config file, check the file size and load the bytes using LoadConfigBytes

func LoadEnvVar

func LoadEnvVar(cnd interface{}, envName string, defVal interface{}) error

Attempts to read a value from environment variable named envName If there's nothing there, it attempt to append _FILE to the variable name and see if it contains a filename; if so, it reads the contents of the file into cnd.

func ParseBool added in v3.3.4

func ParseBool(v string) (r bool, err error)

ParseBool attempts to parse the string v into a boolean. The following will return true:

  • "true"
  • "t"
  • "yes"
  • "y"
  • "1"

The following will return false:

  • "false"
  • "f"
  • "no"
  • "n"
  • "0"

All other values return an error.

func ParseInt64 added in v3.3.4

func ParseInt64(v string) (i int64, err error)

ParseInt64 will attempt to turn the given string into a signed 64-bit integer.

func ParseRate added in v3.3.4

func ParseRate(s string) (Bps int64, err error)

ParseRate parses a data rate, returning an integer bits per second. The rate string s should consist of numbers optionally followed by one of the following suffixes: k, kb, kbit, kbps, m, mb, mbit, mbps, g, gb, gbit, gbps. If no suffix is present, ParseRate assumes the string specifies bits per second.

func ParseSource

func ParseSource(v string) (b net.IP, err error)

ParseSource returns a net.IP byte buffer the returned buffer will always be a 32bit or 128bit buffer but we accept encodings as IPv4, IPv6, integer, hex encoded hash this function simply walks the available encodings until one works

func ParseUint64 added in v3.3.4

func ParseUint64(v string) (i uint64, err error)

ParseUint64 will attempt to turn the given string into an unsigned 64-bit integer.

Types

type IngestConfig

type IngestConfig struct {
	Ingest_Secret              string
	Connection_Timeout         string
	Verify_Remote_Certificates bool //legacy, will be removed
	Insecure_Skip_TLS_Verify   bool
	Cleartext_Backend_Target   []string
	Encrypted_Backend_Target   []string
	Pipe_Backend_Target        []string
	Ingest_Cache_Path          string
	Max_Ingest_Cache           int64 //maximum amount of data to cache in MB
	Log_Level                  string
	Log_File                   string
	Source_Override            string // override normal source if desired
	Rate_Limit                 string
	Ingester_UUID              string
}

func (*IngestConfig) EnableCache

func (ic *IngestConfig) EnableCache() bool

EnableCache indicates whether a file cache is enabled

func (*IngestConfig) GetLogger added in v3.3.10

func (ic *IngestConfig) GetLogger() (l *log.Logger, err error)

func (*IngestConfig) IngesterUUID added in v3.2.4

func (ic *IngestConfig) IngesterUUID() (id uuid.UUID, ok bool)

IngesterUUID returns the UUID of this ingester, set with the `Ingester-UUID` parameter. If the UUID is not set, the UUID is invalid, or the UUID is all zeroes, the function will return ok = false. If the UUID is valid, it returns the UUID and ok = true.

func (*IngestConfig) InsecureSkipTLSVerification

func (ic *IngestConfig) InsecureSkipTLSVerification() bool

InsecureSkipTLSVerification returns true if the Insecure-Skip-TLS-Verify config parameter was set.

func (*IngestConfig) LocalFileCachePath

func (ic *IngestConfig) LocalFileCachePath() string

LocalFileCachePath returns the path to the local ingest cache an empty string means no cache enabled

func (*IngestConfig) LogLevel

func (ic *IngestConfig) LogLevel() string

Return the specified log level

func (*IngestConfig) MaxCachedData

func (ic *IngestConfig) MaxCachedData() uint64

MaxCachedData returns the maximum amount of data to be cached in bytes

func (*IngestConfig) RateLimit

func (ic *IngestConfig) RateLimit() (bps int64, err error)

RateLimit returns the bandwidth limit, in bits per second, which should be applied to the indexer connection.

func (*IngestConfig) Secret

func (ic *IngestConfig) Secret() string

Secret returns the value of the Ingest-Secret parameter, used to authenticate to the indexer.

func (*IngestConfig) SetIngesterUUID added in v3.2.4

func (ic *IngestConfig) SetIngesterUUID(id uuid.UUID, loc string) (err error)

SetIngesterUUID modifies the configuration file at loc, setting the Ingester-UUID parameter to the given UUID. This function allows ingesters to assign themselves a UUID if one is not given in the configuration file.

func (*IngestConfig) Targets

func (ic *IngestConfig) Targets() ([]string, error)

Targets returns a list of indexer targets, including TCP, TLS, and Unix pipes. Each target will be prepended with the connection type, e.g.:

tcp://10.0.0.1:4023

func (*IngestConfig) Timeout

func (ic *IngestConfig) Timeout() time.Duration

Timeout returns the timeout for an ingester connection to go live before giving up.

func (*IngestConfig) Verify

func (ic *IngestConfig) Verify() error

Verify checks the configuration parameters of the IngestConfig, verifying that there is at least one indexer target, creating directories as necessary, and generally making sure values are sensible.

type VariableConfig added in v3.2.5

type VariableConfig struct {
	gcfg.Idxer
	Vals map[gcfg.Idx]*[]string
}

func (VariableConfig) MapTo added in v3.2.5

func (vc VariableConfig) MapTo(v interface{}) (err error)

Jump to

Keyboard shortcuts

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