Logstash输入之File

释放双眼,带上耳机,听听看~!

File输入插件简介

input部分的file插件,file插件是从指定的文件中读取数据,虽然只是读取数据,但是却有两种操作方法:Tail模式和Read模式
Tail模式:在此模式下,指定的文件被视为一直在写入内容,例如我们的apache日志为access.log,我们的file插件去不间断的读取日志内容就像一直在使用tail -f命令一样,一直在读取文件,默认为Tail模式。
Read模式:在此模式下,指定的文件将被视为一个完整的文件,当logstash启动那一刻起,被指定文件的数据内容大小就被限制了,即使文件还是在写入,logstash也只会读取到刚启动的位置。

File输入插件配置选项

设置 输入类型 描述 默认值
close_older number or string_duration 可选 1 hour
path array 必须
exclude array 可选
file_chunk_size number 可选 32768=32kb
file_completed_action 值可以是:delete or log or log_and_delete 可选 delete
file_completed_log_path string 可选
mode 值可以是:tail or read 可选 tail
start_position 值可以是:beginning or end 可选 end
stat_interval 值可以是:number or string_duration 可选 1 second

close_older

  • 值类型是number或string_duration
  • 默认值为“1 hour”
  • 描述:
    文件输入关闭上次读取指定持续时间之前的任何文件(如果指定了数字、则为秒),这取决于是否对文件进行跟踪或读取,如果跟踪,并且输入数据存在较大的时间间隔,则可以关闭该文件(允许打开其它文件),但当检测到新数据时,将排队等待重新打开,如果正在读取,文件将在closed_older秒之后关闭,从读取最后一个字节开始,如果你将插件升级到4.1.0+,正在读取而没有跟踪,并且没有切换到使用读取模式,则保留此设置已实现向后兼容。

path

  • 这是在file插件中必须要设置的选项
  • 值类型为数组
  • 没有默认值
  • 作用:此设置是作用file输入插件的文件读取路径

举个栗子:

path => "var/log/access.log"

#如果多个文件路径可以写为数组格式
path => [ "var/log/access.log","/etc/httpd/logs/access.log" ]

#也可以进行模糊匹配
path => [ "var/log/*.log","/etc/httpd/**/*.log","/nginx/logs/*"]

exclude

  • 值类型是数组
  • 没有默认值
  • 描述:当我们使用path配置项指定了一个/nginx/logs/*下的所有日志都被读取的时候,假如此目录下有已被压缩的文件,例如是 *.tar.gz or *.gz结尾的压缩文件,我们可以使用exclude来排除它

举个栗子:

path => "/var/log/*"
exclude => "*.gz"

file_chunk_size

  • 值类型默认为数字
  • 默认值为32768(32kb)
  • 描述:文件内存以块的形式从磁盘中读取,并从块中提取行,块的默认大小为32768,

举个栗子:
我们把默认的块大小32768改为了65536

file_chunk_size => "65536"

file_completed_action

  • 值类型可以是:delete or log or log_and_delete
  • 默认值为delete
  • 描述:在read读取模式下,当文件读取完成时应该执行什么操作?
1)delete:如果指定了delete,那么文件读取完成后,将被删除。
2)log:如果指定了log,文件读取完成后,文件的完整路径会记录到 file_completed_log_path 指定的文件路径中
3)log_and_delete:如果指定了 log_and_delete,那么文件读取完成后将会被删除,并且将文件的完整路径记录到 file_completed_log_path 指定的文件路径中。

file_completed_log_path

  • 值类型是string字符串
  • 没有默认值
  • 描述:指定路径,只有设置file_completed_action的值为log或者log_and_delete时,此值才生效

举个栗子:

 file_completed_action => "log_and_delete"
 file_completed_log_path => "/usr/local/logstash-7.0.0/file_completed/"

mode

  • 值类型为 tail or read
  • 默认值为tail
  • 描述:此模式即是我们开篇将的两种读取模式,一种为tail跟踪,一种为read读取,
  • tail模式下不可能读取*.gz的压缩文件,read模式下支持*.gz文件的读取
    如果指定了read模式,则以下几个配置项将失效
1) start_position (始终从头开始读取文件)
2) close_older (达到EOF时文件会自动关闭)

如果指定read模式,则注意以下配置:

ignore_older (不能处理旧文件)
file_completed_action (处理文件后应执行什么操作)
file_completed_log_path (应该将完成的文件路径记录到哪个文件)

举个栗子:

    mode => "read"
    file_chunk_size => "65536"
    file_completed_action => "log_and_delete"
    file_completed_log_path => "/usr/local/logstash-7.0.0/file_completed/"

start_position

  • 值可以是beginning or end
  • 默认值end
  • 描述:选择logstash最初开始读取文件的位置,开头或结尾,默认为end,代表对一个文件使用tail -f命令,beginning为从文件行首开始读取内容。

举个栗子:

start_position => "beginning"

stat_interval

  • 值类型是number or string_duration
  • 默认值为1 second
  • 描述:统计文件的频率的间隔,以秒为单位,看看他们是否被修改,增加这个间隔会减少系统调用的次数,但是会增加检测新日志行的时间。

通用配置选项

设置 输入类型 描述
add_field hash 可选
codec codec 可选
enable_metric boolean 可选
id string 可选
tags array 可选
type string 可选

add_field
哈希是一组键值对的集合,以 key => value格式置顶,多个键值条目由空格分隔

  • 值类型是哈希值
  • 默认为{ }
  • 作用:向配置中添加字段

举个栗子:

add_field => { 
    "Key1" => "value1"
    "Key2" => "value2"
    ...
}

或者也可以写成这样
add_field => { "Key1" => "value1" "Key2" => "value2" }

codec
用于输入数据的编解码器。输入编解码器是一种在数据进入输入之前解码数据的便捷方法,无需在Logstash管道中使用单独的过滤器。

  • 值类型是编解码器
  • 默认是为"line"
  • 作用:编解码器可用于输入和输出,输入编解码器提供了一种方法的方法,可以在数据输入之前对其进行解码,输出编解码器可在数据离开输出之前对其进行编码,也就是对数据进行了一次拆封在封装,封装格式为codec所指定的格式,如果在logstash中设置了编解码器,那么就不需要在logstash管道中再单独使用过滤功能了
    举个栗子:
    我们在输出管道配置文件中设置编解码器的格式为json,默认为line,当数据输出的时候,就是已经经过了编解码器拆封再封装的json格式数据。
codec => "json"

enable_metric
默认情况下,我们会记录我们能记录的所有度量,但是你可以禁用特定插件的度量集合

  • 值类型是布尔,布尔型的值只有两个结果,truefalse
  • 默认值为true
    举个例子:
enable_metric => false

id

  • 值类型为字符串
  • 此类型没有默认值
    向插件配置添加唯一ID,如果没有指定ID,Logstash将生产一个ID,强烈建议在配置中设置此ID,当你有两个或者多个相同类型插件时,这尤其有用,例如,如果你有两个stdin输入,在本例中添加一个命名ID将有助于在使用监视API时监视Logstash
    大概意思为:在我们stdin输入中添加一个标识符ID,以防多个stdin混淆
    举个栗子:
    我们ID即是为name字段,添加了一个标示而已
 name =>“Hello world”

tags

  • 值类型为数组
  • 没有默认值
  • 作用:在配置中添加标记,有助于以后的处理
    举个栗子:
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]

type
此类型用的较多,主要是为了根据类型值来进行判断输出指向或者过滤内容

  • 值类型为字符串
  • 没有默认值
  • 作用:type指定一个字符串,同样可用作标示,一般会根据判断type值来进行输出或过滤

File输入插件示例配置

下面配置请结合上面讲的选项含义结合参考

input {
  file {
    path => [ "/etc/httpd/logs/*","/etc/httpd/logs/*" ]
    type => "apache"
    exclude => "*.gz"
    start_position => "beginning"
    add_field => { "application" => "httpd" }
    tags => "web"
 }
  file {
    path => "/var/log/messages"
    type => "syslog"
    mode => "read"
    file_chunk_size => "65536"
    file_completed_action => "log_and_delete"
    file_completed_log_path => "/usr/local/logstash-7.0.0/file_completed/"
 }
}

filter {
}

output {
   stdout {
     codec => "rubydebug"
  }
}

其它的file插件命令选项还有很多很多,但file插件我们常用到的命令选项就是path,更多file插件命令选项请看:https://www.elastic.co/guide/en/logstash/7.0/plugins-inputs-file.html

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索