一、输入

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命令导入旧数据