Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash引发意外错误:<;ArgumentError:设置“&引用;没有';未注册>;,_Logstash_Jmx - Fatal编程技术网

Logstash引发意外错误:<;ArgumentError:设置“&引用;没有';未注册>;,

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

我遵照指示:

设置cassandra jmx度量监控

我的logstash.yml如下:

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:in
get_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:in
merge',“org/jruby/RubyHash.java:1342:in
each',“/usr/share/logstash/logstash core/lib/logstash/settings.rb:83:in
merge'”、/usr/share/logstash/logstash core/lib/logstash/settings.rb:135:in
validate_all'”、/usr/share/logstash/logstash core/lib/logstash/runner.rb:243:in
execute'”/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:in
run'、/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文件下指定的输入和输出部分应该在conf文件中,例如jmx.conf
  • 注释logstash.yml下的所有内容,以便logstash加载默认设置

  • 它解决了问题。

    问题

    错误消息不是很清楚,但是
    logstash.yml
    文件应该包含YAML格式的数据。在这里它不包含(您的数据
    input{jmx{path=>…
    显然不是YAML格式

    为什么这很重要?

    因为Logstash有两种类型的配置文件:

    • 管道配置文件,扩展名为
      .conf
      ,用于定义日志存储处理管道和
    • 设置文件,指定控制日志存储启动和执行的选项。(
      Logstash.yml
      pipelines.yml
      jvm.options
      ,等等)。这意味着:
  • 如果要配置数据输入、筛选或输出,应将配置放在
    logstash.conf
    文件(或扩展名为
    .conf
    的文件)中
  • 如果要配置logstash,但不想在命令行级别传递选项或标志,可以在这里的
    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