如何确认logstash已处理日志并提供给ES

时间:2016-05-05 12:52:23

标签: elasticsearch logstash logstash-grok

我是ELK的新用户。我使用heka作为ELK堆栈的日志运输代理。我已将Logstash配置为从路径中获取日志。我的logstash看起来像这样

input {
    file {
            path => "/var/log/nds/cmdc/cmdc.audit"
    }
}
output {
  elasticsearch {
  hosts => ["10.209.26.147:9200"]
                }
       }

当我开始logstash时,以下是输出。

[root@astroELK logstash]# bin/logstash -f /etc/logstash/conf.d/astro_pdl.conf
--- jar coordinate com.fasterxml.jackson.core:jackson-annotations already loaded with version 2.7.1 - omit version 2.7.0
--- jar coordinate com.fasterxml.jackson.core:jackson-databind already loaded with version 2.7.1 - omit version 2.7.1-1
Settings: Default pipeline workers: 2
Pipeline main started

我也没有在日志中看到任何内容。如何确保logstash已从正确的路径处理日志。如果我启动ElasticSearch,我可以看到以下内容:

[Morg] recovered [0] indices into cluster_state

如果我的配置设置有任何问题,请有人告诉我。

2 个答案:

答案 0 :(得分:1)

您需要先启动ElasticSearch。因为ElasticSearch是用于存储日志的数据库,Logstash会将日志数据推送到那里。     此外,您需要确保您的日志来到配置到输入中的日志文件。我正在提供一个示例logstash配置,它将为您提供帮助。

input {
file {
    path => "<filePath>"
  }
 }

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    sniffing => true
    manage_template => false
    index => "%{index}-%{+YYYY.MM.dd}"

  }
  stdout {
   codec => rubydebug
    }
}

在上面的配置中,我使用简单的文件路径作为输入。在过滤器部分中,我也使用默认COMBINEDAPACHELOG。     在输出部分,我给出了弹性搜索主机和端口,并且还为每天动态创建索引。

将此配置为您的logstash配置后,您需要先使用配置[Command logstash -f logstash-simple.conf]重新启动elaslic搜索,然后重新启动logstash。

然后它会将您的日志推送到elasticsearch,您可以通过创建在配置中设置的索引(例如index-2016.05.16),通过Kibana UI查看此日志。

您还可以使用针对该特定索引的curl命令检查弹性搜索中的数据。

$ curl -XGET 'http://localhost:9200/*

答案 1 :(得分:0)

file输入插件的默认行为是在tail -f命令中读取文件。因此,请检查文件是否有新行。您可以在文件插件中添加start_position => beginning选项以开始从文件开头读取。

您还可以将stdout {}添加到输出插件以及elasticsearch,它也会将结果输出到标准输出。