[logstash-input-file]插件使用詳解


[logstash-input-file]插件使用詳解

 

  前篇介紹過Logstash的使用,本篇繼續深入,介紹下最常用的input插件——file。

  這個插件可以從指定的目錄或者文件讀取內容,輸入到管道處理,也算是logstash的核心插件了,大多數的使用場景都會用到這個插件,因此這里詳細講述下各個參數的含義與使用。

最小化的配置文件

  在Logstash中可以在 input{} 里面添加file配置,默認的最小化配置如下:

復制代碼
input {
    file { path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/*" }
}
filter {
    
}
output {
    stdout {}
}
復制代碼

  當然也可以監聽多個目標文件:

復制代碼
input {
    file { path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"] }
}
filter {
    
}
output {
    stdout {}
}
復制代碼

  文件的路徑名需要時絕對路徑,並且支持globs寫法

其他的配置

  另外,處理path這個必須的項外,file還提供了很多其他的屬性:

復制代碼
input {
 file { #監聽文件的路徑 path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]
        #排除不想監聽的文件
        exclude => "1.log"
        
        #添加自定義的字段
        add_field => {"test"=>"test"}
        #增加標簽
        tags => "tag1"

        #設置新事件的標志
        delimiter => "\n"

        #設置多長時間掃描目錄,發現新文件
        discover_interval => 15
        #設置多長時間檢測文件是否修改
        stat_interval => 1

         #監聽文件的起始位置,默認是end
        start_position => beginning

        #監聽文件讀取信息記錄的位置
        sincedb_path => "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt"
        #設置多長時間會寫入讀取的位置信息
        sincedb_write_interval => 15 }
}
filter {
    
}
output {
    stdout {}
}
復制代碼

  其中值得注意的是:

  1 path

  是必須的選項,每一個file配置,都至少有一個path

  2 exclude

  是不想監聽的文件,logstash會自動忽略該文件的監聽。配置的規則與path類似,支持字符串或者數組,但是要求必須是絕對路徑。

  3 start_position

  是監聽的位置,默認是end,即一個文件如果沒有記錄它的讀取信息,則從文件的末尾開始讀取,也就是說,僅僅讀取新添加的內容。對於一些更新的日志類型的監聽,通常直接使用end就可以了;相反,beginning就會從一個文件的頭開始讀取。但是如果記錄過文件的讀取信息,這個配置也就失去作用了。

  4 sincedb_path

  這個選項配置了默認的讀取文件信息記錄在哪個文件中,默認是按照文件的inode等信息自動生成。其中記錄了inode、主設備號、次設備號以及讀取的位置。因此,如果一個文件僅僅是重命名,那么它的inode以及其他信息就不會改變,因此也不會重新讀取文件的任何信息。類似的,如果復制了一個文件,就相當於創建了一個新的inode,如果監聽的是一個目錄,就會讀取該文件的所有信息。

  5 其他的關於掃描和檢測的時間,按照默認的來就好了,如果頻繁創建新的文件,想要快速監聽,那么可以考慮縮短檢測的時間。

  6 add_field

  就是增加一個字段,例如:

file {
     add_field => {"test"=>"test"}
        path => "D:/tools/logstash/path/to/groksample.log"
        start_position => beginning
    }

  7 tags

  用於增加一些標簽,這個標簽可能在后續的處理中起到標志的作用

  8 delimiter

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

  暫時關於file就研究的這么多,后續會深入學習源碼,做更多的分享。

參考

【1】logstash官方文檔:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file-sincedb_path

作者: xingoo
本文版權歸作者和博客園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接!
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM