Logstash 6.2-完整持久队列(映射错误?)

Logstash 6.2-完整持久队列(映射错误?),logstash,elastic-stack,filebeat,Logstash,Elastic Stack,Filebeat,我的队列几乎已满,我在日志文件中看到以下错误: [2018-05-16T00:01:33,334][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"2018.05.15-el-mg_papi-prod", :_type=>"doc", :_rout

我的队列几乎已满,我在日志文件中看到以下错误:

[2018-05-16T00:01:33,334][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"2018.05.15-el-mg_papi-prod", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x608d85c1>], :response=>{"index"=>{"_index"=>"2018.05.15-el-mg_papi-prod", "_type"=>"doc", "_id"=>"mHvSZWMB8oeeM9BTo0V2", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse [papi_request_json.query.disableFacets]", "caused_by"=>{"type"=>"i_o_exception", "reason"=>"Current token (VALUE_TRUE) not numeric, can not use numeric value accessors\n at [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper@56b8442f; line: 1, column: 555]"}}}}}
[2018-05-16T00:01:37,145][INFO ][org.logstash.beats.BeatsHandler] [local: 0:0:0:0:0:0:0:1:5000, remote: 0:0:0:0:0:0:0:1:50222] Handling exception: org.logstash.beats.BeatsParser$InvalidFrameProtocolException: Invalid Frame Type, received: 69
[2018-05-16T00:01:37,147][INFO ][org.logstash.beats.BeatsHandler] [local: 0:0:0:0:0:0:0:1:5000, remote: 0:0:0:0:0:0:0:1:50222] Handling exception: org.logstash.beats.BeatsParser$InvalidFrameProtocolException: Invalid Frame Type, received: 84

...

[2018-05-16T15:28:09,981][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
[2018-05-16T15:28:09,982][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
[2018-05-16T15:28:09,982][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
[2018-05-16T00:01:33334][WARN][logstash.outputs.elasticsearch]无法将事件索引到elasticsearch。{:status=>400,:action=>nil,{:u id=>nil,:\u index=>“2018.05.15-el-mg\u-papi-prod”,:\u type=>“doc”,:\u routing=>nil},{[papi_请求\u json.query.disableFacets],“由”=>{“类型”=>“i_o_异常”引起的”,“原因”=>“当前令牌(值\u TRUE)不是数字,无法在[Source:org.elasticsearch.common.bytes.BytesReference使用数值访问器\n$MarkSupportingStreamInputWrapper@56b8442f;行:1,列:555]“}”
[2018-05-16T00:01:37145][INFO][org.logstash.beats.BeatsHandler][local:0:0:0:0:0:0:1:5000,remote:0:0:0:0:0:0:0:0:1:50222]处理异常:org.logstash.beats.BeatsParser$InvalidFrameProtocolException:无效帧类型,收到:69
[2018-05-16T00:01:37147][INFO][org.logstash.beats.BeatsHandler][local:0:0:0:0:0:0:1:5000,remote:0:0:0:0:0:0:0:0:1:50222]处理异常:org.logstash.beats.BeatsParser$InvalidFrameProtocolException:无效帧类型,收到:84
...
[2018-05-16T15:28:09981][INFO][logstash.outputs.elasticsearch]重试失败的操作,响应代码:403({“type”=>“cluster\u block\u exception”,“reason”=>“block by:[禁止/12/索引只读/允许删除(api)];”)
[2018-05-16T15:28:09982][INFO][logstash.outputs.elasticsearch]重试失败的操作,响应代码:403({“type”=>“cluster\u block\u exception”,“reason”=>“block by:[禁止/12/索引只读/允许删除(api)];”)
[2018-05-16T15:28:09982][INFO][logstash.outputs.elasticsearch]重试失败的操作,响应代码:403({“type”=>“cluster\u block\u exception”,“reason”=>“block by:[禁止/12/索引只读/允许删除(api)];”)
若我理解第一个警告,问题在于映射。我的队列日志存储文件夹中有很多文件。我的问题是:

  • 如何清空我的队列,我是否可以从logstash队列文件夹中删除所有文件(所有日志都将丢失)?然后将所有数据重新发送到logstash的适当索引
  • 我如何确定映射中的具体问题在哪里,或者哪些服务器发送错误类型的数据
  • 我在端口5000上有一个名为testing pipeline的管道,用于检查Logstash是否在nagios中处于活动状态。这是什么
    [INFO][org.Logstash.beats.BeatsHandler]
    日志
  • 如果我理解正确,
    [INFO][logstash.outputs.elasticsearch]
    只是关于重试处理logstash队列的日志
  • 所有服务器上都安装了FIlebeat 6.2.2。感谢您的帮助

  • 可以删除队列中的所有页面,但这不是正确的解决方案。在我的情况下,队列已满,因为存在具有不同索引映射的事件。在Elasticsearch 6中,您无法将具有不同映射的文档发送到同一索引,因此日志因此而堆积在队列中(即使只有一个错误事件,也不会处理所有其他事件)。因此,如何处理可以处理的所有数据?跳过错误事件?解决方案是配置DLQ()。每个响应代码为400或404的事件都会移动到DLQ,以便处理其他事件。DLQ中的数据可以稍后通过管道进行处理

  • 错误的映射可以通过错误日志“error”=>
    {“type”=>“mapper\u parsing\u exception”,…}
    确定。要指定错误映射的确切位置,必须比较事件和索引的映射

  • [INFO][org.logstash.beats.BeatsHandler]
    是由Nagios服务器引起的。检查不包含有效的请求,这就是处理异常的原因。检查应该测试logstash服务是否处于活动状态。现在,我检查
    本地主机:9600
    上的Logstas服务以了解更多信息

  • [INFO][logstash.outputs.elasticsearch]
    表示logstash试图处理队列,但索引被锁定(
    [probled/12/index read-only/allow delete(api)]
    )因为索引已设置为只读状态。Elasticsearch在服务器上没有足够空间时,会自动将索引配置为只读。有关详细信息,可通过
    群集、路由、分配、磁盘、水印、低
    进行更改