我试图按照文档说明 https://www.elastic.co/guide/en/logstash/current/environment-variables.html 但它似乎不起作用。
我有一堆要处理的日志文件。 假设我有一个输入文件/share/log-2017.09.07.json,我正在尝试使用logstash进行处理。
我的logstash配置文件的摘录如下:
input { file {
'exclude' => ['*.gz']
'path' => ["/share/log-${INPUT_DATE}.json"]
'type' => 'json'
start_position => "beginning"
codec => json
sincedb_path => "/dev/null"
}
}
我按如下方式启动logstash:
export INPUT_DATE="2017.09.07"
logstash -f myconfigfile.conf
logstash似乎找不到文件/share/log-2017.09.03.json。 当我更换
'path' => ["/share/log-${INPUT_DATE}.json"]
通过
'path' => ["/share/log-2017.09.07.json"]
它有效。
我做错了什么?
答案 0 :(得分:0)
根据https://www.elastic.co/guide/en/logstash/current/environment-variables.html此文件,$ {var}仅适用于情况。
但是在您的代码中,您在下面使用了$ {var}。
'路径' =>此处/ log-中的[" / share / log - $ {INPUT_DATE} .json"]也必须是变量。
导出INPUT_DATE =" log-2017.09.07.json"
根据文档示例,他们将此功能用于少数事件,而不是针对所有情况。
答案 1 :(得分:0)
[如果您的logstash在docker容器中],则在docker-compose.yml中将变量设置为默认值(仅是其名称):
环境: -INPUT_DATE
您需要运行export INPUT_DATE="2017.09.07"
并在同一命令行会话中启动docker。