一、概念
logstash是一个数据抽取工具,将数据从数据源经过一系列处理后推送到ES中,数据源包括日志文件、数据库中的数据等,输入到ES中方便检索。 下载地址:www.elastic.co/cn/download…
logstash之所以功能强大和流行,还与其丰富的过滤器插件是分不开的,过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理,甚至添加独特的事件到后续流程中。
Logstash配置文件有如下三部分组成,其中input、output部分是必须配置,filter部分是可选配置,而filter就是过滤器插件,可以在这部分实现各种日志过滤功能。
配置文件:
input {
#输入插件
}
filter {
#过滤匹配插件
}
output {
#输出插件
}
启动操作:(数据从控制台来,从控制台输出)
logstash.bat -e 'input{stdin{}} output{stdout{}}'
为了好维护,将配置写入文件,按如下命令启动
logstash.bat -f ../config/test1.conf
test1.conf配置如下:
input {
stdin {
}
}
filter {
#过滤匹配插件
}
output {
stdout {
codec=>rubydebug
}
}
二、输入插件
1、标准输入(Stdin)
input{
stdin{
}
}
output {
stdout{
codec=>rubydebug
}
}
2、读取文件(File)
logstash使用一个名为filewatch的ruby gem库来监听文件变化,并通过一个叫.sincedb的数据库文件来记录被监听的日志文件的读取进度(时间戳),这个sincedb数据文件的默认路径在 <path.data>/plugins/inputs/file下面,文件名类似于.sincedb_123456,而<path.data>表示logstash插件存储目录,默认是LOGSTASH_HOME/data。
input {
file {
path => ["/var/*/*"]
start_position => "beginning"
}
}
output {
stdout{
codec=>rubydebug
}
}
默认情况下,logstash会从文件的结束位置开始读取数据,也就是说logstash进程会以类似tail -f命令的形式逐行获取数据。
3、读取TCP网络数据
input {
tcp {
port => "1234"
}
}
filter {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
}
output {
stdout{
codec=>rubydebug
}
}