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

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~