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 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~