反序列化数据

编辑

本节中描述的插件可用于将数据反序列化为 Logstash 事件。

avro 编解码器

读取序列化的 Avro 记录作为 Logstash 事件。此插件反序列化单个 Avro 记录。它不用于读取 Avro 文件。Avro 文件具有必须在输入时处理的独特格式。

以下配置反序列化来自 Kafka 的输入

input {
  kafka {
    codec => {
      avro => {
        schema_uri => "/tmp/schema.avsc"
      }
    }
  }
}
...
csv 过滤器

将逗号分隔的值数据解析为单个字段。默认情况下,过滤器会自动生成字段名称(column1、column2 等),或者您可以指定名称列表。您还可以更改列分隔符。

以下配置将 CSV 数据解析为 columns 字段中指定的字段名称

filter {
  csv {
    separator => ","
    columns => [ "Transaction Number", "Date", "Description", "Amount Debit", "Amount Credit", "Balance" ]
  }
}
fluent 编解码器

读取 Fluentd msgpack 模式。

以下配置解码从 fluent-logger-ruby 收到的日志

input {
  tcp {
    codec => fluent
    port => 4000
  }
}
json 编解码器

解码(通过输入)和编码(通过输出)JSON 格式的内容,为 JSON 数组中的每个元素创建一个事件。

以下配置解码文件中的 JSON 格式内容

input {
  file {
    path => "/path/to/myfile.json"
    codec =>"json"
}
protobuf 编解码器

读取 protobuf 编码的消息并将其转换为 Logstash 事件。需要将 protobuf 定义编译为 Ruby 文件。您可以使用 ruby-protoc 编译器来编译它们。

以下配置解码来自 Kafka 流的事件

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 过滤器

将 XML 解析为字段。

以下配置解析存储在 message 字段中的整个 XML 文档

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