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"
  }
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~