基于docker-elk部署的Logstash发PUT请求返回404如何解决
Logstash HTTP输入404问题修复方案
核心原因定位
从容器运行日志可直接提取两个关键事实:
- 9600端口是Logstash内置的状态监控API端口,仅提供自身运行状态查询接口,不承载业务数据输入路由,对非监控类的PUT提交请求会直接返回404。
- 配置的HTTP输入插件默认监听容器内8080端口,当前docker-compose配置未将该端口映射到宿主机,外部请求无法触达输入服务。
操作步骤
- 修改docker-compose.yml中Logstash的端口映射段,新增8080端口映射:
# 调整后的ports配置 ports: - "5044:5044" - "5000:5000/tcp" - "5000:5000/udp" - "9600:9600" - "8080:8080" - 重启Logstash使配置生效,执行命令:
docker-compose up -d logstash - 校验服务启动状态,执行命令确认HTTP输入服务正常监听:
docker-compose logs logstash | grep "http input listener"
正常输出会显示8080端口的监听启动日志。 - 发送测试请求:使用Postman向
http://<服务部署地址>:8080发送PUT请求,请求体携带JSON格式测试数据,例如:{"message": "test output to stdout"} - 验证输出结果:执行
docker-compose logs -f logstash,即可在标准输出中看到提交的测试消息。
补充说明
- 9600端口保留原有配置即可:该端口的监控接口功能是Logstash内置逻辑,不要用于业务数据传输。
- 如需自定义HTTP输入端口,可在logstash.conf的http配置块中新增
port => 自定义端口参数,再在docker-compose中映射对应端口即可。
内容的提问来源于stack exchange,提问作者Rafael Higa
相关产品推荐
相关产品推荐

