一、输入
a、标准输入:
input { stdin { add_field => {"key" =>"value"} codec =>"plain" tags => ["add"] type => "std" }}output { stdout { codec => rubydebug {} }}
其中tags和type 是logstash中两个特殊字段。type 一般用来指定事件类型,tags是在数据处理过程中,由具体的插件来添加或删除。
b、文件输入
logstash 使用FileWatch的ruby gem库来监听文件变化,支持glob展开文件路径
FileWatch只支持文件的绝对路径而且不会自动递归目录,但可以用**来缩写表示递归全部子目录
/path/to/**/*.log
input { file { path => "/var/log/messages" type => "syslog" } file { path => "/var/log/httpd/access_log" type => "apache_log"}}filter { if [type] == "syslog" { grok { match => [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message}" ] overwrite => [ "message" ] } } else if [type] == "apache_log" { grok { match => ["message", "%{COMMONAPACHELOG}"] } } }output { stdout { codec => rubydebug } elasticsearch { embedded => "true"}}
c、TCP输入,最常见的是配合nc命令导入旧数据