這個(gè)插件可以從指定的目錄或者文件讀取內容,輸入到管道處理,也算是logstash的核心插件了,大多數的使用場(chǎng)景都會(huì )用到這個(gè)插件,因此這里詳細講述下各個(gè)參數的含義與使用。
在Logstash中可以在 input{} 里面添加file配置,默認的最小化配置如下:
input { file { path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/*" }}filter { }output { stdout {}}當然也可以監聽(tīng)多個(gè)目標文件:
input { file { path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"] }}filter { }output { stdout {}}文件的路徑名需要時(shí)絕對路徑,并且支持globs寫(xiě)法。
另外,處理path這個(gè)必須的項外,file還提供了很多其他的屬性:
input { file { #監聽(tīng)文件的路徑 path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"] #排除不想監聽(tīng)的文件 exclude => "1.log" #添加自定義的字段 add_field => {"test"=>"test"} #增加標簽 tags => "tag1" #設置新事件的標志 delimiter => "\n" #設置多長(cháng)時(shí)間掃描目錄,發(fā)現新文件 discover_interval => 15 #設置多長(cháng)時(shí)間檢測文件是否修改 stat_interval => 1 #監聽(tīng)文件的起始位置,默認是end start_position => beginning #監聽(tīng)文件讀取信息記錄的位置 sincedb_path => "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt" #設置多長(cháng)時(shí)間會(huì )寫(xiě)入讀取的位置信息 sincedb_write_interval => 15 }}filter { }output { stdout {}}其中值得注意的是:
1 path
是必須的選項,每一個(gè)file配置,都至少有一個(gè)path
2 exclude
是不想監聽(tīng)的文件,logstash會(huì )自動(dòng)忽略該文件的監聽(tīng)。配置的規則與path類(lèi)似,支持字符串或者數組,但是要求必須是絕對路徑。
3 start_position
是監聽(tīng)的位置,默認是end,即一個(gè)文件如果沒(méi)有記錄它的讀取信息,則從文件的末尾開(kāi)始讀取,也就是說(shuō),僅僅讀取新添加的內容。對于一些更新的日志類(lèi)型的監聽(tīng),通常直接使用end就可以了;相反,beginning就會(huì )從一個(gè)文件的頭開(kāi)始讀取。但是如果記錄過(guò)文件的讀取信息,這個(gè)配置也就失去作用了。
4 sincedb_path
這個(gè)選項配置了默認的讀取文件信息記錄在哪個(gè)文件中,默認是按照文件的inode等信息自動(dòng)生成。其中記錄了inode、主設備號、次設備號以及讀取的位置。因此,如果一個(gè)文件僅僅是重命名,那么它的inode以及其他信息就不會(huì )改變,因此也不會(huì )重新讀取文件的任何信息。類(lèi)似的,如果復制了一個(gè)文件,就相當于創(chuàng )建了一個(gè)新的inode,如果監聽(tīng)的是一個(gè)目錄,就會(huì )讀取該文件的所有信息。
5 其他的關(guān)于掃描和檢測的時(shí)間,按照默認的來(lái)就好了,如果頻繁創(chuàng )建新的文件,想要快速監聽(tīng),那么可以考慮縮短檢測的時(shí)間。
6 add_field
就是增加一個(gè)字段,例如:
file { add_field => {"test"=>"test"} path => "D:/tools/logstash/path/to/groksample.log" start_position => beginning }
7 tags
用于增加一些標簽,這個(gè)標簽可能在后續的處理中起到標志的作用

8 delimiter
是事件分行的標志,如果配置成123,那么就會(huì )如下所示。這個(gè)選項,通常在多行事件中比較有用。

暫時(shí)關(guān)于file就研究的這么多,后續會(huì )深入學(xué)習源碼,做更多的分享。
【1】logstash官方文檔:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file-sincedb_path
聯(lián)系客服