我使用流利的尾部日志文件,并将日志推送到弹性搜索索引。我有两个问题 -
1)流利者如何存储最后读取的位置给定文件? 我的pos文件中的一个例子是 -
/myfolder/myfile.log 00000000004cfccb 0000000000116ce0
值00000000004cfccb
和0000000000116ce0
表示什么?
2)此特定文件(myfile.log
)共有2520行。由于某种原因,最后100行没有被读取。我重新启动了td代理,但它仍然无法读取最后100行。什么时候能发生?
我的td-agent源看起来像这样 -
<source>
type tail
format none
path /myfolder/*.log
pos_file /var/log/td-agent/mylogfiles.pos
tag mylog.*
read_from_head true
</source>
谢谢,
答案 0 :(得分:1)
对于1,请参阅此评论:https://github.com/fluent/fluentd/blob/5ed4b29ebda0815edb7bdd444e7e5ca2e9874a27/lib/fluent/plugin/in_tail.rb#L652。 文件中的十六进制位数和文件的inode。
对于2,将事件存入文件也是2420行? 您可以通过以下方式检查问题是in_tail还是out_elasticsearch。
<match mylog.*>
type copy
<store>
type file
</store>
<store>
type elasticsearch
</store>
</match>
答案 1 :(得分:0)
来自流利的文档
可以指定format参数的正则表达式。如果是参数 值以“/”开头和结尾,它被认为是一个正则表达式。该 regexp必须至少有一个命名捕获(?PATTERN)。如果 regexp有一个名为'time'的捕获,它被用作时间 事件。您可以使用time_format指定时间格式 参数。
答案 2 :(得分:0)
1) pos_file /var/log/td-agent/mylogfiles.pos
强烈建议以上参数。 Fluentd会将上次读取的位置记录到此文件中。当你重新启动td-agent时,它会读取最后一个索引的文件,即(mylogfiles.pos internaly为ex:00000000004cfccb和0000000000116ce0生成以下值,这些值可以在td-agent重启时更改)
2) 请按照以下网址 https://docs.fluentd.org/v1.0/articles/in_tail#read_lines_limit
read_from_head true remove并尝试一次