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 進行預定。感謝各位朋友。
=========================
相關文章
- Git處理二進位制檔案Git
- 用shell處理二進位制檔案(轉)
- 記錄:匯出檔案為十六進位制
- 前端怎麼處理二進位制檔案下載前端
- Java使用javacv處理影片檔案過程記錄Java
- mysqlbinlog 處理二進位制日誌檔案的工具MySql
- Linux學習之檔案處理命令(二)目錄處理命令 && 檔案處理命令Linux
- 使用 IDA 處理 U-Boot 二進位制流檔案boot
- JAX-WS - 二進位制處理之MTOM(檔案上傳)
- C++中的檔案輸入/輸出(5):二進位制檔案的處理 (轉)C++
- 第14周-專案1-用二進位制檔案處理學生成績
- 二進位制處理技巧
- PHP異常、錯誤處理機制筆記PHP筆記
- 異常處理機制
- Python筆記(五)——檔案處理Python筆記
- Redis使用IO多路複用進行事件處理機制Redis事件
- Linux學習之檔案處理命令(一) 目錄處理命令lsLinux
- logstash kafka output 日誌處理Kafka
- excel檔案怎麼使用php進行處理ExcelPHP
- 二進位制檔案記憶體對映記憶體
- Python檔案處理-專題筆記Python筆記
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- Ajax 處理時進度條使用
- Java異常處理機制Java
- redis的事件處理機制Redis事件
- Java——事件處理機制概要Java事件
- Laravel Sessionid 處理機制LaravelSession
- C#事件處理機制C#事件
- Mysql的鎖機制與PHP檔案鎖處理高併發簡單思路MySqlPHP
- [R]檔案處理
- bat處理檔案BAT
- bat檔案處理BAT
- 登錄檔處理函式函式
- 批處理檔案:將目錄下所有的jar檔案都加到CLASSPATHJAR
- MySql資料庫ibtmp1檔案增長問題處理記錄MySql資料庫
- logstash nginx error access 日誌處理NginxError
- assertj斷言機制記錄
- 08.異常處理機制