elastic/logstash

Create 'exec' filter

Open

#2,528 opened on Feb 6, 2015

View on GitHub
 (1 comment) (1 reaction) (0 assignees)Ruby (3,496 forks)batch import
help wantednew plugin

Repository metrics

Stars
 (14,197 stars)
PR merge metrics
 (Avg merge 2d 22h) (75 merged PRs in 30d)

Description

Migrated from https://logstash.jira.com/browse/LOGSTASH-119:

Would be useful to pipe arbitrary fields through a command to modify them.

Here's an example that would anonymize hostnames or something.

filter {
  exec {
    command => "sed -re 's/\S+\.loggly\.com/anonymizedhost.example.com/'"
    fields => [ "@message", "hostname", "@source_host" ]
  }
}

The default would use only the message to parse

The protocol between logstash and the exec filter must be strict. Something like: for every line emitted, one line must be emitted as the 'new' line. If no changes are made, simply print it unmodified.

deleting the field can be done by printing a blank line

we exec the process once and use stdin for sending data, stdout for reading responses; if it dies, some retries should occur

Contributor guide