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
- Variables
- func AppendDefaultPort(bstr string, defPort uint16) string
- func LoadConfigBytes(v interface{}, b []byte) error
- func LoadConfigFile(v interface{}, p string) (err error)
- func LoadEnvVar(cnd interface{}, envName string, defVal interface{}) error
- func ParseBool(v string) (r bool, err error)
- func ParseInt64(v string) (i int64, err error)
- func ParseRate(s string) (Bps int64, err error)
- func ParseSource(v string) (b net.IP, err error)
- func ParseUint64(v string) (i uint64, err error)
- type IngestConfig
- func (ic *IngestConfig) EnableCache() bool
- func (ic *IngestConfig) GetLogger() (l *log.Logger, err error)
- func (ic *IngestConfig) IngesterUUID() (id uuid.UUID, ok bool)
- func (ic *IngestConfig) InsecureSkipTLSVerification() bool
- func (ic *IngestConfig) LocalFileCachePath() string
- func (ic *IngestConfig) LogLevel() string
- func (ic *IngestConfig) MaxCachedData() uint64
- func (ic *IngestConfig) RateLimit() (bps int64, err error)
- func (ic *IngestConfig) Secret() string
- func (ic *IngestConfig) SetIngesterUUID(id uuid.UUID, loc string) (err error)
- func (ic *IngestConfig) Targets() ([]string, error)
- func (ic *IngestConfig) Timeout() time.Duration
- func (ic *IngestConfig) Verify() error
- type VariableConfig
Constants ¶
const ( DefaultCleartextPort uint16 = 4023 DefaultTLSPort uint16 = 4024 )
Variables ¶
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") )
var ( ErrInvalidArg = errors.New("Invalid arguments") ErrEmptyEnvFile = errors.New("Environment secret file is empty") ErrBadValue = errors.New("Environment value is invalid") )
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 ¶
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
LoadConfigBytes parses the contents of b into the given interface v.
func LoadConfigFile ¶ added in v3.2.5
LoadConfigFile will open a config file, check the file size and load the bytes using LoadConfigBytes
func LoadEnvVar ¶
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
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
ParseInt64 will attempt to turn the given string into a signed 64-bit integer.
func ParseRate ¶ added in v3.3.4
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 ¶
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
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.