Documentation ¶
Index ¶
- type Aggregate
- type Base64Decode
- type Base64Encode
- type Clear
- type CollectdToInflux08
- type CollectdToInflux09
- type CollectdToInflux10
- type Double
- type Envelope
- type ExtractJSON
- type GrokToJSON
- type Hostname
- type Identifier
- type JSONToArray
- type JSONToInflux10
- type MetadataCopy
- type ProcessJSON
- type ProcessTSV
- type RegExp
- type Runlength
- type Sequence
- type Serialize
- type SplitPick
- type SplitToJSON
- type StreamName
- type StreamRevert
- type StreamRoute
- type TemplateJSON
- type TextToJSON
- type Timestamp
- type Trim
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Aggregate ¶ added in v0.5.0
type Aggregate struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Aggregate formatter plugin
Aggregate is a formatter which can group up further formatter. The `ApplyTo` settings will be pass on and overwritten in the child formatter. This plugin could be useful to setup complex configs with metadata handling in more readable format.
Parameters ¶
- ApplyTo: This value chooses the part of the message the formatting should be applied to. Use "" to target the message payload; other values specify the name of a metadata field to target. This value will also used for further child modulators! By default this parameter is set to "".
- Modulators: Defines a list of child modulators to be applied to a message when it arrives at this formatter. Please try to use only content based formatter and filter! If a modulator changes the stream of a message the message is NOT routed to this stream anymore.
Examples ¶
This example show a useful case for format.Aggregate plugin:
exampleConsumerA: Type: consumer.Console Streams: "foo" Modulators: - format.MetadataCopy: CopyToKeys: ["foo", "bar"] - format.Aggregate: ApplyTo: foo Modulators: - format.Base64Encode - format.Double - format.Envelope: Postfix: "\n" - format.Envelope: Postfix: "\n" ApplyTo: bar # same config as exampleConsumerB: Type: consumer.Console Streams: "bar" Modulators: - format.MetadataCopy: CopyToKeys: ["foo", "bar"] - format.Base64Encode: ApplyTo: foo - format.Double: ApplyTo: foo - format.Envelope: Postfix: "\n" ApplyTo: foo - format.Envelope: Postfix: "\n" ApplyTo: bar
func (*Aggregate) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter execute the formatter
func (*Aggregate) Configure ¶ added in v0.5.0
func (format *Aggregate) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Base64Decode ¶
type Base64Decode struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Base64Decode formatter plugin
Base64Decode is a formatter that decodes base64 encoded messages. If a message is not or only partly base64 encoded an error will be logged and the decoded part is returned. RFC 4648 is expected.
Parameters ¶
- Base64Dictionary: This value defines the 64-character base64 lookup dictionary to use. When left empty, a dictionary as defined by RFC4648 is used. By default this parameter is set to "".
Examples ¶
This example expects base64 strings from the console and decodes them before transmitting the message payload.
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.Base64Decode
func (*Base64Decode) ApplyFormatter ¶ added in v0.5.0
func (format *Base64Decode) ApplyFormatter(msg *core.Message) error
ApplyFormatter execute the formatter
func (*Base64Decode) Configure ¶
func (format *Base64Decode) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Base64Encode ¶
type Base64Encode struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Base64Encode formatter
Base64Encode is a formatter that decodes Base64 encoded strings. Custom dictionaries are supported, by default RFC 4648 standard encoding is used.
Parameters ¶
- Base64Dictionary: Defines the 64-character base64 lookup dictionary to use. When left empty a RFC 4648 standard encoding is used. By default this parameter is set to "".
Examples ¶
This example uses RFC 4648 URL encoding to format incoming data.
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - formatter.Base64Encode Dictionary: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
func (*Base64Encode) ApplyFormatter ¶ added in v0.5.0
func (format *Base64Encode) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*Base64Encode) Configure ¶
func (format *Base64Encode) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Clear ¶ added in v0.4.4
type Clear struct {
core.SimpleFormatter `gollumdoc:"embed_type"`
}
Clear formatter
This formatter erases the message payload or deletes a metadata key.
Examples ¶
This example removes the "pipe" key from the metadata produced by consumer.Console.
exampleConsumer: Type: consumer.Console Streams: stdin Modulators: - format.Clear ApplyTo: pipe
func (*Clear) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Clear) Configure ¶ added in v0.4.4
func (format *Clear) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type CollectdToInflux08 ¶ added in v0.4.0
type CollectdToInflux08 struct {
core.SimpleFormatter `gollumdoc:"embed_type"`
}
CollectdToInflux08 formatter
This formatter transforms JSON data produced by collectd to InfluxDB 0.8.x. Trailing and leading commas are removed from the Collectd message.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - formatter.CollectdToInflux08
func (*CollectdToInflux08) ApplyFormatter ¶ added in v0.5.0
func (format *CollectdToInflux08) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*CollectdToInflux08) Configure ¶ added in v0.4.0
func (format *CollectdToInflux08) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type CollectdToInflux09 ¶ added in v0.4.0
type CollectdToInflux09 struct {
core.SimpleFormatter `gollumdoc:"embed_type"`
}
CollectdToInflux09 formatter
This formatter transforms JSON data produced by collectd to InfluxDB 0.9.0. Trailing and leading commas are removed from the Collectd message.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - formatter.CollectdToInflux09
func (*CollectdToInflux09) ApplyFormatter ¶ added in v0.5.0
func (format *CollectdToInflux09) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*CollectdToInflux09) Configure ¶ added in v0.4.0
func (format *CollectdToInflux09) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type CollectdToInflux10 ¶ added in v0.4.1
type CollectdToInflux10 struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
CollectdToInflux10 formatter
This formatter transforms JSON data produced by collectd to InfluxDB 0.9.1 or later. Trailing and leading commas are removed from the Collectd message.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - formatter.CollectdToInflux10
func (*CollectdToInflux10) ApplyFormatter ¶ added in v0.5.0
func (format *CollectdToInflux10) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*CollectdToInflux10) Configure ¶ added in v0.4.1
func (format *CollectdToInflux10) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Double ¶ added in v0.5.0
type Double struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Double formatter plugin
Double is a formatter that appends a delimiter string and a second copy of the message's contents to the message. Independent sets of formatters may be applied to both duplicates.
Parameters ¶
- Separator: This value sets the separator string placed between both parts. This parameter is set to ":" by default.
- UseLeftStreamID: Use the stream id of the left side as the final stream id for the message if this value is "true". This parameter is set to "false" by default.
- Left: An optional list of formatters. The first copy of the message (left of the delimiter) is passed through these filters. This parameter is set to an empty list by default.
- Left: An optional list of formatters. The second copy of the mssage (right of the delimiter) is passed through these filters. This parameter is set to an empty list by default.
Examples ¶
This example creates a message of the form "<orig>|<base64>", where <orig> is the original console input and <base64> its Base64-encoded equivalent.
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.Double: Separator: "|" Right: - format.Base64Encode
func (*Double) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Double) Configure ¶ added in v0.5.0
func (format *Double) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Envelope ¶
type Envelope struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Envelope formatter
This formatter adds content to the beginning and/or end of a message.
Parameters ¶
- Prefix: Defines a string that is added to the front of the message. Special characters like \n \r or \t can be used without additional escaping. By default this parameter is set to "".
- Postfix: Defines a string that is added to the end of the message. Special characters like \n \r or \t can be used without additional escaping. By default this parameter is set to "\n".
Examples ¶
This example adds a line number and a newline character to each message printed to the console.
exampleProducer: Type: producer.Console Streams: "*" Modulators: - format.Sequence - format.Envelope
func (*Envelope) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Envelope) Configure ¶
func (format *Envelope) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type ExtractJSON ¶ added in v0.4.3
type ExtractJSON struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
ExtractJSON formatter
This formatter extracts a specific value from a JSON payload and writes it back as a new payload or as a metadata field.
Parameters ¶
- Field: Defines the JSON key to extract. If the field does not exist an empty string is returned. Field paths can be defined in a format accepted by tgo.MarshalMap.Path. By default this parameter is set to "".
- TrimValues: Enables trimming of whitespaces at the beginning and end of the extracted value. By default this parameter is set to true.
- Precision: Defines the number of decimal places to use when converting Numbers into strings. If this parameter is set to -1 the shortest possible number of decimal places will be used. By default this parameter is set to -1.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - formatter.ExtractJSON Field: host ApplyTo: host
func (*ExtractJSON) ApplyFormatter ¶ added in v0.5.0
func (format *ExtractJSON) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*ExtractJSON) Configure ¶ added in v0.4.3
func (format *ExtractJSON) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type GrokToJSON ¶ added in v0.5.0
type GrokToJSON struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
GrokToJSON formatter plugin
GrokToJSON is a formatter that applies regex filters to messages. It works by combining text patterns into something that matches your logs. See https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#_grok_basics for more information about Grok.
The output format is JSON.
Parameters ¶
- RemoveEmptyValues: When set to true, empty captures will not be returned. By default this parameter is set to "true".
- NamedCapturesOnly: When set to true, only named captures will be returned. By default this parameter is set to "true".
- SkipDefaultPatterns: When set to true, standard grok patterns will not be included in the list of patterns. By default this parameter is set to "true".
- Patterns: A list of grok patterns that will be applied to messages. The first matching pattern will be used to parse the message.
Examples ¶
This example transforms unstructured input into a structured json output. Input:
us-west.servicename.webserver0.this.is.the.measurement 12.0 1497003802
Output:
{ "datacenter": "us-west", "service": "servicename", "host": "webserver0", "measurement": "this.is.the.measurement", "value": "12.0", "time": "1497003802" }
Config:
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.GrokToJSON: Patterns: - ^(?P<datacenter>[^\.]+?)\.(?P<service>[^\.]+?)\.(?P<host>[^\.]+?)\.statsd\.gauge-(?P<application>[^\.]+?)\.(?P<measurement>[^\s]+?)\s%{NUMBER:value_gauge:float}\s*%{INT:time} - ^(?P<datacenter>[^\.]+?)\.(?P<service>[^\.]+?)\.(?P<host>[^\.]+?)\.statsd\.latency-(?P<application>[^\.]+?)\.(?P<measurement>[^\s]+?)\s%{NUMBER:value_latency:float}\s*%{INT:time} - ^(?P<datacenter>[^\.]+?)\.(?P<service>[^\.]+?)\.(?P<host>[^\.]+?)\.statsd\.derive-(?P<application>[^\.]+?)\.(?P<measurement>[^\s]+?)\s%{NUMBER:value_derive:float}\s*%{INT:time} - ^(?P<datacenter>[^\.]+?)\.(?P<service>[^\.]+?)\.(?P<host>[^\.]+?)\.(?P<measurement>[^\s]+?)\s%{NUMBER:value:float}\s*%{INT:time}
func (*GrokToJSON) ApplyFormatter ¶ added in v0.5.0
func (format *GrokToJSON) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*GrokToJSON) Configure ¶ added in v0.5.0
func (format *GrokToJSON) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Hostname ¶
type Hostname struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Hostname formatter
This formatter prefixes the message or metadata with the hostname of the machine gollum is running on.
Parameters ¶
- Separator: Defines the separator string placed between hostname and data. By default this parameter is set to ":".
Examples ¶
This example inserts the hostname into an existing JSON payload.
exampleProducer: Type: producer.Console Streams: "*" Modulators: - format.Trim: LeftSeparator: "{" RightSeparator: "}" - format.Hostname Separator: "," - format.Envelope: Prefix: "{\"host\":" Postfix: "}"
func (*Hostname) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Hostname) Configure ¶
func (format *Hostname) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Identifier ¶
type Identifier struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Identifier formatter
This formatter generates a (mostly) unique 64 bit identifier number from the message payload, timestamp and/or sequence number. The number is be converted to a human readable form.
Parameters ¶
- Generator: Defines which algorithm to use when generating the identifier. This my be one of the following values. By default this parameter is set to "time"
hash: The message payload will be hashed using fnv1a and returned as hex.
time: The id will be formatted YYMMDDHHmmSSxxxxxxx where x denotes the current sequence number modulo 10000000. I.e. 10.000.000 messages per second are possible before a collision occurs.
seq: The sequence number will be used.
seqhex: The hex encoded sequence number will be used.
Examples ¶
This example will generate a payload checksum and store it to a metadata field called "checksum".
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - formatter.Identifier Generator: hash ApplyTo: checksum
func (*Identifier) ApplyFormatter ¶ added in v0.5.0
func (format *Identifier) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*Identifier) Configure ¶
func (format *Identifier) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type JSONToArray ¶ added in v0.5.0
type JSONToArray struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
JSONToArray formatter plugin
JSONToArray "flattens" a JSON object by selecting specific fields and creating a delimiter-separated string of their values.
A JSON input like `{"foo":"value1","bar":"value2"}` can be transformed into a list like `value1,value2`.
Parameters ¶
- Fields: List of strings specifying the JSON keys to retrieve from the input
- Separator: The delimited string to insert between each value in the generated string. By default this parameter is set to ",".
Examples ¶
This example get the `foo` and `bar` fields from a json document and create a payload of `foo_value:bar_value`:
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.JSONToArray Separator: ; Fields: - foo - bar
func (*JSONToArray) ApplyFormatter ¶ added in v0.5.0
func (format *JSONToArray) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*JSONToArray) Configure ¶ added in v0.5.0
func (format *JSONToArray) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type JSONToInflux10 ¶ added in v0.5.0
type JSONToInflux10 struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
JSONToInflux10 formatter
JSONToInflux10 provides a transformation from arbitrary JSON data to InfluxDB 0.9.1+ compatible line protocol data.
Parameters ¶
- TimeField: Specifies the JSON field that holds the timestamp of the message. The timestamp is formatted as defined by TimeFormat. If the field is not found the current timestamp is assumed. By default this parameter is set to "time".
- TimeFormat: Specifies the format of the time field as in go's time.Parse or "unix" if the field contains a valid unix timestamp. By default this parameter is set to "unix".
- Measurement: Specifies the JSON field that holds the measurements in this message. If the field doesn't exist, the message is discarded. By default this parameter is set to "measurement".
- Ignore: May contain a list of JSON fields that should be ignored and not sent to InfluxDB. By default this parameter is set to an empty list.
- Tags: May contain a list of JSON fields to send to InfluxDB as tags. The InfluxDB 0.9 convention is that values that do not change by every request are to be considered metadata and given as tags.
Examples
metricsToInflux: Type: producer.InfluxDB Streams: metrics Host: "influx01:8086" Database: "metrics" Modulators: - format.JSONToInflux10 TimeField: timestamp Measurement: metrics Tags: - tags - service - host - application
func (*JSONToInflux10) ApplyFormatter ¶ added in v0.5.0
func (format *JSONToInflux10) ApplyFormatter(msg *core.Message) error
ApplyFormatter updates the message payload
func (*JSONToInflux10) Configure ¶ added in v0.5.0
func (format *JSONToInflux10) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type MetadataCopy ¶ added in v0.5.0
type MetadataCopy struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
MetadataCopy formatter plugin
This formatter sets metadata fields by copying data from the message's payload or from other metadata fields.
Parameters ¶
- Key: Defines the key to copy, i.e. the "source". ApplyTo will define the target of the copy, i.e. the "destination". An empty string will use the message payload as source. By default this parameter is set to an empty string (i.e. payload).
- Mode: Defines the copy mode to use. This can be one of "append", "prepend" or "replace". By default this parameter is set to "replace".
- Separator: When using mode prepend or append, defines the characters inserted between source and destination. By default this parameter is set to an empty string.
- CopyToKeys: DEPRECATED. A list of meta data keys to copy the payload or metadata content to. If this field contains at least one value, mode is set to replace and the key field is ignored. By default this parameter is set to an empty list.
Examples ¶
This example copies the payload to the field key and applies a hash on it contain a hash over the complete payload.
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.MetadataCopy: ApplyTo: key - formatter.Identifier Generator: hash ApplyTo: key
func (*MetadataCopy) ApplyFormatter ¶ added in v0.5.0
func (format *MetadataCopy) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*MetadataCopy) Configure ¶ added in v0.5.0
func (format *MetadataCopy) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type ProcessJSON ¶ added in v0.4.2
type ProcessJSON struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
ProcessJSON formatter
This formatter allows modification of JSON encoded data. Each field can be processed by different directives and the result of all directives will be stored back to the original location.
Parameters ¶
- GeoIPFile: Defines a GeoIP file to load. This enables the "geoip" directive. If no file is loaded IPs will not be resolved. Files can be found e.g. at http://dev.maxmind.com/geoip/geoip2/geolite2/. By default this parameter is set to "".
- TrimValues: Allows trimming of whitespaces from the beginning and end of each value after processing took place. By default this parameter is set to true.
- Directives: Defines an array of actions to be applied to the JSON encoded data. Directives are processed in order of their appearance. Directives start with the name of the field, followed by an action followed by additional parameters if necessary. Parameters, key and action are separated by using the ":" character. By default this parameter is set to an empty list.
split: <delimiter> {<key>, <key>, ...} Split the field's value by the given delimiter, store the results to the fields listed after the delimiter.
replace: <string> <new string> Replace a given string inside the field's value with a new one.
trim: <characters> Remove the given characters from the start and end of the field's value.
rename: <new key> Rename a given field
remove: {<value>, <value>, ...}` Remove a given field. If additional parameters are given, the value is expected to be an array. The given strings will be removed from that array.
pick: <index> <key> Pick a specific index from an array and store it to the given field.
time: <from fromat> <to format> Read a timestamp with a given format compatible to time.Parse and transform it into another format compatible with time.Format.
unixtimestamp: <unit> <to format> Read a unix timestamp with a given unit ("s","ms" or "ns") and transform it it into another format compatible with time.Format.
flatten: {<delimiter>} Move all keys from a nested object to new fields named field + delimiter + subfield. If no delimiter is given "." will be used.
agent: <prefix> {<field>, <field>, ...} Parse the field's value as a user agent string and extract the given fields into new fields named prefix + "_" + field. If no fields are given all fields are returned.
mozilla: mozilla version
platform: the platform used
os: the operating system used
localization: the language used
engine: codename of the browser engine
engine_version: version of the browser engine
browser: name of the browser
version: version of the browser
ip: Parse the field as an array of strings and remove all values that cannot be parsed as a valid IP. Single-string fields are supported, too, but will be converted to an array.
geoip: {<field>, <field>, ...} Parse the field as an IP and extract the given fields into new fields named prefix + "_" + field. This action requires a valid GeoIP file to be loaded. If no fields are given all fields are returned.
country: the contry code of the IP. Generates country, countryCode.
city: the city of the IP
continent: the continent of the IP. Generates continent, continentCode.
timezone: the timezome of the IP
proxy: name of the proxy if applying Generates proxy, satellite.
location: the geolocation of this IP. Generates geocoord, geohash.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - format.ProcessJSON: Directives: - "host:split: :host:@timestamp" - "@timestamp:time:20060102150405:2006-01-02 15\\:04\\:05" - "client:ip" - "client:geoip:location:country" - "ua:agent:ua:os:engine:engine_version"
func (*ProcessJSON) ApplyFormatter ¶ added in v0.5.0
func (format *ProcessJSON) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*ProcessJSON) Configure ¶ added in v0.4.2
func (format *ProcessJSON) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type ProcessTSV ¶ added in v0.4.4
type ProcessTSV struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
ProcessTSV formatter
This formatter allows modification of TSV encoded data. Each field can be processed by different directives and the result of all directives will be stored back to the original location.
Parameters ¶
- Delimiter: Defines the separator used to split values. By default this parameter is set to "\t".
- QuotedValue: When set to true, values that start and end with a quotation mark are not scanned for delimiter characters. I.e. those values will not be split even if they contain delimiter characters. By default this parameter is set to false.
- Directives: Defines an array of actions to apply to the TSV encoded data. Directives are processed in order of appearance. Directives start with the index of the field, followed by an action followed by additional parameters if necessary. Parameters, key and action are separated by the ":" character. By default this parameter is set to an empty list.
replace: <string> <new string> Replace a given string inside the field's value with another one.
prefix: <string> Prepend the given string to the field's value
postfix: <string> Append the given string to the field's value
trim: <characters> Remove the given characters from the start and end of the field's value.
quote: Surround the field's value with quotation marks after all directives have been processed.
time: <from fromat> <to format> Read a timestamp in the specified time.Parse-compatible format and transform it into another format compatible with time.Format.
remove Removes the field from the result
agent: {<field>, <field>, ...} Parse the field's value as a user agent string and insert the given fields into the TSV after the given index. If no fields are given all fields are returned.
mozilla: mozilla version
platform: the platform used
os: the operating system used
localization: the language used
engine: codename of the browser engine
engine_version: version of the browser engine
browser: name of the browser
version: version of the browser
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - format.processTSV: Delimiter: "," Directives: - "0:time:20060102150405:2006-01-02 15\\:04\\:05" - "2:remove" - "11:agent:os:engine:engine_version"
func (*ProcessTSV) ApplyFormatter ¶ added in v0.5.0
func (format *ProcessTSV) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*ProcessTSV) Configure ¶ added in v0.4.4
func (format *ProcessTSV) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type RegExp ¶ added in v0.5.0
type RegExp struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
RegExp formatter
This formatter parses a message using a regular expression, performs string (template) replacement and returns the result.
Parameters ¶
- Posix: Set to true to compile the regular expression using posix semantics. By default this parameter is set to true.
- Expression: Defines the regular expression used for parsing. For details on the regexp syntax see https://golang.org/pkg/regexp/syntax. By default this parameter is set to "(.*)"
- Template: Defines the result string. Regexp matching groups can be referred to using "${n}", with n being the group's index. For other possible reference semantics, see https://golang.org/pkg/regexp/#Regexp.Expand. By default this parameter is set to "${1}"
Examples ¶
This example extracts time and host from an imaginary log message format.
exampleConsumer: Type: consumer.Console Streams: stding Modulators: - format.RegExp: Expression: "^(\\d+) (\\w+): " Template: "time: ${1}, host: ${2}"
func (*RegExp) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*RegExp) Configure ¶ added in v0.5.0
func (format *RegExp) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Runlength ¶
type Runlength struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Runlength formatter plugin
Runlength is a formatter that prepends the length of the message, followed by a ":". The actual message is formatted by a nested formatter.
Parameters ¶
- Separator: This value is used as separator. By default this parameter is set to ":".
- StoreRunlengthOnly: If this value is set to "true" only the runlength will stored. This option is useful to e.g. create metadata fields only containing the length of the payload. When set to "true" the Separator parameter will be ignored. By default this parameter is set to false.
Examples ¶
This example will store the length of the payload in a separate metadata field.
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.MetadataCopy: CopyToKeys: ["length"] - format.Runlength: ApplyTo: length StoreRunlengthOnly: true
func (*Runlength) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Runlength) Configure ¶
func (format *Runlength) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Sequence ¶
type Sequence struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Sequence formatter
This formatter prefixes data with a sequence number managed by the formatter. All messages passing through an instance of the formatter will get a unique number. The number is not persisted, i.e. it restarts at 0 after each restart of gollum.
Parameters ¶
- Separator: Defines the separator string placed between number and data. By default this parameter is set to ":".
Examples ¶
This example will insert the sequence number into an existing JSON payload.
exampleProducer: Type: producer.Console Streams: "*" Modulators: - format.Trim: LeftSeparator: "{" RightSeparator: "}" - format.Sequence Separator: "," - format.Envelope: Prefix: "{\"seq\":" Postfix: "}"
func (*Sequence) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Sequence) Configure ¶
func (format *Sequence) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Serialize ¶ added in v0.4.0
type Serialize struct {
core.SimpleFormatter `gollumdoc:"embed_type"`
}
Serialize formatter plugin
Serialize is a formatter that serializes a message for later retrieval. The formatter uses the internal protobuf based function from msg.Serialize().
Examples ¶
This example serializes all consumed messages:
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.Serialize
func (*Serialize) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Serialize) Configure ¶ added in v0.4.0
func (format *Serialize) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type SplitPick ¶ added in v0.4.5
type SplitPick struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
SplitPick formatter
This formatter splits data into an array by using the given delimiter and extracts the given index from that array. The value of that index will be written back.
Parameters ¶
- Delimiter: Defines the delimiter to use when splitting the data. By default this parameter is set to ":"
- Index: Defines the index to pick. By default this parameter is set to 0.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - format.SplitPick: Index: 2 Delimiter: ":"
func (*SplitPick) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*SplitPick) Configure ¶ added in v0.4.5
func (format *SplitPick) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type SplitToJSON ¶ added in v0.4.2
type SplitToJSON struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
SplitToJSON formatter plugin
SplitToJSON is a formatter that splits a message by a given token and creates a JSON object of the split values by assigning each value to a predefined property.
Parameters ¶
- Keys: This value defines an array of JSON keys to which the split message's parts should be assigned to. The keys are applied to the resulting token array by index.
- SplitBy: This value defines the separator character to use when splitting a message. By default this parameter is set to "|".
- KeepJSON: This value can be set to "false" to escape JSON payload texts as regualar strings. Otherwise JSON payload will be taken as-is and set to the corresponding key. By default this parameter is set to "true".
Examples ¶
This example will format a input of `value1,value2,value3` to a json string of `{"foo":"value1", "bar":"value2"}`:
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.SplitToJSON: SplitBy: "," Keys: - foo - bar
func (*SplitToJSON) ApplyFormatter ¶ added in v0.5.0
func (format *SplitToJSON) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*SplitToJSON) Configure ¶ added in v0.4.2
func (format *SplitToJSON) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type StreamName ¶ added in v0.4.0
type StreamName struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
StreamName formatter
This formatter prefixes data with the name of the current or previous stream.
Parameters ¶
- UsePrevious: Set to true to use the name of the previous stream. By default this parameter is set to false.
- Separator: Defines the separator string used between stream name and data. By default this parameter is set to ":".
Examples ¶
This example prefixes the message with the most recent routing history.
exampleProducer: Type: producer.Console Streams: "*" Modulators: - format.StreamName: Separator: ", " UsePrevious: true - format.StreamName: Separator: ": "
func (*StreamName) ApplyFormatter ¶ added in v0.5.0
func (format *StreamName) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*StreamName) Configure ¶ added in v0.4.0
func (format *StreamName) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type StreamRevert ¶ added in v0.4.0
type StreamRevert struct {
core.SimpleFormatter `gollumdoc:"embed_type"`
}
StreamRevert formatter
This formatter gets the previously used stream from a message and sets it as the new target stream.
Examples
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - format.StreamRevert
func (*StreamRevert) ApplyFormatter ¶ added in v0.5.0
func (format *StreamRevert) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*StreamRevert) Configure ¶ added in v0.4.0
func (format *StreamRevert) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type StreamRoute ¶ added in v0.4.0
type StreamRoute struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
StreamRoute formatter plugin
StreamRoute is a formatter that modifies a message's stream by reading a prefix from the message's data (and discarding it). The prefix is defined as everything before a given delimiter in the message. If no delimiter is found or the prefix is empty the message stream is not changed.
Parameters ¶
- Delimiter: This value defines the delimiter to search when extracting the stream name. By default this parameter is set to ":".
- StreamModulator: A list of further modulators to format and filter the extracted stream name. By default this parameter is "empty".
Examples ¶
This example sets the stream name for messages like `<error>:a message string` to `error` and `a message string` as payload:
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.StreamRoute: Delimiter: ":" StreamModulator: - format.Trim: LeftSeparator: < RightSeparator: >
func (*StreamRoute) ApplyFormatter ¶ added in v0.5.0
func (format *StreamRoute) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*StreamRoute) Configure ¶ added in v0.4.0
func (format *StreamRoute) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type TemplateJSON ¶ added in v0.4.5
type TemplateJSON struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
TemplateJSON formatter
This formatter unmarshals the given data as JSON and applies the results to the given go template. The JSON data will be replaced with the rendered template result. The template language is described in the go documentation: https://golang.org/pkg/text/template/#hdr-Actions
Parameters ¶
- Template: Defines the go template to execute with the received JSON data. If the template cannot be parsed or the JSON payload cannot be unmarshaled, the incoming JSON data is preserved. By default this parameter is set to "".
Examples ¶
This example extracts the fields "Name" and "Surname" from a JSON encoded payload and writes them both back as a plain text result.
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.TemplateJSON: Template: "{{.Name}} {{.Surname}}"
func (*TemplateJSON) ApplyFormatter ¶ added in v0.5.0
func (format *TemplateJSON) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*TemplateJSON) Configure ¶ added in v0.4.5
func (format *TemplateJSON) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type TextToJSON ¶ added in v0.5.0
type TextToJSON struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
TextToJSON formatter
This formatter uses a state machine to parse arbitrary text data and transform it to JSON.
Parameters ¶
- StartState: Defines the name of the initial state when parsing a message. When set to an empty string the first state from the directives array will be used. By default this parameter is set to "".
- TimestampRead: Defines a time.Parse compatible format string used to read time fields when using the "dat" directive. By default this parameter is set to "20060102150405".
- TimestampWrite: Defines a time.Format compatible format string used to write time fields when using the "dat" directive. By default this parameter is set to "2006-01-02 15:04:05 MST".
- UnixTimestampRead: Defines the unix timestamp format expected from fields that are parsed using the "dat" directive. Valid valies are "s" for seconds, "ms" for milliseconds, or "ns" for nanoseconds. This parameter is ignored unless TimestampRead is set to "". By default this parameter is set to "".
- Directives: Defines an array of directives used to parse text data. Each entry must be of the format: "State:Token:NextState:Flags:Function". State denotes the name of the state owning this entry. Multiple entries per state are allowed. Token holds a string that triggers a state transition. NextState holds the target of the state transition. Flags is an optional field and is used to trigger special parser behavior. Flags can be comma separated if you need to use more than one. Function defines an action that is triggered upon state transition. Spaces will be stripped from all fields but Token. If a fields requires a colon it has to be escaped with a backslash. Other escape characters supported are \n, \r and \t. By default this parameter is set to an empty list.
- Directive rules: There are some special cases which will cause the parser to do additional actions.
* When writing a value without a key, the state name will become the key. * If two keys are written in a row the first key will hold a null value. * Writing a key while writing array elements will close the array.
- Directive flags: Flags can modify the parser behavior and can be used to store values on a stack across multiple directives.
continue: Prepend the token to the next match.
append: Append the token to the current match and continue reading.
include: Append the token to the current match.
push: Push the current state to the stack.
pop: Pop the stack and use the returned state if possible.
- Directive actions: Actions are used to write text read since the last transition to the JSON object.
key: Write the parsed section as a key.
val: Write the parsed section as a value without quotes.
esc: Write the parsed section as a escaped string value.
dat: Write the parsed section as a timestamp value.
arr: Start a new array.
obj: Start a new object.
end: Close an array or object.
arr+val: arr followed by val.
arr+esc: arr followed by esc.
arr+dat: arr followed by dat.
val+end: val followed by end.
esc+end: esc followed by end.
dat+end: dat followed by end.
Examples ¶
The following example parses JSON data.
ExampleConsumer: Type: consumer.Console Streams: console Modulators: - format.TextToJSON: Directives: - "findKey :\": key : : " - "findKey :}: : pop : end " - "key :\": findVal : : key " - "findVal :\\:: value : : " - "value :\": string : : " - "value :[: array : push : arr " - "value :{: findKey : push : obj " - "value :,: findKey : : val " - "value :}: : pop : val+end" - "string :\": findKey : : esc " - "array :[: array : push : arr " - "array :{: findKey : push : obj " - "array :]: : pop : val+end" - "array :,: array : : val " - "array :\": arrString : : " - "arrString :\": array : : esc "
func (*TextToJSON) ApplyFormatter ¶ added in v0.5.0
func (format *TextToJSON) ApplyFormatter(msg *core.Message) error
ApplyFormatter update message payload
func (*TextToJSON) Configure ¶ added in v0.5.0
func (format *TextToJSON) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Timestamp ¶
type Timestamp struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Timestamp formatter plugin
Timestamp is a formatter that allows prefixing messages with a timestamp (time of arrival at gollum). The timestamp format is freely configurable and can e.g. contain a delimiter sequence at the end.
Parameters ¶
- Timestamp: This value defines a Go time format string that is used to f ormat the timestamp. By default this parameter is set to "2006-01-02 15:04:05 MST | ".
Examples ¶
This example will set a time string to the meta data field `time`:
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.Timestamp: Timestamp: "2006-01-02T15:04:05.000 MST" ApplyTo: time
func (*Timestamp) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Timestamp) Configure ¶
func (format *Timestamp) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
type Trim ¶ added in v0.5.0
type Trim struct { core.SimpleFormatter `gollumdoc:"embed_type"` // contains filtered or unexported fields }
Trim formatter
This formatter searches for separator strings and removes all data left or right of this separator.
Parameters ¶
- LeftSeparator: The string to search for. Searching starts from the left side of the data. If an empty string is given this parameter is ignored. By default this parameter is set to "".
- RightSeparator: The string to search for. Searching starts from the right side of the data. If an empty string is given this parameter is ignored. By default this parameter is set to "".
- LeftOffset: Defines the search start index when using LeftSeparator. By default this parameter is set to 0.
- RightOffset: Defines the search start index when using RightSeparator. Counting starts from the right side of the message. By default this parameter is set to 0.
Examples ¶
This example will reduce data like "foo[bar[foo]bar]foo" to "bar[foo]bar".
exampleConsumer: Type: consumer.Console Streams: "*" Modulators: - format.Trim: LeftSeparator: "[" RightSeparator: "]"
func (*Trim) ApplyFormatter ¶ added in v0.5.0
ApplyFormatter update message payload
func (*Trim) Configure ¶ added in v0.5.0
func (format *Trim) Configure(conf core.PluginConfigReader)
Configure initializes this formatter with values from a plugin config.
Source Files ¶
- aggregate.go
- base64decode.go
- base64encode.go
- clear.go
- collectddata.go
- collectdtoinflux08.go
- collectdtoinflux09.go
- collectdtoinflux10.go
- double.go
- envelope.go
- extractjson.go
- groktojson.go
- hostname.go
- identifier.go
- jsontoarray.go
- jsontoinflux10.go
- metadatacopy.go
- processjson.go
- processtsv.go
- regexp.go
- runlength.go
- sequence.go
- serialize.go
- splitpick.go
- splittojson.go
- streamname.go
- streamrevert.go
- streamroute.go
- templatejson.go
- texttojson.go
- timestamp.go
- trim.go