数据反序列化
编辑数据反序列化
编辑本节中描述的插件可用于将数据反序列化到 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" } }