一、需求

使用logstash读取本地磁盘上的文件,并通过标准输出输出出来。

二、实现步骤

1、前置知识

1、读取本地磁盘文件?

​ 可以通过 input file plugin 来实现。

2、如何保证文件的每一行只读取一次?

​ 这个是通过 sincedb来保证的。

2、编写pipeline文件

vim multi-input/multi-input.conf

input {
file {
path => ["/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-input/redis.log"]
start_position => "beginning"
sincedb_path => "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-input/sincedb.db"
type => "redis"
mode => "read"
stat_interval => "1 second"
discover_interval => 15
sincedb_write_interval => 15
add_field => {
"custom_mode" => "tail"
}
} file {
path => ["/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-input/springboot.log"]
start_position => "end"
sincedb_path => "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-input/sincedb.db"
mode => "tail"
type => "springboot"
}
} # 过滤数据
filter { } # 输出
output { # 如果type的值是redis则使用 rubydebug 输出。 type的值是在 input阶段制定的。
if [type] == 'redis' {
stdout {
codec => rubydebug { }
}
} if [type] == 'springboot' {
stdout {
codec => line {
charset => "UTF-8"
}
}
}
}

3、Input 中 file 插件的部分参数解释:

  1. path:指定了从那个地方读取文件,使用的是glob匹配语法。
["/var/log/*.log"]  表示匹配的是 /var/log 目录下所有的以 .log 结尾的文件。

["/var/log/**/*.log"] 表示匹配的是 /var/log 目录下、以及它下方的子目录下所有的以 .log 结尾的文件。

["/var/log/{redis,springboot}/*.log"] 表示匹配的是 /var/log 目录下方 redis或springboot目录下方所有的以 .log 结尾的文件。
  1. exclue: 表示需要排除的文件。

  2. start_position:表示从那个地方开始读取文件

    1. beginning 表示从文件开头读取。
    2. end 表示从文件结尾读取。
  3. sincedb_path: sincedb数据库文件的位置,必须是一个文件,不可是目录。

    1. sincedb 这个记录了当前读取文件的inode、读取到文件字节的position位置、读取的是那个文件、文件最后修改的时候戳。

    2. sincedb_path => /dev/null 开发时为了每次都能从文件的开头读取,设置成 /dev/null 可能会报如下错误。

      1. Error: Permission denied - Permission denied
        Exception: Errno::EACCES Stack: org/jruby/RubyFile.java:1267:in `utime'
      2. 解决方案:将 sincedb_path的路径设置成一个具体的文件。

      3. 参考链接: https://discuss.elastic.co/t/logstash-permission-access-denied-error-for-stack-org-jruby-rubyfile-javain-utime/178016

  4. stat_interval: 定时监测文件是否有更新,单位是秒或者string_duration格式。

  5. discover_interval: 每隔多少时间监测是否有新的文件产生,单位是秒。

  6. mode:读取文件的模式,为tailread,默认是tail

    1. 当是read时,默认读取完这个文件后会删除这个文件。
  7. sincedb_write_interval: 多久将文件的position位置写入到sincedb文件中。

4、启动logstash

bin/logstash -f logstash/pipeline.conf/multi-input/multi-input.conf

5、测试

三、参考链接

1、input file plugin 的使用

2、sincedb_path 设置成 /dev/null 可能报的一个错

使用logstash的input file filter收集日志文件的更多相关文章

  1. 第八章·Logstash深入-通过TCP/UDP收集日志

    1.收集TCP/UDP日志 通过logstash的tcp/udp插件收集日志,通常用于在向elasticsearch日志补录丢失的部分日志,可以将丢失的日志通过一个TCP端口直接写入到elastics ...

  2. 如何用一张图片代替 'input:file' 上传本地文件??

    今天去面试,碰到了一道题,也许是因为紧张或者喝水喝多了,一时竟然没有转过弯来,回来之后一细想原来这么简单,哭笑不得,特此记录一下! 原题是这样的:  如何用一张图片代替 'input:file' 上传 ...

  3. ie8及其以下版本兼容性问题之input file隐藏上传文件

    文件上传时,默认的file标签很难看,而且每个浏览器下都有很大差距.因此我们基本都把真正的file标签给隐藏,然后创建一个标签来替代它.但是由于IE出于安全方面的考虑上传文件时必须点击file的浏览按 ...

  4. 将input file的选择的文件清空的两种解决方案

    <input type="file" id="fileupload" name="file" /> 上传文件时,选择了文件后想清 ...

  5. input file禁用手机本地文件选择,只允许拍照上传图片

    <input type="file" accept="image/*" capture="camera"> 会有个问题,上传的图 ...

  6. html input file accept 上传文件类型限制格式 MIME 类型列表

    例: <input type="file" accept="application/vnd.openxmlformats-officedocument.spread ...

  7. input file 上传 判断文件类型、路径是否为空

    <html> <body bgcolor="white"> <TABLE cellSpacing=0 cellPadding=0 width=&quo ...

  8. [转]将input file的选择的文件清空

    本文转自:http://hi.baidu.com/xiongshihu/item/125c79b47632e794194697f5 上传文件时,选择了文件后想清空文件路径的两种办法: JS代码 < ...

  9. input file限制上传文件类型

    http://www.cnblogs.com/haocool/p/3431181.html http://www.haorooms.com/post/input_file_leixing http:/ ...

随机推荐

  1. Spring AOP 事务配置(实现转账事务)

    1. 事务特性 事务特性:ACID 原子性:整体 [原子性是指事务包含的所有操作要么全部成功,要么全部失败] 一致性:数据 [一个事务执行之前和执行之后都必须处于一致性状态] 隔离性:并发 [对于任意 ...

  2. 全局CSS样式表

    看api手册使用即可 1.按钮和图片 2.表格.表单 表单的lable作用就是点击前面的文字可以聚焦到对应的输入框中

  3. 网络层协议、ARP攻击

    一.IP数据包格式 二.ICMP协议介绍 PING命令 三.ARP协议介绍 四.ARP攻击原理 一.IP数据包格式 网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最 ...

  4. ysoserial CommonsColletions3分析(1)

    CC3的利用链在JDK8u71版本以后是无法使用的,具体还是由于AnnotationInvocationHandler的readobject进行了改写. 而CC3目前有两条主流的利用链,利用Trans ...

  5. 第25篇-虚拟机对象操作指令之putstatic

    之前已经介绍了getstatic与getfield指令的汇编代码执行逻辑,这一篇介绍putstatic指令的执行逻辑,putfield将不再介绍,大家可以自己去研究,相信大家有这个实力. putsta ...

  6. Maven项目之间关系介绍

    Maven项目之间的关系 依赖关系 单纯的项目A中需要项目B中的资源,将项目B打成Jar包被A依赖,此时项目A直接调用项目B中资源即可. 项目A和项目B此时形成最基本的依赖关系. 继承关系 需要场景: ...

  7. 求 10000 以内 n 的阶乘

    求 10000以内 n 的阶乘. 输入格式 只有一行输入,整数 n(0≤n≤10000) 输出格式 一行,即 n!的值. 输出时每行末尾的多余空格,不影响答案正确性 样例输入 100 样例输出 933 ...

  8. 5.10学习总结——Activity的跳转和传值

    使用sharedpreference是对信息的存储,也可以进行传值,今天通过查找资料,学习了Activity的跳转和传值方法. 跳转 1.显示跳转 4种方法 1 2 3 4 5 6 7 8 9 10 ...

  9. Java Web实现登录验证码(Servlet+jsp)

    1.生成验证码图片(Servlet) import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import j ...

  10. 如何创建 Office LTSC 2021 VL(批量许可)版本的安装 ISO

    Office LTSC 2021 发布 2021 年 9 月 16 日,微软正式发布了支持 Office 2021 的部署工具(Office Deployment Tool),这意味着 Office ...