Logstash引发意外错误:<;ArgumentError:设置“&引用;没有';未注册>;,
我遵照指示: 设置cassandra jmx度量监控 我的logstash.yml如下:Logstash引发意外错误:<;ArgumentError:设置“&引用;没有';未注册>;,,logstash,jmx,Logstash,Jmx,我遵照指示: 设置cassandra jmx度量监控 我的logstash.yml如下: input { jmx { path => "/home/foo/elastic/logstash" polling_frequency => 15 type => "jmx" nb_thread => 4 } } output { stdout { codec => rubydebug
input {
jmx {
path => "/home/foo/elastic/logstash"
polling_frequency => 15
type => "jmx"
nb_thread => 4
}
}
output {
stdout { codec => rubydebug }
}
在/home/foo/elastic/logstash
下,我使用以下信息定义了一个jmx.conf
文件:
//Required, JMX listening host/ip
"host" : "192.168.1.139",
//Required, JMX listening port
"port" : 7199,
//Optional, the username to connect to JMX
"username" : "foo",
//Optional, the password to connect to JMX
"password": "foo",
//Optional, use this alias as a prefix in the metric name. If not set use <host>_<port>
"alias" : "cassandra",
我得到以下错误:
将Logstash的日志发送到/usr/share/Logstash/logs,该日志现在通过log4j2.properties配置
[致命]2017-10-28 22:57:23.812[主要]跑步者-发生意外错误!{:error=>#,:backtrace=>[“/usr/share/logstash/logstash core/lib/logstash/settings.rb:32:inget_setting'”,/usr/share/logstash/logstash-core/lib/logstash/settings.rb:64:in
set_value',/usr/share/logstash/logstash/logstash-core/lib/logstash/settings.rb:83:inmerge',“org/jruby/RubyHash.java:1342:in
each',“/usr/share/logstash/logstash core/lib/logstash/settings.rb:83:inmerge'”、/usr/share/logstash/logstash core/lib/logstash/settings.rb:135:in
validate_all'”、/usr/share/logstash/logstash core/lib/logstash/runner.rb:243:inexecute'”/usr/share/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:67:in
run'”、/usr/share/logstash/logstash/core/lib/logstash/runner.rb:204:inrun'、/usr/share/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:132:in
run'”、/usr/share/logstash/logstash/lib/lib/lib/bootstrap/run/71:in'.]
我相信您在配置文件中犯了错误-它应该是JSON对象,但我没有看到配置开头的
{
-请参阅您参考的文章中的配置文件示例。我自己解决了这个问题
Logstash有两种类型的设置,一种用于Logstash,一种用于管道。通常/etc/Logstash中的设置用于Logstash,管道设置用于/etc/Logstash/conf.d。我将管道设置用于Logstash,这会产生所有错误。我尝试了以下步骤,效果良好:
它解决了问题。问题 错误消息不是很清楚,但是
logstash.yml
文件应该包含YAML格式的数据。在这里它不包含(您的数据input{jmx{path=>…
显然不是YAML格式
为什么这很重要?
因为Logstash有两种类型的配置文件:
- 管道配置文件,扩展名为
,用于定义日志存储处理管道和.conf
- 设置文件,指定控制日志存储启动和执行的选项。(
,Logstash.yml
,pipelines.yml
,等等)。这意味着:jvm.options
logstash.conf
文件(或扩展名为.conf
的文件)中logstash.yml
中进行设置/etc/logstash/logstash.yml
/etc/logstash/pipelines.yml
的内容设置为以下内容#此文件用于定义管道。您可以定义多个管道。
#有关多个管道的详细信息,请参阅文档:
# https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
-管道id:main
path.config:“/etc/logstash/conf.d/*.conf”
/etc/logstash/conf.d/logstash.conf
,如下所示输入{
jmx{
路径=>“/home/foo/elastic/logstash”
轮询频率=>15
类型=>“jmx”
nb_螺纹=>4
}
}
输出{
stdout{codec=>rubydebug}
}
Et voilá:=)谢谢你指出这一点。在真实的文件jmx.conf中,我确实有{}作为json对象,我只复制了我对jmx定义所做的更改。
sudo bin/logstash -f /etc/logstash/logstash.yml --path.settings /etc/logstash --debug