假如使用如下配置处理日志

input {file {path => "/home/vagrant/logstash/logstash-2.2.2/dbpool-logs/dev/common-sql-*.log"start_position => "beginning"type => "sql"codec => json {charset => "UTF-8"}        }
}
output { if "_grokparsefailure" in [tags] {}else{if [type] == "sql"{elasticsearch {hosts => ["http://192.168.33.10:9200"]index => "common-sql-%{+YYYY.MM.dd}"}}}
}
  • 所有匹配common-sql-*.log的文件都将被处理

  • 第一次从头开始处理文件

  • 处理后以json格式输出到elasticsearch

logstash如何记录处理进度?

  • 第一次运行logstash时从头处理文件,假如此时有两个文件匹配上则按顺序开始处理文件。
  • logstash处理过程中不断将每个文件处理的进度写入到某个地方,这就是sincedb。
  • sincedb一般以隐藏文件默认写到home目录下面,文件名类似.sincedb_6268051ae572b42bd86b7f9e8c1e004b。
  • sincedb的格式为inode majorNumber minor Number pos。每行记录每个文件处理进度,比如下面的例子,表示inode为177037的文件处理到25951716位置、inode为176956的文件处理到32955178位置。
177037 0 64768 25951716
176956 0 64768 32955178
  • 用stat看看这两个文件inode信息。可以看到两个文件都已经处理完了。如果没处理完关闭了logstash则会在下次启动时继续处理。
[vagrant@hb-localhost ~]$ stat logstash/logstash-2.2.2/dbpool-logs/dev/common-sql-2016-11-24.log File: `logstash/logstash-2.2.2/dbpool-logs/dev/common-sql-2016-11-24.log'Size: 32955178    Blocks: 64368      IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 176956      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  501/ vagrant)   Gid: (  501/ vagrant)
Access: 2016-11-24 02:08:19.058506565 +0000
Modify: 2016-11-24 01:46:14.000000000 +0000
Change: 2016-11-24 02:05:06.194122690 +0000
[vagrant@hb-localhost ~]$ stat logstash/logstash-2.2.2/dbpool-logs/dev/common-sql-2016-11-23.log File: `logstash/logstash-2.2.2/dbpool-logs/dev/common-sql-2016-11-23.log'Size: 25951716    Blocks: 50688      IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 177037      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  501/ vagrant)   Gid: (  501/ vagrant)
Access: 2016-11-24 02:15:28.217978771 +0000
Modify: 2016-11-23 13:19:16.000000000 +0000
Change: 2016-11-24 02:15:27.913826772 +0000
  • 如果往这两个文件追加日志则将往下继续处理,而且也会将进度更新到sincedb文件中。
  • 如果处理完了关闭logstash,下次再启动时则不会再从头开始处理,因为sincedb已经记录了进度,不要以为start_position => “beginning”就是每次都从头处理,如果把sincedb文件删了又会从头开始处理。

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

logstash处理文件进度记录机制相关推荐

  1. linux 新增文件夹记录_linux文件系统(基础概念)

    文件系统:统一用户使用的各种文件的管理机制,构筑用户文件和底层硬盘的中间接口,使我们读写数据文件时不必去关心实际存放的block. ---全文来源于互联网笔记,非原创. 硬盘分区 分区结构 整个分区大 ...

  2. Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】

    2014.8.24 k860i的cm11的移植在中断了近两三个月之后又开始继续了,进度记录的日志上一篇已经没什么写的了,就完结掉它吧,重新开一篇日志做下篇好了.最近的战况是,在scue同学的努力之下, ...

  3. Kafka文件的存储机制

    Kafka文件的存储机制 同一个topic下有多个不同的partition,每个partition为一个目录,partition命名的规则是topic的名称加上一个序号,序号从0开始. 每一个part ...

  4. rocketmq 消息删除_RocketMQ源码分析之文件过期删除机制

    1.由于RocketMQ操作CommitLog.ConsumeQueue文件,都是基于内存映射方法并在启动的时候,会加载commitlog.ConsumeQueue目录下的所有文件,为了避免内存与磁盘 ...

  5. python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...

    本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序 ...

  6. VS2005中删除最近打开的项目和文件的记录

                VS2005中删除最近打开的项目和文件的记录 VS2005中总是保留最近打开的项目和文件的记录,甚至是以删除的它也不删,-_-! 下面介绍几种删除的方法: 第一种:建立一个ba ...

  7. J2EE JVM加载class文件的原理机制

    JVM加载class文件的原理机制 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的 ...

  8. java fileupload 进度_Java上传文件进度条的实现方法(附demo源码下载)

    本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以 ...

  9. JVM加载class文件的原理机制

    阅读目录 1.JVM 简介 2.JVM 的组成部分 3.JVM加载class文件的原理机制 在面试java工程师的时候,这道题经常被问到,故需特别注意. 回到顶部 1.JVM 简介 JVM 是我们Ja ...

最新文章

  1. Hash join 和nested loop
  2. LSGO软件技术团队招新 线下组队学习
  3. com.sun.crypto.provider.SunJCE
  4. xcode_6.1正式版下载xcode_6.1.dmg 下载分享
  5. MySQL GROUP BY:分组查询
  6. Android利用AccessibilityService自动获取微信号
  7. 曾经想学很多很多,最后发现自己只能专心学那么很少的几个必杀技
  8. linux如何判断网线插入_斜口钳和网线钳制作网线!
  9. MySQL 数据库怎样把一个表的数据插入到另一个表
  10. Redis集群版在Java中的应用
  11. 怎样用计算机算屋面的坡度,屋顶坡度要怎么算,一般是多少?
  12. 搭建第一个springBoot 摘抄自蚂蚁课堂
  13. 迷宫(Maze)项目实现
  14. CUDA开源 轻松跑AMD GPU/Intel x86 CPU
  15. 第四届“云鼎奖”网络投票火热进行中——入围名单一览
  16. RabbitMQ核心功能介绍
  17. android图片压缩不失真实战
  18. java获取微信用户源码_Java微信公众平台开发(十)--微信用户信息的获取
  19. 看板管理方法的6大作用
  20. Ubuntu 20.10 安装 gcc, g++,clang,make,make-guile

热门文章

  1. 活到老, 学到老, 做到老-----想念导师赵日华
  2. 华为手机麦芒9参数配置
  3. ubuntu16+simfix配置+defects4j
  4. 梨视频:基于阿里云E-MapReduce搭建视频推荐系统实践
  5. 应用程序初始化失败 0x0000142
  6. Snagit滚动截屏实现长pdf(长图)拆分
  7. Excel多个工作表汇总统计
  8. 常用正则表达式,以及例题
  9. python画苹果代码是什么_怎么用python3画烟花?代码是什么?
  10. 熬夜整理2022最新Python最全学习资料,看进度条就知道有多强了