[logstash-input-file]插件使用详解

  前篇介绍过Logstash的使用,本篇继续深入,介绍下最常用的input插件——file。   这个插件可以从指定的目录或者文件读取内容,输入到管道处理,也算是logstash的核心插件了,大多数的使用场景都会用到这个插件,因此这里详细讲述下各个参数的含义与使用。

最小化的配置文件

  在Logstash中可以在 input{} 里面添加file配置,默认的最小化配置如下:

input {
    file {
        path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/*"
    }
}
filter {
    
}
output {
    stdout {}
}

  当然也可以监听多个目标文件:

input {
    file {
        path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]
    }
}
filter {
    
}
output {
    stdout {}
}

文件的路径名需要时绝对路径,并且支持globs写法

其他的配置

  另外,处理path这个必须的项外,file还提供了很多其他的属性:

input {
    file {
        #监听文件的路径
        path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]
        #排除不想监听的文件
        exclude => "1.log"
        
        #添加自定义的字段
        add_field => {"test"=>"test"}
        #增加标签
        tags => "tag1"

        #设置新事件的标志
        delimiter => "\n"

        #设置多长时间扫描目录,发现新文件
        discover_interval => 15
        #设置多长时间检测文件是否修改
        stat_interval => 1

         #监听文件的起始位置,默认是end
        start_position => beginning

        #监听文件读取信息记录的位置
        sincedb_path => "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt"
        #设置多长时间会写入读取的位置信息
        sincedb_write_interval => 15
        
    }
}
filter {
    
}
output {
    stdout {}
}

其中值得注意的是:

  1 path

  是必须的选项,每一个file配置,都至少有一个path

  2 exclude

  是不想监听的文件,logstash会自动忽略该文件的监听。配置的规则与path类似,支持字符串或者数组,但是要求必须是绝对路径。

3 start_position

  是监听的位置,默认是end,即一个文件如果没有记录它的读取信息,则从文件的末尾开始读取,也就是说,仅仅读取新添加的内容。对于一些更新的日志类型的监听,通常直接使用end就可以了;相反,beginning就会从一个文件的头开始读取。但是如果记录过文件的读取信息,这个配置也就失去作用了。

4 sincedb_path

  这个选项配置了默认的读取文件信息记录在哪个文件中,默认是按照文件的inode等信息自动生成。其中记录了inode、主设备号、次设备号以及读取的位置。因此,如果一个文件仅仅是重命名,那么它的inode以及其他信息就不会改变,因此也不会重新读取文件的任何信息。类似的,如果复制了一个文件,就相当于创建了一个新的inode,如果监听的是一个目录,就会读取该文件的所有信息。

  5 其他的关于扫描和检测的时间,按照默认的来就好了,如果频繁创建新的文件,想要快速监听,那么可以考虑缩短检测的时间。

6 add_field

  就是增加一个字段,例如:

file {
     add_field => {"test"=>"test"}
        path => "D:/tools/logstash/path/to/groksample.log"
        start_position => beginning
    }

7 tags

  用于增加一些标签,这个标签可能在后续的处理中起到标志的作用

8 delimiter

  是事件分行的标志,如果配置成123,那么就会如下所示。这个选项,通常在多行事件中比较有用。

  暂时关于file就研究的这么多,后续会深入学习源码,做更多的分享。

参考

【1】logstash官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file-sincedb_path

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏电光石火

php环境搭建

请先安装vcredist_x64。安装都是按下一步,若干个下一步后就安装成功OK了

29180
来自专栏我的博客

MySQL datetime时间误差8个小时

数据库设计为datetime类型,如果自动获取的时间有误差8个小时的可以在mysql的配置文件[msyqld],切记在这个段下面配置 default-time...

73040
来自专栏BeJavaGod

使用shiro自定义过滤器,拦截ajax请求,可用于动静分离

shiro,不多说了,都知道是权限框架 用过shiro的都知道shiro自己有各种过滤器,只要配置好了就可以自动过滤,自动跳转到对应的页面,比如:认证,授权,退...

66750
来自专栏用户2442861的专栏

./configure,make,make install的作用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details...

46930
来自专栏bdcn

Flask跨域请求的处理方法 原

15520
来自专栏木头编程 - moTzxx

oracle 10g(服务端+客户端,支持win7、win8) 资源分享

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

53530
来自专栏谈补锅

http协议笔记

1、连接(Connection):浏览器和服务器之间传输数据的通道。一般请求完毕就关闭,http不保持连接,不保持连接会降低处理速度(因为建立连接速度很慢),保...

19340
来自专栏BeJavaGod

RabbitMQ 一二事(5) - 通配符模式应用

之前的路由模式是通过key相等来匹配 而通配符,顾名思义,符合条件,则进行消息匹配发送 ? 将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。 符号“#”...

34970
来自专栏后端技术探索

两种Nginx日志切分方案,狼厂主要在用第1种

所谓的定时任务切分,是指通过定时任务(比如crontab),发送信号给nginx,让其重新打开文件。该方法也是nginx官网上面比较推荐的,原文说明比较清楚,这...

15020
来自专栏云原生架构实践

Openjdk 安装 on centos7

备注: 安装openjdk,在使用Jhipster-Registry的加解密功能时,会简化一点工作,我在相关文章中会整理说明。

34220

扫码关注云+社区

领取腾讯云代金券