Back to Logstash

Deserializing Data [data-deserialization]

docs/reference/data-deserialization.md

9.4.02.7 KB
Original Source

Deserializing Data [data-deserialization]

The plugins described in this section are useful for deserializing data into Logstash events.

avro codec : Reads serialized Avro records as Logstash events. This plugin deserializes individual Avro records. It is not for reading Avro files. Avro files have a unique format that must be handled upon input.

The following config deserializes input from Kafka:

```json
input {
  kafka {
    codec => {
      avro => {
        schema_uri => "/tmp/schema.avsc"
      }
    }
  }
}
...
```

csv filter : Parses comma-separated value data into individual fields. By default, the filter autogenerates field names (column1, column2, and so on), or you can specify a list of names. You can also change the column separator.

The following config parses CSV data into the field names specified in the `columns` field:

```json
filter {
  csv {
    separator => ","
    columns => [ "Transaction Number", "Date", "Description", "Amount Debit", "Amount Credit", "Balance" ]
  }
}
```

fluent codec : Reads the Fluentd msgpack schema.

The following config decodes logs received from `fluent-logger-ruby`:

```json
input {
  tcp {
    codec => fluent
    port => 4000
  }
}
```

json codec : Decodes (via inputs) and encodes (via outputs) JSON formatted content, creating one event per element in a JSON array.

The following config decodes the JSON formatted content in a file:

```json
input {
  file {
    path => "/path/to/myfile.json"
    codec =>"json"
}
```

protobuf codec : Reads protobuf encoded messages and converts them to Logstash events. Requires the protobuf definitions to be compiled as Ruby files. You can compile them by using the ruby-protoc compiler.

The following config decodes events from a Kafka stream:

```json
input
  kafka {
    zk_connect => "127.0.0.1"
    topic_id => "your_topic_goes_here"
    codec => protobuf {
      class_name => "Animal::Unicorn"
      include_path => ['/path/to/protobuf/definitions/UnicornProtobuf.pb.rb']
    }
  }
}
```

xml filter : Parses XML into fields.

The following config parses the whole XML document stored in the `message` field:

```json
filter {
  xml {
    source => "message"
  }
}
```