Logstash:如何在Docker Compose中指定备用配置目录
Logstash 7.16.3 Docker Compose中PATH_SETTINGS环境变量无效的解决方法
问题原因
Logstash官方Docker镜像的启动脚本仅处理部分配置项的环境变量映射(比如path.logs对应PATH_LOGS、log.format对应LOG_FORMAT),但path.settings这类核心配置项并未被纳入环境变量覆盖逻辑,所以直接设置PATH_SETTINGS或PATH.SETTINGS都不会生效。
可行解决方案
方案一:通过启动命令指定--path.settings
直接在Docker Compose的command字段中传递Logstash的命令行参数,这是官方推荐的指定配置目录的方式,优先级最高。
示例配置:
version: '3.8' services: logstash: image: docker.elastic.co/logstash/logstash:7.16.3 environment: - PATH_LOGS=/custom/logs - LOG_FORMAT=json command: logstash --path.settings /custom/settings volumes: # 挂载包含自定义pipelines.yml的目录到容器内指定路径 - ./your-local-settings-dir:/custom/settings # 挂载日志目录(对应PATH_LOGS) - ./your-local-logs-dir:/custom/logs
方案二:挂载自定义logstash.yml配置文件
如果不想修改启动命令,可以挂载自己的logstash.yml,在文件中显式设置path.settings指向目标目录。
示例配置:
version: '3.8' services: logstash: image: docker.elastic.co/logstash/logstash:7.16.3 environment: - PATH_LOGS=/custom/logs - LOG_FORMAT=json volumes: # 挂载自定义logstash.yml,替换容器默认配置 - ./your-logstash.yml:/usr/share/logstash/config/logstash.yml # 挂载包含pipelines.yml的自定义配置目录 - ./your-local-settings-dir:/custom/settings - ./your-local-logs-dir:/custom/logs
注意:自定义logstash.yml中需添加如下配置:
path.settings: /custom/settings
可以从容器内默认的/usr/share/logstash/config/logstash.yml复制基础配置后再修改该字段。
内容的提问来源于stack exchange,提问作者Stude
相关产品推荐
相关产品推荐

