我正在尝试为grok调试设置环境,并使用docker进行了调试。
一切正常,直到logstash尝试解析自定义模式。 这是我的环境
我以
启动dockerdocker run -it --name logstash_debug -v /home/cloud/docker-elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v / home / cloud / docker-elk / logstash / pipeline /:/ usr / share / logstash / pipeline / -v / home / cloud / docker-elk / logstash / patterns /:/ usr / share / logstash / patterns docker.elastic.co/logstash/logstash:7.2.0
正如我所说,logstash启动,加载管道(debug.conf)
input { stdin {} }
filter {
grok {
patterns_dir => ["/usr/share/logstash/patterns"]
match => ["message", "%{YEAR1} \[%{LOGLEVEL:loglvl}\] %{GREEDYDATA:message}"]
}
date {
match => ["customer_time", "${YEAR1}"]
target => "@timestamp"
}
}
output { stdout { codec => rubydebug } }
并给我这个错误:
无法评估
${YEAR1}
。替换变量YEAR1
不是 在Logstash秘密存储区中定义或作为环境条目定义,并且 没有给出默认值。
patterns_dir包含一个文件“ dateformats”,该文件包含(减少到最小)
YEAR1%{YEAR}
logstash调试输出为我提供了此信息:
[DEBUG] [logstash.filters.grok]配置 LogStash :: Filters :: Grok / @ patterns_dir = [“ / usr / share / logstash / patterns”]
[DEBUG] [logstash.filters.grok]配置 LogStash :: Filters :: Grok / @ match = {“ message” =>“%{YEAR1} \ [%{LOGLEVEL:loglvl} \]%{GREEDYDATA:message}“} .....
[DEBUG] [logstash.filters.grok]配置 LogStash :: Filters :: Grok / @ patterns_files_glob =“ *”
通常logstash应该应该能够抓取此文件(我什至用--user 0启动了docker以确保我没有权限问题),但是以某种方式却不能。
任何人都可以提示发生了什么事吗?
谢谢和欢呼
Wurzelseppi