我已经设置了版本5 ELK堆栈(使用X-Pack),我使用以下logstash conf文件,它似乎正确解析访问日志(正如我在输出中看到的那样):
input {
file {
path => ["/path/to/access_log"]
start_position => "beginning"
}
}
filter {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
user => "elastic"
password => "*****"
}
stdout { codec => rubydebug }
}
然而,弹性搜索输出返回 404(“没有这样的索引”)错误无论我做什么,除非我尝试使用以下curl命令手动创建索引:
curl -XPUT 'elastic:******@localhost:9200/logstash-2016.09.28
[2016-11-02T17:30:09,535] [WARN] [logstash.outputs.elasticsearch] 行动失败。 {:status => 404,:action => [“index”,{:_ id => nil, :_index =>“logstash-2016.09.28”,:_ type =>“apache_access”, :_routing => nil},2016-09-28T11:50:32.000Z mypchost 10.2.33.155 - - [28 / Sep / 2016:14:50:32 +0300]“GET / MyApp / page HTTP / 1.1”302 - “http://myhttpserver/MyApp/page?22”“Mozilla / 5.0(Windows NT 6.1; WOW64; rv:35.0)Gecko / 20100101 Firefox / 35.0“], :响应=> { “指数”=> { “_指数”=> “中logstash-2016年9月28日”, “_type”=>“apache_access”,“_ id”=> nil,“status”=> 404, “error”=> {“type”=>“index_not_found_exception”,“reason”=>“没有这样的 index“,”resource.type“=>”index_expression“, “resource.id”=>“logstash-2016.09.28”,“index_uuid”=>“ na ”, “索引”=> “中logstash-2016年9月28日”}}}}
不自动创建索引可能会出现什么问题?
修改 从ES卸载X-Pack并重新运行logstash完成了这项工作,即创建了一个索引。 现在我需要找出X-Pack的问题。
答案 0 :(得分:9)
最后,问题是由我在ELK安装 X-Pack软件包时添加的 elasticsearch.yml 中的以下行引起的:
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
答案 1 :(得分:0)
尝试修改logstash
输出并尝试重新编制索引。我可以看到你没有索引参数,你需要logstash
文件才能创建索引。
如果您使用logstash
对其进行索引,则不必单独运行CURL命令。这将自动创建索引。
output {
elasticsearch {
index => "yourindex"
}
stdout { codec => rubydebug }
}
显然,由于尚未创建索引,因此它会抛出该错误。使用此CURL logstash
运行curl 'yourhost:9200/_cat/indices?v'
文件后,检查是否已创建索引。上面的命令会列出所有索引。