添加 requestTimeout 导致 Kibana 启动失败
Adding requestTimeout causes Kibana to fail at startup
我正在尝试使用 Elasticsearch-Kibana-Logstash 来处理 Web 日志文件。
有些查询需要一点时间,而 Kibana 很快就会超时,所以我想增加 Kibana 等待 elasticsearch 响应的时间。经过一番搜索,我找到了一些设置 elasticsearch.requestTimeout
的建议。我试图通过将此添加到我的 kibana.yml 文件来增加超时:
elasticsearch.requestTimeout: 5000
这会导致 Kibana 在启动时立即失败并出现以下错误:
kibserver_1 | FATAL { Error: Payload timeout must be shorter than socket timeout: POST /elasticsearch/{index}/_search
kibserver_1 | at Object.exports.assert (/usr/share/kibana/node_modules/hoek/lib/index.js:736:11)
kibserver_1 | at new module.exports.internals.Route (/usr/share/kibana/node_modules/hapi/lib/route.js:69:10)
kibserver_1 | at internals.Connection._addRoute (/usr/share/kibana/node_modules/hapi/lib/connection.js:387:19)
kibserver_1 | at internals.Connection._route (/usr/share/kibana/node_modules/hapi/lib/connection.js:379:18)
kibserver_1 | at internals.Plugin._apply (/usr/share/kibana/node_modules/hapi/lib/plugin.js:572:14)
kibserver_1 | at internals.Plugin.route (/usr/share/kibana/node_modules/hapi/lib/plugin.js:542:10)
kibserver_1 | at createProxy (/usr/share/kibana/src/core_plugins/elasticsearch/lib/create_proxy.js:85:14)
kibserver_1 | at ScopedPlugin.init [as externalInit] (/usr/share/kibana/src/core_plugins/elasticsearch/index.js:110:37)
kibserver_1 | at ScopedPlugin.tryCatcher (/usr/share/kibana/node_modules/bluebird/js/main/util.js:26:23)
kibserver_1 | at Promise.attempt.Promise.try (/usr/share/kibana/node_modules/bluebird/js/main/method.js:30:24)
kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:196:46
kibserver_1 | at next (native)
kibserver_1 | at step (/usr/share/kibana/src/server/plugins/plugin.js:25:191)
kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:25:361
kibserver_1 | cause:
kibserver_1 | Error: Payload timeout must be shorter than socket timeout: POST /elasticsearch/{index}/_search
kibserver_1 | at Object.exports.assert (/usr/share/kibana/node_modules/hoek/lib/index.js:736:11)
kibserver_1 | at new module.exports.in how to resolternals.Route (/usr/share/kibana/node_modules/hapi/lib/route.js:69:10)
kibserver_1 | at internals.Connection._addRoute (/usr/share/kibana/node_modules/hapi/lib/connection.js:387:19)
kibserver_1 | at internals.Connection._route (/usr/share/kibana/node_modules/hapi/lib/connection.js:379:18)
kibserver_1 | at internals.Plugin._apply (/usr/share/kibana/node_modules/hapi/lib/plugin.js:572:14)
kibserver_1 | at internals.Plugin.route (/usr/share/kibana/node_modules/hapi/lib/plugin.js:542:10)
kibserver_1 | at createProxy (/usr/share/kibana/src/core_plugins/elasticsearch/lib/create_proxy.js:85:14)
kibserver_1 | at ScopedPlugin.init [as externalInit] (/usr/share/kibana/src/core_plugins/elasticsearch/index.js:110:37)
kibserver_1 | at ScopedPlugin.tryCatcher (/usr/share/kibana/node_modules/bluebird/js/main/util.js:26:23)
kibserver_1 | at Promise.attempt.Promise.try (/usr/share/kibana/node_modules/bluebird/js/main/method.js:30:24)
kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:196:46
kibserver_1 | at next (native)
kibserver_1 | at step (/usr/share/kibana/src/server/plugins/plugin.js:25:191)
kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:25:361,
kibserver_1 | isOperational: true }
这个让我很困惑。我似乎无法在 ElasticSearch 文档中找到对 "payload timeout" 的任何引用。我的网络搜索表明这可能来自 hapijs,但我不确定如何解决这个问题。有人知道吗?
(Kibana、ElasticSearch 和 Logstash 都是 v 6.1.0)
我认为问题在于您将超时值设置得太小,以毫秒为单位,默认值为 30000(请参阅 https://www.elastic.co/guide/en/kibana/6.1/settings.html):
elasticsearch.requestTimeout
:
Default: 30000 Time in milliseconds to wait for responses from the back end or Elasticsearch. This value must be a positive integer.
可能是 elasticsearch.requestTimeout
用于在 hapijs 中设置套接字超时,因为负载超时的默认值似乎是 10 秒(from here):
route.options.payload.timeout
Default value: to 10000 (10 seconds).
检查负载超时是否小于套接字超时时会失败。但这只是一个假设,我未能在 Kibana 的代码中找到任何证据。
我正在尝试使用 Elasticsearch-Kibana-Logstash 来处理 Web 日志文件。
有些查询需要一点时间,而 Kibana 很快就会超时,所以我想增加 Kibana 等待 elasticsearch 响应的时间。经过一番搜索,我找到了一些设置 elasticsearch.requestTimeout
的建议。我试图通过将此添加到我的 kibana.yml 文件来增加超时:
elasticsearch.requestTimeout: 5000
这会导致 Kibana 在启动时立即失败并出现以下错误:
kibserver_1 | FATAL { Error: Payload timeout must be shorter than socket timeout: POST /elasticsearch/{index}/_search kibserver_1 | at Object.exports.assert (/usr/share/kibana/node_modules/hoek/lib/index.js:736:11) kibserver_1 | at new module.exports.internals.Route (/usr/share/kibana/node_modules/hapi/lib/route.js:69:10) kibserver_1 | at internals.Connection._addRoute (/usr/share/kibana/node_modules/hapi/lib/connection.js:387:19) kibserver_1 | at internals.Connection._route (/usr/share/kibana/node_modules/hapi/lib/connection.js:379:18) kibserver_1 | at internals.Plugin._apply (/usr/share/kibana/node_modules/hapi/lib/plugin.js:572:14) kibserver_1 | at internals.Plugin.route (/usr/share/kibana/node_modules/hapi/lib/plugin.js:542:10) kibserver_1 | at createProxy (/usr/share/kibana/src/core_plugins/elasticsearch/lib/create_proxy.js:85:14) kibserver_1 | at ScopedPlugin.init [as externalInit] (/usr/share/kibana/src/core_plugins/elasticsearch/index.js:110:37) kibserver_1 | at ScopedPlugin.tryCatcher (/usr/share/kibana/node_modules/bluebird/js/main/util.js:26:23) kibserver_1 | at Promise.attempt.Promise.try (/usr/share/kibana/node_modules/bluebird/js/main/method.js:30:24) kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:196:46 kibserver_1 | at next (native) kibserver_1 | at step (/usr/share/kibana/src/server/plugins/plugin.js:25:191) kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:25:361 kibserver_1 | cause: kibserver_1 | Error: Payload timeout must be shorter than socket timeout: POST /elasticsearch/{index}/_search kibserver_1 | at Object.exports.assert (/usr/share/kibana/node_modules/hoek/lib/index.js:736:11) kibserver_1 | at new module.exports.in how to resolternals.Route (/usr/share/kibana/node_modules/hapi/lib/route.js:69:10) kibserver_1 | at internals.Connection._addRoute (/usr/share/kibana/node_modules/hapi/lib/connection.js:387:19) kibserver_1 | at internals.Connection._route (/usr/share/kibana/node_modules/hapi/lib/connection.js:379:18) kibserver_1 | at internals.Plugin._apply (/usr/share/kibana/node_modules/hapi/lib/plugin.js:572:14) kibserver_1 | at internals.Plugin.route (/usr/share/kibana/node_modules/hapi/lib/plugin.js:542:10) kibserver_1 | at createProxy (/usr/share/kibana/src/core_plugins/elasticsearch/lib/create_proxy.js:85:14) kibserver_1 | at ScopedPlugin.init [as externalInit] (/usr/share/kibana/src/core_plugins/elasticsearch/index.js:110:37) kibserver_1 | at ScopedPlugin.tryCatcher (/usr/share/kibana/node_modules/bluebird/js/main/util.js:26:23) kibserver_1 | at Promise.attempt.Promise.try (/usr/share/kibana/node_modules/bluebird/js/main/method.js:30:24) kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:196:46 kibserver_1 | at next (native) kibserver_1 | at step (/usr/share/kibana/src/server/plugins/plugin.js:25:191) kibserver_1 | at /usr/share/kibana/src/server/plugins/plugin.js:25:361, kibserver_1 | isOperational: true }
这个让我很困惑。我似乎无法在 ElasticSearch 文档中找到对 "payload timeout" 的任何引用。我的网络搜索表明这可能来自 hapijs,但我不确定如何解决这个问题。有人知道吗?
(Kibana、ElasticSearch 和 Logstash 都是 v 6.1.0)
我认为问题在于您将超时值设置得太小,以毫秒为单位,默认值为 30000(请参阅 https://www.elastic.co/guide/en/kibana/6.1/settings.html):
elasticsearch.requestTimeout
:Default: 30000 Time in milliseconds to wait for responses from the back end or Elasticsearch. This value must be a positive integer.
可能是 elasticsearch.requestTimeout
用于在 hapijs 中设置套接字超时,因为负载超时的默认值似乎是 10 秒(from here):
route.options.payload.timeout
Default value: to 10000 (10 seconds).
检查负载超时是否小于套接字超时时会失败。但这只是一个假设,我未能在 Kibana 的代码中找到任何证据。