这几天刚学logstash,在读取日志这部分却被卡了好久,主要是这坑我真的是前所未料
安装什么的就是正常安装,然后在配置管道时,我是的配置文件如下
input {
file {
path => ["D:\logs\logs\*.log"]
start_position => "beginning"
type=>"elasticsearch"
}
}
output {
elasticsearch {
hosts => ["192.168.137.102:9200"]
index => "es_log_%{+YYYY.MM.dd}"
}
stdout{
codec=>rubydebug
}
}
然后我使用logstash -f 配置文件地址 -t进行检查
可以明显看到配置文件是没有任何问题的。
接下来我就把-t去掉,进行导入,奇怪的地方就出现了。
终端卡在这里就不再运行了,也没有日志信息输出在终端,只是显示一个 Successfully started Logstash API endpoint {:port=>9600}
然后我就开始了痛苦的找问题过程,大概搜了很久,终于在一个博主那里发现了一个很细微的问题。原文链接如下https://blog.youkuaiyun.com/zhitianming/article/details/123092844
也就是说配置文件中的path路径要使用的是UNIX的分隔符,而我的路径是我直接粘贴上去的。
然后我就对我的path做了修改,也就是把 \ 变成了 /
path => ["D:/logs/logs/*.log"]
再次运行,发现成功了。
这个坑确实很坑,主要是检查配置文件压根不报错,确实很难想到路径会出问题。
还有一种可能会导致这种问题,具体原因我也不清楚,我们直接进入以下目录
E:\logstash-7.10.0-windows-x86_64\logstash-7.10.0\data\plugins\inputs\file
这是我的目录,主要就是\data\plugins\inputs\file
删除里面的文件,这里面的文件可能是一些历史文件,具体原因我也不清楚,不过我删了之后就能成功运行了。