【问题标题】:Logstash worker dies with no reasonLogstash 工人无故死亡
【发布时间】:2017-01-24 17:16:39
【问题描述】:

在centos 7上使用logstash 2.3.4-1和kafka-input插件我有时会得到

{:timestamp=>"2016-09-07T13:41:46.437000+0000", :message=>#0, :events_consumed=>822, :worker_count=>1, :inflight_count=>0, :worker_states= >[{:status=>"dead", :alive=>false, :index=>0, :inflight_count=>0}], :output_info=>[{:type=>"http", :config=>{ "http_method"=>"post", "url"=>"${APP_URL}/", "headers"=>["AUTHORIZATION", "Basic ${CREDS}"], "ALLOW_ENV"=>true}, : is_multi_worker=>false, :events_received=>0, :workers=>"", headers=>{..}, codec=>"UTF-8">, workers=>1, request_timeout=>60, socket_timeout=>10 , connect_timeout=>10, follow_redirects=>true, pool_max=>50, pool_max_per_route=>25, keepalive=>true, automatic_retries=>1, retry_non_idempotent=>false, validate_after_inactivity=>200, ssl_certificate_validation=>true, keystore_type=>" JKS", truststore_type=>"JKS", cookies=>true, verify_ssl=>true, format=>"json">]>, :busy_workers=>1}, {:type=>"stdout", :config=> {"ALLOW_ENV"=>true}, :is_multi_worker=>false, :events_received=>0, :workers=>"\n">,workers=>1>]>, :busy_workers=>0}], :thread_info =>[], :stalling_threads_info=>[]}>, :level=>:warn}

这是配置

        input {
      kafka {
        bootstrap_servers => "${KAFKA_ADDRESS}"
        topics => ["${LOGSTASH_KAFKA_TOPIC}"]
      }
    }

    filter {
      ruby {
        code =>
      "require 'json'
       require 'base64'

       def good_event?(event_metadata)
         event_metadata['key1']['key2'].start_with?('good')
       rescue
         true 
       end

       def has_url?(event_data)
         event_data['line'] && event_data['line'].any? { |i| i['url'] && !i['url'].blank? }
       rescue
         false
       end

       event_payload = JSON.parse(event.to_hash['message'])['payload']

       event.cancel unless good_event?(event_payload['event_metadata'])
       event.cancel unless has_url?(event_payload['event_data'])
    "
  }
    }

    output {
      http {
          http_method => 'post'
          url => '${APP_URL}/'
          headers => ["AUTHORIZATION", "Basic ${CREDS}"]
      }

      stdout { }
    }

这很奇怪,因为它是写入 logstash.log 而不是 logstash.err

这个错误是什么意思,我该如何避免它? (只有重启logstash才能解决,直到下次发生)

【问题讨论】:

  • 发布你的 lohgstash 配置以及没有工作线程配置。
  • @ArijeetSaha 添加了配置,如何获取工作线程配置?
  • 愚蠢的问题,但${...} 占位符是如何解决的?你是从 shell 脚本还是类似的东西运行它?
  • 工作线程的数量是一个启动选项(-w 或 --pipeline-workers)(source),默认情况下是可用 CPU 内核的一半(source),除非你有一个多行过滤器,在这种情况下它是一个
  • 是什么让你认为你的 Logstash 进程死了?从您粘贴的日志中,我看到的只是警告,但没有关于潜在错误的有用信息。

标签: logstash


【解决方案1】:

根据this github issue,您的 ruby​​ 代码可能会导致该问题。基本上任何红宝石异常都会导致过滤器工作人员死亡。如果没有看到您的 ruby​​ 代码,就无法进一步调试,但您可以尝试将您的 ruby​​ 代码包装在异常处理程序中并在某处记录异常(至少在更新 logstash 以记录它之前)。

【讨论】:

  • 有趣,虽然代码中有救援,但我已经将代码添加到问题中
  • 如果消息为空白或无效 json 会怎样?例如,无论生成什么,它都可能通过忘记转义引号或类似的东西来制作假 json
  • 本质上它可能会导致异常,但这意味着 kafka-input-plugin 中存在错误:/ 我将尝试进一步调试以查看是否确实存在 kafka 事件是空白
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
相关资源
最近更新 更多