You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash JMS插件初始化报错原因排查求助

Logstash JMS插件启动报错排查方案

错误成因分析

报错undefined method 'each_with_object' for nil:NilClass指向logstash-input-jms插件的obfuscate_jms_config方法,本质是JMS输入配置中缺少必填的哈希结构参数,导致插件代码尝试对空值执行遍历操作。

具体修复步骤

1. 检查JMS输入配置结构

打开你的/usr/share/logstash/config/jms.conf,确保jms输入块包含完整的config哈希配置,示例结构如下:

input {
  jms {
    type => "jms-input"
    destination => "your-queue-name"
    config => {
      "java.naming.factory.initial" => "org.apache.activemq.jndi.ActiveMQInitialContextFactory"
      "java.naming.provider.url" => "tcp://localhost:61616"
      "java.naming.security.principal" => "admin"
      "java.naming.security.credentials" => "admin"
    }
    # 其他可选参数(如queue/topic模式、连接池配置等)
  }
}

注意:config是必填项,必须以键值对哈希形式定义JNDI连接参数,不能省略或设为空。

2. 验证插件版本兼容性

确保logstash-input-jms版本与你的Logstash主版本匹配:

  • 运行bin/logstash --version查看Logstash版本
  • 运行bin/logstash-plugin list --verbose logstash-input-jms查看插件版本
    如果版本不兼容,卸载当前插件后安装对应版本:
bin/logstash-plugin remove logstash-input-jms
bin/logstash-plugin install logstash-input-jms --version x.x.x

(替换x.x.x为与Logstash匹配的版本号)

3. 检查JMS客户端依赖包

若使用ActiveMQ、RabbitMQ等第三方JMS提供商,需确保对应的客户端jar包已放置在Logstash的vendor/jar/jms目录下,或通过插件自动引入(部分插件版本会自动管理依赖)。

验证修复

修改配置后,运行以下命令测试配置有效性:

bin/logstash -f /usr/share/logstash/config/jms.conf --config.test_and_exit

如果配置无语法错误,再启动Logstash:

bin/logstash -f /usr/share/logstash/config/jms.conf

内容的提问来源于stack exchange,提问作者J Ed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:17:38