如何找到Logstash在EOF?

时间:2014-10-17 06:25:33

标签: bash eof logstash

我正在使用Logstash和ElasticSearch来分析和存储我的apache日志中的数据。在我的设置中,logstash从文件stdin.log获取输入。

我想创建一个脚本,当stdin.log结束时已达到logstash时,该脚本会自动将最新日志插入stdin.log。所以我的问题是,有没有办法找到logstash是否达到了eof?我可以将sincedb文件用于此目的吗?

3 个答案:

答案 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列