logstash处理文件进度记录机制
假如使用如下配置处理日志
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处理文件进度记录机制相关推荐
- linux 新增文件夹记录_linux文件系统(基础概念)
文件系统:统一用户使用的各种文件的管理机制,构筑用户文件和底层硬盘的中间接口,使我们读写数据文件时不必去关心实际存放的block. ---全文来源于互联网笔记,非原创. 硬盘分区 分区结构 整个分区大 ...
- Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】
2014.8.24 k860i的cm11的移植在中断了近两三个月之后又开始继续了,进度记录的日志上一篇已经没什么写的了,就完结掉它吧,重新开一篇日志做下篇好了.最近的战况是,在scue同学的努力之下, ...
- Kafka文件的存储机制
Kafka文件的存储机制 同一个topic下有多个不同的partition,每个partition为一个目录,partition命名的规则是topic的名称加上一个序号,序号从0开始. 每一个part ...
- rocketmq 消息删除_RocketMQ源码分析之文件过期删除机制
1.由于RocketMQ操作CommitLog.ConsumeQueue文件,都是基于内存映射方法并在启动的时候,会加载commitlog.ConsumeQueue目录下的所有文件,为了避免内存与磁盘 ...
- python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...
本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序 ...
- VS2005中删除最近打开的项目和文件的记录
VS2005中删除最近打开的项目和文件的记录 VS2005中总是保留最近打开的项目和文件的记录,甚至是以删除的它也不删,-_-! 下面介绍几种删除的方法: 第一种:建立一个ba ...
- J2EE JVM加载class文件的原理机制
JVM加载class文件的原理机制 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的 ...
- java fileupload 进度_Java上传文件进度条的实现方法(附demo源码下载)
本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以 ...
- JVM加载class文件的原理机制
阅读目录 1.JVM 简介 2.JVM 的组成部分 3.JVM加载class文件的原理机制 在面试java工程师的时候,这道题经常被问到,故需特别注意. 回到顶部 1.JVM 简介 JVM 是我们Ja ...
最新文章
- Hash join 和nested loop
- LSGO软件技术团队招新 线下组队学习
- com.sun.crypto.provider.SunJCE
- xcode_6.1正式版下载xcode_6.1.dmg 下载分享
- MySQL GROUP BY:分组查询
- Android利用AccessibilityService自动获取微信号
- 曾经想学很多很多,最后发现自己只能专心学那么很少的几个必杀技
- linux如何判断网线插入_斜口钳和网线钳制作网线!
- MySQL 数据库怎样把一个表的数据插入到另一个表
- Redis集群版在Java中的应用
- 怎样用计算机算屋面的坡度,屋顶坡度要怎么算,一般是多少?
- 搭建第一个springBoot 摘抄自蚂蚁课堂
- 迷宫(Maze)项目实现
- CUDA开源 轻松跑AMD GPU/Intel x86 CPU
- 第四届“云鼎奖”网络投票火热进行中——入围名单一览
- RabbitMQ核心功能介绍
- android图片压缩不失真实战
- java获取微信用户源码_Java微信公众平台开发(十)--微信用户信息的获取
- 看板管理方法的6大作用
- Ubuntu 20.10 安装 gcc, g++,clang,make,make-guile