Kubernetes Pod中Logstash启动异常:修改ES配置后仍连旧地址
以下是几种可能导致该现象的常见原因:
存在多份未更新的输出配置
检查Logstash的配置目录(比如/usr/share/logstash/config或/usr/share/logstash/pipeline),是否有多个.conf文件包含Elasticsearch输出配置。比如可能在conf.d下有另一个输出配置文件仍使用elasticsearch:9200,或者同一个配置文件里有多个output { elasticsearch { ... } }块,其中一个没修改。配置文件未被正确加载
确认你修改的配置文件是Logstash实际启动时加载的文件。Kubernetes中如果使用ConfigMap挂载配置,需检查ConfigMap是否已更新并同步到Pod中;如果是构建镜像时打包的配置,需确认镜像是否重新构建并部署,避免容器内仍使用旧版本的配置文件。持久化队列残留旧任务
如果Logstash启用了持久化队列(queue.type: persisted),之前未处理完成的事件会存储在队列中。这些事件是在你修改配置前进入队列的,发送时会使用当时的输出配置(即旧地址elasticsearch:9200),导致报错。可以清理队列目录或等待旧事件处理完成后观察是否还有报错。Logstash模块/插件的默认配置干扰
若你启用了Logstash的官方Elasticsearch模块(比如通过--modules elasticsearch启动),模块可能自带默认输出配置,未被你修改的主配置覆盖。需检查模块的配置文件,确保其输出地址也已更新为elasticsearch1:9200。热加载机制的延迟或异常
虽然你是启动容器前修改的配置,但如果Logstash启动时先加载了旧配置缓存,之后才读取更新后的文件,可能会出现短暂的新旧配置共存情况。可以尝试删除容器内的Logstash缓存目录(若存在),或重启Pod确保配置完全加载。
内容的提问来源于stack exchange,提问作者it.drive.view

