input区块提供logstash的事件来源,常用的插件有file,stdin,syslog,kafka等
更多input插件知识请查看官方文档
stdin插件:
从标准输入读取事件
示例:
input {
stdin {
add_field => {"key" => "value"}
codec => "plain"
type => "std"
tags => ["test"]
}
}
add_field:事件中添加一个字段
codec:codec是一个编解码器,在输入前对数据进行编解码,无需在filter中使用特定的插件处理
type:加上一个类型字段,用来标记事件类型
tags:标记事件的某方面属性。这是一个数组,一个事件可以有多个标签。
file插件:
Logstash 使用一个名叫FileWatch的Ruby Gem库来监听文件变化。这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据。
sincedb文件中记录了每个被监听的文件的 inode number, major device number, minor device number和byte offset。
示例:
input {
file {
path => "/var/log/test.log"
type => "test"
sincedb_path => "/tmp/.sincedb_test"
start_positon => "beginning"
}
}
path:文件路径,可使用通配符,如/var/log/*.log,/var/**/*.log(**表示递归所有子目录)
type:加上一个类型字段,用来标记事件类型
sincedb_path:定义sincedb文件的位置(默认在用户家目录下,只能是beginning,end)
start_position:从什么位置开始读取文件数据,默认是结束位置
kafka插件:
该插件从kafka中的topic中读取事件
示例:
input {
kafka {
zk_connect => "10.10.10.6:2181,10.10.10.8:2181,10.10.10.9:2181"
topic_id => "command_audit_log"
codec => "json"
consumer_threads => 5
type => "command-audit"
}
}
zk_connect:zookeeper的主机名和端口
topic_id: 指定消费主题
consumer_threads:定义分区读取数据的线程数