使用X-Pack写入Elasticsearch时,Logstash“没有这样的索引错误”

时间:2016-11-02 16:47:08

标签: elasticsearch logstash elastic-stack

我已经设置了版本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的问题。

2 个答案:

答案 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'文件后,检查是否已创建索引。上面的命令会列出所有索引。