jenkins logstash-plugin 无法 post 到 elasticSearch

jenkins logstash-plugin unable to post to elasticSearch

我已经为 jenkins 安装了 logstash-plugin 并将其配置为使用索引器作为弹性搜索。

执行作业时出现以下错误:

16:56:12 [logstash-plugin]: Failed to send log data to ELASTICSEARCH:http://localhost:9200.
16:56:12 [logstash-plugin]: No Further logs will be sent to http://localhost:9200.
16:56:12 java.io.IOException: HTTP error code: 200
16:56:12 URI: http://localhost:9200/logstash-jenkins
16:56:12 RESPONSE: HttpResponseProxy{HTTP/1.1 200 OK [Content-Type:     application/json; charset=UTF-8, Content-Length: 21] ResponseEntityProxy{[Content-Type: application/json; charset=UTF-8,Content-Length: 21,Chunked: false]}}
16:56:12 {"acknowledged":true}
16:56:12    at jenkins.plugins.logstash.persistence.ElasticSearchDao.push(ElasticSearchDao.java:113)
16:56:12    at jenkins.plugins.logstash.LogstashWriter.write(LogstashWriter.java:147)
16:56:12    at jenkins.plugins.logstash.LogstashWriter.write(LogstashWriter.java:85)
16:56:12    at jenkins.plugins.logstash.LogstashOutputStream.eol(LogstashOutputStream.java:58)
16:56:12    at hudson.console.LineTransformationOutputStream.eol(LineTransformationOutputStream.java:60)
16:56:12    at hudson.console.LineTransformationOutputStream.write(LineTransformationOutputStream.java:56)
16:56:12    at hudson.console.LineTransformationOutputStream.write(LineTransformationOutputStream.java:74)
16:56:12    at java.io.PrintStream.write(PrintStream.java:480)
16:56:12    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
16:56:12    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
16:56:12    at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
16:56:12    at     java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
16:56:12    at java.io.PrintStream.newLine(PrintStream.java:546)
16:56:12    at java.io.PrintStream.println(PrintStream.java:807)
16:56:12    at hudson.model.Cause$UserIdCause.print(Cause.java:426)
16:56:12    at     hudson.model.StreamBuildListener.started(StreamBuildListener.java:75)
16:56:12    at hudson.model.Run.execute(Run.java:1723)
16:56:12    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
16:56:12    at     hudson.model.ResourceController.execute(ResourceController.java:98)
16:56:12    at hudson.model.Executor.run(Executor.java:410)

希望能提供有关如何修复此错误的任何线索。

谢谢 - 普拉泰克

在 Jenkins 插件中,您需要定义包含 [yourindex]/[yourtype] 的 elasticsearch url,如下所示: http://localhost:9200/yourindex/yourtype 希望对你有帮助。

您是否正在尝试使用 Logstash 将日志输入 Elasticsearch?尽管被称为 'Logstash Plugin',但 Jenkins Logstash 插件不支持此功能。我发现当我尝试将日志直接发送到 Elasticsearch 时,插件工作正常,但是当我尝试通过 Logstash 时,我遇到了与您相同的错误。

目前在 Jenkins Logstash github 中有一个 pull request 来修复这个错误 (https://github.com/jenkinsci/logstash-plugin/pull/22),但是由于插件已经 10 个月没有活动了(在撰写本文时)我不抱太大希望了。

如果您想将日志直接发送到 Elasticsearch,您需要配置 Elasticsearch 以监听远程连接。在 elasticsearch.yml 中设置以下内容:

network.host: 0.0.0.0 http.port: 7590

然后在Jenkins中设置Elasticsearchurl为http://:7590/

希望对您有所帮助!