Mqtt ввод с logstash - PullRequest
       7

Mqtt ввод с logstash

0 голосов
/ 29 октября 2018

Я недавно установил плагин mqtt logstash.

Я просто использую это на своем локальном хосте. У меня запущен сервер от комаров, и я могу публиковать темы и сообщения, подписываться на них и просматривать сообщения.

Но когда я хочу получить эти сообщения в качестве входа в logstash, что-то идет не так. Я просто использую фильтр вот так (по умолчанию все в порядке).

input {
    mqtt {      
     topic => "Temp"                
}

Но я получаю это сообщение об ошибке каждый раз, когда публикую сообщение в теме Temp.

    2018-10-29T13:22:37,248][ERROR][logstash.pipeline        ] A plugin had an unrecoverable error. Will restart this plugin.
  Pipeline_id:test
  Plugin: <LogStash::Inputs::Mqtt topic=>"Temp", id=>"2e42558ecbc14af5b8d3bbf6243a987cd9accfa6ba94d9802a86bed16bf90958",
  enable_metric=>true, codec=><LogStash::Codecs::Plain id=>"plain_1442bf51-53fb-43d1-a09c-48b29c870f66",
  enable_metric=>true, charset=>"UTF-8">, mqttHost=>"localhost", port=>1883, ssl=>false, client_id=>"logstash-mqtt-inputd42q", clean_session=>true, qos=>0>
  Error: Direct event field references (i.e. event['field']) have been disabled in favor of using event get and set methods (e.g. event.get('field')).
  Please consult the Logstash 5.0 breaking changes documentation for more details.
  Exception: NoMethodError
  Stack: C:/logstash/logstash-6.4.2/logstash-core/lib/logstash/event.rb:43:in `method_missing'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/logstash-input-mqtt-0.0.2/lib/logstash/inputs/mqtt.rb:63:in `block in run'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/logstash-codec-plain-3.0.6/lib/logstash/codecs/plain.rb:35:in `decode'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/logstash-input-mqtt-0.0.2/lib/logstash/inputs/mqtt.rb:62:in `block in run'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/mqtt-0.5.0/lib/mqtt/client.rb:405:in `block in get'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/mqtt-0.5.0/lib/mqtt/client.rb:437:in `block in get_packet'
org/jruby/RubyKernel.java:1292:in `loop'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in `get_packet'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/mqtt-0.5.0/lib/mqtt/client.rb:404:in `get'
C:/logstash/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/logstash-input-mqtt-0.0.2/lib/logstash/inputs/mqtt.rb:61:in `run'
C:/logstash/logstash-6.4.2/logstash-core/lib/logstash/pipeline.rb:409:in `inputworker'
C:/logstash/logstash-6.4.2/logstash-core/lib/logstash/pipeline.rb:403:in `block in start_input'

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я установил неправильный плагин, вы должны использовать logstash-input-paho-mqtt.

Это был мой новый ввод,

input { 
   mqtt {
   host => "localhost"
   port => 1883
   topic => "Temp"
   qos => 2
   }
}
0 голосов
/ 29 октября 2018

Следующий раздел журнала подразумевает, что плагин нацелен на версию до Logstash 5.0

Error: Direct event field references (i.e. event['field']) have been disabled in favor of using event get and set methods (e.g. event.get('field')).
  Please consult the Logstash 5.0 breaking changes documentation for more details.
  Exception: NoMethodError

Похоже, что Logstash изменил свой API в версии 5.0 и больше не совместим с плагином.

...