假如使用如下配置处理日志
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 进行预定。感谢各位朋友。
=========================