15.2. 反序列化数据【已完成】
本节描述的插件对于将数据反序列化为 Logstash 事件十分有用。
avro 译码器
将序列化的 Avro 记录读取为 Logstash 事件。该插件反序列化单独的 Avro 记录。它不是用来读取 Avro 文件的。Avro 文件有唯一的格式,必须在输入时处理。
以下配置反序列化 Kafka 输入的数据:
input {
kafka {
codec => {
avro => {
schema_uri => "/tmp/schema.avsc"
}
}
}
}
csv 过滤器
将逗号分隔的值数据解析为单独的字段。默认情况下,过滤器自动生成字段名(列1,列2等等),或者你也可以指定名称列表。你也可以改变列分隔符。
以下配置将 CSV 数据解析为 column
字段中指定的字段名称:
filter {
csv {
separator => ","
columns => [ "Transaction Number", "Date", "Description", "Amount Debit", "Amount Credit", "Balance" ]
}
}
fluent 译码器
读取 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 事件。引入编译为 Ruby 文件的 protobuf 定义文件。你可以通过使用 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"
}
}
推荐文章: