5.1、将文件作为input输入
Logstash使用一个名叫FileWatch的Ruby Gem库来监听文件的变化,这个库支持Glob展开文件路径,而且会记录一个叫.sincedbd 数据库文件来跟踪监听的日志文件的当前读取位置。 sincedb文件中记录了每个被监听的文件的inode,major number,minor number和pos。
配置示例
input {
file {
path => ["/var/log/*.log", "/var/log/message"]
type => "system"
start_position => "beginning"
}
}
解释:
FileWatch库中支持一下配置项:
参数 | 类型 | 是否必选 | 默认值 | 描述 |
---|---|---|---|---|
add_field | hash | No | {} | 在事件中加入一个field |
close_older | number | No | 3600 | 一个已经监听中的文件,如果超过这个值的时间内没有更新内容,就关闭监听它的文件句柄。默认是3600秒,即一个小时。【时间点短】 |
codec | codec | No | "plain" | codec用于输入的数据,在数据进入到ipnput之前,可以使用input codecs对数据进行解码,从而省去了使用单独的filter来完成这项工作 |
delimiter | string | No | "\n" | 设置行与行之间的分隔符,默认使用”\n“ |
discover_interval | number | No | 15 | 设置logstash每隔多久去检查一次被监听的path下是否有新文件。默认值是15秒 |
exclude | array | No | 不想被监听的文件可以排除出去,这里跟path 一样支持glob展开 | |
ignore_older | number | No | 86400 | 在每次检查文件列表的时候,如果一个文件的最后修改时间超过这个值,就忽略这个文件。默认是86400秒,即一天 |
max_open_files | number | No | 配置当前input可以监控的文件(句柄)的最大值。当我们需要处理的文件大于这个参数的值时,使用close_older参数将一些文件关闭 | |
path | array | Yes | 用来设置要监控的input目标文件的文件路径,可以使用通配符的方式描述文件路径,如/var/log/.log。如果设置的值为/var/log/**/.log, 会在/var/log路径下,递归的寻找后缀为log的目标文件 | |
sincedb_path | string | No | 如果你不想用默认的$HOME/.sincedb(windows平台上在C:\Windows\System32\Config\systemprpfile.sincedb),可以通过这个配置定义sincedb文件到其他位置 | |
sincedb_write_interval | number | No | 15 | logstash 每隔多久写一次sincedb文件,默认是15秒 |
start_position | string, "beginning"或“end” | No | “end“ | logstash 从什么位置开始去读文件数据,默认是结束位置,也就是说logstash进程会以类似tail -F 的形式运行。如果你是要导入原始数据,把这个设置改为“beginning”,Logstash进程就从头开始读取,有点类似cat,但是读到最后一行不会终止,而是继续变成 tail -F。 |
stat_interval | number | No | 1 | logstash每隔多久检查一次被监听文件的状态(是否有更新),默认是1秒 |
tags | array | No | 添加一个任意的数字作为当前事件的标签,这个标签对我们后续的工作会有帮助 | |
type | string | No | input的所有事件都需要添加一个type属性,types属性主要在filter场景中使用。type会作为事件的一部分进行存储,因此后续也可以用type作为关键字在kibana中搜索 |
注意end
因为windows平台上没有inode的概念,Logstash某些版本在windows平台上监听文件不是很靠谱。windows平台上,推荐考虑使用nxlog作为收集端。