Logstash解析进度条

Avi*_*vis 1 logstash

我是Logstash的新手,并且将其用于解析特定目录中的500MB日志文件,当前,当我启动Logstash时,它不显示任何进度条来说明已完成解析日志文件的百分比。有什么办法可以查看日志解析的进度吗?

Mag*_*äck 5

不,Logstash没有内置进度条功能。在大多数情况下,这没有任何意义,因为Logstash旨在连续处理不断增长的日志,因此实际上没有任何“完成”。

您可以做的是将sincedb文件的内容与相应文件的文件大小相关联。sincedb文件是Logstash将当前偏移量存储在文件中的位置。在文件输入的文档中可以找到文件格式的确切说明,但是您主要必须关心第一列和最后一列。第一列是索引节点号,也可以在ls -li文件的输出中找到该索引号,最后一列是当前偏移量。例:

393309 0 64773 437
Run Code Online (Sandbox Code Playgroud)

在这里,对于带有inode 393309的文件,Logstash位于偏移437处。

join命令可用于将此文件与ls -li输出连接(文件的inode号在第一列中):

$ join /var/lib/logstash/.sincedb_f5fdf6ea0ea92860c6a6b2b354bfcbbc <(ls -li /var/log/syslog)
393309 0 64773 437 -rw-r----- 1 root adm 437 Oct 15 12:47 /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

最后,awk可用于清理输出并产生百分比完成的数字:

$ join /var/lib/logstash/.sincedb_f5fdf6ea0ea92860c6a6b2b354bfcbbc <(ls -li /var/log/syslog) | awk '{ printf "%-30s%.1f%\n", $13, 100 * $4 / $9 }'
/var/log/syslog               100.0%
Run Code Online (Sandbox Code Playgroud)