4.Logstash插件—输入插件&编码插件(Codec)

4.1 标准输入(Stdin)

  • 配置示例
input {
  stdin {
    add_field => {"key" => "value"}
    codec => "plain"
    tags => ["add"]
    type => "std"
  } 
}

4.2 运行结果

  • 运行命令:bin/logstash -f stdin.conf
{
      "message" => "hello world",
    "@version" => "1",
  "@timestamp" => "2014-08-08T06:48:47.789Z",
      "type" => "std",
      "tags" => [
    [0] "add"
  ],
      "key" => "value",
      "host" => "raochenlindeMacBook-Air.local"
}

4.3 标准输入

  • type 和 tags 是 logstash 事件中两个特殊的字段
    • 通常来说会在输入区段中通过 type 来标记事件类型
    • 而 tags 则是在数据处理过程中,由具体的插件来添加或者删除的


4.4 读取文件(File)

  • Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化
    • 这个库支持 glob 展开文件路径
  • sincedb 文件中记录了每个被监听的文件的 inode, major number, minor number 和pos
  • 配置示例


4.4.1 读取文件(File)注意事项

  • 通常要导入原有数据进 Elasticsearch 的话,还需要 filter/date 插件来修改默认的"@timestamp" 字段值
  • FileWatch 只支持文件的绝对路径,而且会不自动递归目录
    • 所以有需要的话,就用数组方式都写明具体哪些文件
  • LogStash::Inputs::File 只是在进程运行的注册阶段初始化一个 FileWatch 对象
    • 所以它不能支持类似 fluentd 那样的 path => "/path/to/{+yyyy/MM/dd/hh}.log" 写法
    • 达到相同目的,你只能写成 path => "/path/to////.log"

4.5 读取网络数据(TCP)

  • 配置示例


4.6 常见场景

  • LogStash::Inputs::TCP 最常见的用法就是配合 nc 命令导入旧数据
    • 在启动 logstash 进程后,在另一个终端运行如下命令即可导入数据:
# nc 127.0.0.1 8888 < olddata

4.7 生成测试数据(Generator)

  • 配置示例
    • 插件的默认生成数据,message 内容可以根据自己的实际需要这里来写其他内容


4.8 读取 Syslog 数据

  • 配置示例
input {
   syslog {
     port => "514"
   }
}
  • Logstash 是用 UDPSocket, TCPServer 和 LogStash::Filters::Grok 来实现
    LogStash::Inputs::Syslog 的
    • 所以可以直接用 logstash 配置实现一样的效果:


4.8.1 读取 Syslog 数据最佳实践

  • 建议使用LogStash::Inputs::TCP和 LogStash::Filters::Grok 配合实现同样的 syslog 功能
    • 在同一个客户端数据的处理中,其 grok 和 date 是一直在该线程中完成的,这会导致总体上的处理性能几何级的下降
    • 拆分到 filters 阶段后,logstash 支持对该阶段插件单独设置多线程运行,大大提高了总体处理性能

大数据视频推荐:
腾讯课堂
CSDN
ELK入门精讲
AIOps智能运维实战
ELK7 stack开发运维
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

你可能感兴趣的:(4.Logstash插件—输入插件&编码插件(Codec))