其他分享
首页 > 其他分享> > 15. Fluentd输入插件:in_tail用法详解

15. Fluentd输入插件:in_tail用法详解

作者:互联网

in_tail输入插件内置于Fluentd中,无需安装。

它允许fluentd从文本文件尾部读取日志事件,其行为类似linux的tail -F命令(按文件名来tail)。

这几乎是最常用的一个输入插件了。

  1. 示例配置
<source>
  @type tail
  path /var/log/httpd-access.log
  pos_file /var/log/td-agent/httpd-access.log.pos
  tag apache.access
  <parse>
    @type apache2
  </parse>
</source>

这个示例用于tail Apache的日志。

  1. 工作原理
    当Fluentd首次配置使用in_tail插件时,它会从path指定的日志文件尾部读取数据。

一旦日志文件被轮转重写,Fluentd则开始从新文件头部读取数据。Fluentd会持续追踪文件当前的inode编号。

当td-agent重启时,它会从重启前的位置开始读取数据,这个位置保存在pos_file指定的文件中。

  1. 插件参数
path /path/to/file
tag foo.*

上边这个配置会产生foo.path.to.file这样的tag。

path /path/to/%Y/%m/%d/*

这个示例监控时间字符串指定的目录,比如若日期为20140401,Fluentd会监控/path/to/2014/04/01路径下的所有文件。

path /path/to/a/*,/path/to/b/c.log

这个示例监控多个目录。
需要注意的是,*不能用于存在日志文件轮转的情况,这会导致日志重复。这种情况建议使用单独的in_tail配置。

path_timezone "+00"
path /path/to/*
exclude_path ["/path/to/*.gz", "/path/to/*.zip"]

这个示例会排除path中的gz和zip压缩文件。

pos_file /var/log/td-agent/tmp/access.log.pos
pos_file_compaction_interval 72h
# json
<parse>
  @type json
</parse>

# regexp
<parse>
  @type regexp
  expression ^(?<name>[^ ]*) (?<user>[^ ]*) (?<age>\d*)$
</parse>
path /path/to/access.log
path_key tailed_path

使用上边这个配置,会生成如下的日志事件:

{"tailed_path":"/path/to/access.log","k1":"v1",...,"kN":"vN"}

3.常见问题
3.1 当无法匹配日志时会如何处理
若emit_unmatched_lines设为true,in_tail会打印出告警信息。
比如,<parse>指定的解析器为json,而日志中包含“123,456,str,true”这样的记录,那么在fluentd运行日志中就会看到如下输出:

2018-04-19 02:23:44 +0900 [warn]: #0 pattern not match: "123,456,str,true"

3.2 in_tail为何没有开始读取日志 可能监控文件确实没有产生新的数据,试着追加一条数据看看。

3.3 in_tail输出“/path/to/file unreadable”,这是什么导致的若在运行日志中发现如下信息,可能是fluentd没有监控文件的读权限。

/path/to/file unreadable. It is excluded and would be examined next time.

3.4 如何避免监控大量文件时in_tail停止运行 可设置enable_stat_watcher为false。

标签:Fluentd,插件,15,文件,pos,0.14,tail,file,path
来源: https://www.cnblogs.com/sanduzxcvbnm/p/13921672.html