elasticsearch - Logstash:TypeError:没有将 nil 隐式转换为字符串
问题描述
我是 ELK 的新手,并试图将第 3 方 REST API 输入到 Logstash 以将数据输入其中。我收到 TypeError: no implicit conversion of nil into string。
我正在使用 http_input_poller 插件来提供数据。这是它的配置。
input {
http_poller {
urls => {
test1 => "https://example.com/api/now/table/sys_user?sysparm_limit=1"
}
request_timeout => 60
# Supports "cron", "every", "at" and "in" schedules by rufus scheduler
schedule => { cron => "* * * * * UTC"}
codec => "json"
# A hash of request metadata info (timing, response headers, etc.) will be sent here
metadata_target => "http_poller_metadata"
}
}
output {
stdout {
codec => rubydebug
}
}
我正在使用此命令运行
sudo ./logstash -f logstash_http_poller.conf --path.settings /etc/logstash/ --path.data
我收到此错误消息
masteradmin@usr:/usr/share/logstash/bin$ sudo ./logstash -f logstash_http_poller.conf --path.settings /etc/logstash/ --path.data
[FATAL] 2020-03-18 07:07:07.377 [main] runner - An unexpected error occurred! {:error=>#<TypeError: no implicit conversion of nil into String>, :backtrace=>["org/jruby/RubyFileTest.java:96:in `directory?'", "org/jruby/RubyFileTest.java:88:in `directory?'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:510:in `block in value'", "org/jruby/RubyKernel.java:1906:in `tap'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:509:in `value'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:97:in `get_value'", "/usr/share/logstash/logstash-core/lib/logstash/environment.rb:94:in `block in LogStash'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:167:in `block in post_process'", "org/jruby/RubyArray.java:1814:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:166:in `post_process'", "/usr/share/logstash/logstash-core/lib/logstash/util/settings_helper.rb:26:in `post_process'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:246:in `execute'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:242:in `run'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'", "/usr/share/logstash/lib/bootstrap/environment.rb:73:in `<main>'"]}
[ERROR] 2020-03-18 07:07:07.386 [main] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit
需要帮忙。谢谢
解决方案
在对错误消息进行一些分析之后,我坚信发生此错误是因为没有--path.data
指定参数的值。
TypeError: no implicit conversion of nil into String>
可能表明 nil(不存在的路径)不能转换为字符串(路径/参数值必须是什么)RubyFileTest.java:96:in ``directory?'"
表示 ruby 类需要一个有效的目录
因此,请在您的运行命令中为参数指定一个值,并让我知道这是否解决了问题。
编辑:
path.data 参数不是强制性的,因此您可以将其删除。然后,默认位置将是您提取二进制文件的目录中的数据文件夹。(参见https://www.elastic.co/guide/en/logstash/current/dir-layout.html以供参考)
推荐阅读
- c++ - 我对范围和在 C++ 中声明变量有疑问
- swift - 我正在使用 SpriteKit 制作游戏,但我的视图只占据了屏幕上看似安全的区域。如何扩展此视图?
- python - 有没有办法在 python 中创建漂亮的嵌套表?
- regex - 正则表达式,如何找到字符串的第二个实例
- git - 我提交了 3 个文件,但在推送更改后又看到了另外两个文件。有什么理由吗?在这种情况下该怎么办?
- docker - 如何在使用 nginx 部署应用程序时访问 URL 路由时找不到 404?
- vue.js - (vue 路由器)在创建具有几乎相同视图的两条路由时,是否有一种不重复代码的简洁方法?
- ios - 为什么使用 FirebaseUI 进行 Apple 登录不起作用?
- deployment - CI/CD 或发布管理 - 一个发布不止一个工件
- python - 当消息框(例如错误消息)出现/打开时,如何强制关闭窗口?