【问题标题】:Jenkins Logstash plugin doesn't send data to LogstashJenkins Logstash 插件不向 Logstash 发送数据
【发布时间】:2017-11-12 02:23:57
【问题描述】:

我想使用 Jenkins-Logstash 插件将 Jenkins 日志发送到 Logstash。

这就是我在 Jenkins 中配置 Logstash 插件的方式:

[jenkins-logstash-plugin 配置][1][1]:https://i.stack.imgur.com/EsIgY.png

我假设在 logstash.conf 中我必须在输入部分使用 HTTP 插件:

input {
  http {
    host => "127.0.0.1"
    port => 31311
  }
}

但在 Jenkins 构建日志中我可以看到错误:

> [logstash-plugin]: Failed to send log data to
> ELASTICSEARCH:http://host_name:31311. [logstash-plugin]: No Further
> logs will be sent to http://host_name:31311.
> org.apache.http.conn.HttpHostConnectException: Connect to
> host_name:31311 [/host_name] failed: Connection refused (Connection
> refused)  at
> org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
>   at
> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
> ... 
> Caused by: java.net.ConnectException: Connection refused
> (Connection refused)  at java.net.PlainSocketImpl.socketConnect(Native
> Method)   at
> java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

当我将 Jenkins 配置中的端口号更改为 Elasticsearch 端口 9200 而不是 31311 时,错误消失了。但在这种情况下,数据会直接写入 Elasticsearch。

如何设置 Jenkins 将构建日志发送到 Logstash?

更新: 我现在可以在 Logstash 中发送和获取日志,一切正常。但是在 Jenkins 控制台中,我可以在将日志发送到 Logstash 时看到错误,可以接受吗?

20:54:11 [logstash-plugin]: Failed to send log data to ELASTICSEARCH:host_name:31311.
20:54:11 [logstash-plugin]: No Further logs will be sent to host_name:31311.
20:54:11 java.io.IOException: HTTP error code: 200
20:54:11 URI: host_name:31311/jenkins-qa/type
20:54:11 RESPONSE: HttpResponseProxy{HTTP/1.1 200 OK [Content-Type: text/plain, Content-Length: 2] ResponseEntityProxy{[Content-Type: text/plain,Content-Length: 2,Chunked: false]}}
20:54:11 ok
20:54:11    at jenkins.plugins.logstash.persistence.ElasticSearchDao.push(ElasticSearchDao.java:113)
20:54:11    at jenkins.plugins.logstash.LogstashWriter.write(LogstashWriter.java:147)
20:54:11    at jenkins.plugins.logstash.LogstashWriter.writeBuildLog(LogstashWriter.java:116)
20:54:11    at jenkins.plugins.logstash.LogstashNotifier.perform(LogstashNotifier.java:63)
20:54:11    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
20:54:11    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
20:54:11    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:720)
20:54:11    at hudson.model.Build$BuildExecution.post2(Build.java:186)
20:54:11    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:665)
20:54:11    at hudson.model.Run.execute(Run.java:1753)
20:54:11    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
20:54:11    at hudson.model.ResourceController.execute(ResourceController.java:98)
20:54:11    at hudson.model.Executor.run(Executor.java:405)
20:54:11 Finished: SUCCESS

【问题讨论】:

  • 您不应该使用用户名、密码和密钥吗?
  • @VonC 谢谢。现在一切正常,但 Jenkins 控制台中显示错误消息,可以吗?虽然在向 Elasticsearch 发送日志时没有显示这样的错误。(我用控制台错误信息更新了问题)
  • 好的,我已经添加了一个解决第二条错误消息的答案

标签: elasticsearch jenkins logstash jenkins-plugins


【解决方案1】:

正如 OP 所述,第一个问题是凭据问题(用户名、密码、密钥)

第二条错误信息(“No Further logs will be sent to...”)是seen here,表示:

【讨论】:

  • 顺便说一句,日志在 Logstash 中显示为一行文本 - 所有日志记录都被连接起来。是否可以获取标准多行格式的日志?
  • @jack_017 我不知道。也许这是一个配置问题。
猜你喜欢
  • 1970-01-01
  • 2016-08-06
  • 2023-03-05
  • 2019-01-13
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多