ELK升级至6.8.20后Logstash持续重启报OpenSsl依赖缺失错误
错误原因
从报错日志可以定位到故障出现在Logstash注册beats输入插件阶段,核心是netty的SSL原生依赖加载失败,具体诱因可分为三类:
- Logstash 6.8.20自带的5.1.9版本
logstash-input-beats插件依赖的netty-tcnative原生库,和当前操作系统的openssl版本不匹配,缺少setCipherSuite对应方法实现 - 升级过程中旧版本Logstash的插件依赖、类文件残留,导致类加载时出现版本冲突
- 操作系统缺少openssl相关的基础依赖包,无法加载netty的本地SSL实现
排查步骤
- 执行命令
logstash-plugin list --verbose logstash-input-beats确认当前beats输入插件的具体版本 - 检查系统是否已安装openssl相关依赖:Debian/Ubuntu系执行
dpkg -l | grep libssl,RHEL/CentOS系执行rpm -qa | grep openssl - 检查
/etc/logstash/jvm.options中是否有自定义的类加载路径、netty相关启动参数,排查是否覆盖了Logstash默认配置 - 确认升级时是否保留了旧版本Logstash的
/usr/share/logstash/vendor目录内容,排查新旧依赖冲突
修复方案
- 升级beats输入插件到兼容版本,执行以下命令后重启Logstash验证:
logstash-plugin update logstash-input-beats - 若升级插件无效,可在beats输入配置中禁用原生SSL实现,改用JDK内置SSL能力,修改pipeline配置如下:
input { beats { port => 5044 ssl_native_enabled => false # 其余原有配置保持不变 } }
- 补充安装系统缺失的openssl依赖:
- Debian/Ubuntu系:
apt install -y openssl libssl-dev - RHEL/CentOS系:
yum install -y openssl openssl-devel
- 若为旧版本残留冲突,可先备份Logstash配置文件,卸载Logstash并删除
/usr/share/logstash、/var/lib/logstash目录后重新安装6.8.20版本,恢复配置后启动服务即可。
内容的提问来源于stack exchange,提问作者Sarath Kumar
相关产品推荐
相关产品推荐

