我正在使用Logstash和ElasticSearch来分析和存储我的apache日志中的数据。在我的设置中,logstash从文件stdin.log
获取输入。
我想创建一个脚本,当stdin.log
结束时已达到logstash时,该脚本会自动将最新日志插入stdin.log
。所以我的问题是,有没有办法找到logstash是否达到了eof?我可以将sincedb文件用于此目的吗?
答案 0 :(得分:3)
我通过将文件大小与sincedb文件中提供的偏移量进行比较来实现我的目标。
currentPosition = tail -1 .sincedb | awk '{printf $4}'
在logfile中产生文件logstash文件指针的当前偏移量。而
fileSize = stat -c '%s' stdin.log
以字节为单位生成总大小。所以比较它
if[[ $currentPosition = $fileSize ]]; then #Proceed
答案 1 :(得分:0)
您可以查看sincedb文件内部以获取inode和当前偏移量。
答案 2 :(得分:0)
另一个选项是lsof -oo10 -p $LOGSTASHPID
,并检查有问题文件的OFFSET列