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

如何在Docker环境中部署运行开发、预发两套独立的ELK栈

问题1:启动预发环境docker-compose重建开发环境容器的解决方法

这个问题是因为Docker Compose默认以当前工作目录的名称作为项目名,同目录下的多份compose配置会被识别为同一个项目的不同配置,触发容器重建。
解决方式:启动时通过-p参数指定不同的项目名,完全隔离两套环境:

  • 启动开发环境命令:
docker-compose -f docker-compose.elastic.dev.yml -p elk-dev up -d
  • 启动预发环境命令:
docker-compose -f docker-compose.elastic.stage.yml -p elk-stage up -d

问题2:Logstash仅打印SQL不执行数据同步的排查步骤

按优先级依次排查:

  1. 验证SQL有效性
    将offers_query.sql内容直接复制到预发PostgreSQL数据库中手动执行,确认是否有返回结果。如果SQL执行结果为空,Logstash只会打印加载的SQL文本,无后续同步逻辑。
  2. 检查数据库账号权限
    确认配置的LOGSTASH_JDBC_USERNAME账号,对预发数据库的目标表拥有查询权限,避免权限不足导致查询无返回。
  3. 排除Filter逻辑问题
    先将logstash.conf中的整个Filter配置段注释掉,只保留Input和Output,看是否有数据同步。如果注释后恢复正常,说明Filter中的JSON解析等逻辑存在问题,比如目标字段不存在、JSON格式非法导致事件被丢弃。
  4. 开启Debug日志排查细节
    在Logstash的环境变量中添加LOG_LEVEL: debug,重启容器后查看日志,确认是否存在SQL语法错误、字段映射错误、ES写入权限错误等隐性报错。
  5. 验证Output链路
    临时注释掉Output中的Elasticsearch配置,仅保留stdout输出,观察容器日志是否打印查询到的数据:
  • 如果stdout无数据:问题出在Input阶段,重点排查JDBC连接、SQL执行相关问题
  • 如果stdout有数据:问题出在Elasticsearch输出阶段,检查索引模板合法性、ES服务是否允许Logstash容器网段访问、ES对应索引是否存在写入异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:00:02