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 库来监听文件变化
- 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 大数据语音推荐: ELK7 stack开发运维 企业级大数据技术应用 大数据机器学习案例之推荐系统 自然语言处理 大数据基础 人工智能:深度学习入门到精通
|