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

Docker环境下运行的Logstash如何修改默认Elasticsearch连接URL

问题根源排查

你遇到的无法连通问题由以下几个配置错误共同导致:

  • Logstash服务下存在两个重复的environment配置块,后定义的LS_JAVA_OPTS配置块会覆盖前一个,你设置的ELASTICSEARCH_HOST根本没有被加载到容器中
  • 你将ELASTICSEARCH_HOST设为localhost是错误的:Logstash容器内的localhost指向容器自身,不是同一网络下的Elasticsearch服务
  • 你挂载Logstash配置时仅指定了本地路径,没有填写容器内的挂载路径,本地的配置文件根本没有加载到容器中
  • Logstash的Elasticsearch地址配置存在优先级:管道输出配置 > logstash.yml全局配置 > 环境变量,高优先级的配置会覆盖低优先级的配置

修复步骤

1. 修正docker-compose.yml中的Logstash配置

合并重复的environment块,修正配置挂载路径,填入正确的Elasticsearch服务地址(同一网络下直接用ES的服务名es01即可):

logstash:
    image: logstash:7.14.0
    container_name: logstash
    ports: 
      - 9600:9600
      - 8089:8089
    volumes:
        # 补充容器内的挂载路径,确保本地配置生效
        - ./logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
        - ./logstash/pipelines.yml:/usr/share/logstash/config/pipelines.yml
        - ./logstash/data:/usr/share/logstash/data
    command: --config.reload.automatic
    environment:
      LS_JAVA_OPTS: "-Xmx1g -Xms1g"
      # 使用复数形式的环境变量,值为ES服务的访问地址
      ELASTICSEARCH_HOSTS: "http://es01:9200"
    depends_on:
        - es01
    networks:
      - elastic

注意:links参数已经废弃,同一自定义网络下的服务可以直接通过服务名互相通信,不需要额外配置links。

2. 检查管道配置(优先级最高)

如果修改完docker-compose配置后仍然报错,说明你在管道的输出配置里写死了默认的elasticsearch:9200地址。打开你本地存放管道配置的目录(通常是./logstash/pipeline/)下的conf配置文件,修改elasticsearch输出块:

output {
  elasticsearch {
    # 替换为正确的ES地址
    hosts => ["http://es01:9200"]
    # 其余原有配置保持不变即可
  }
}

3. (可选)修改logstash.yml全局配置

如果你没有在管道中单独配置Elasticsearch地址,也可以在./logstash/logstash.yml中添加全局配置,同时修复日志中license检查报错的问题:

xpack.monitoring.elasticsearch.hosts: ["http://es01:9200"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:24:03