在Logstash中能夠在 input{} 裏面添加file配置,默認的最小化配置以下:html
1
2
3
4
5
6
7
8
9
10
11
|
input {
file {
path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/*"
}
}
filter {
}
output {
stdout {}
}
|
固然也能夠監聽多個目標文件:node
1
2
3
4
5
6
7
8
9
10
11
|
input {
file {
path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]
}
}
filter {
}
output {
stdout {}
}
|
文件的路徑名須要時絕對路徑,而且支持globs寫法。數組
另外,處理path這個必須的項外,file還提供了不少其餘的屬性:ide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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 {}
}
|
其中值得注意的是:post
1 path學習
是必須的選項,每個file配置,都至少有一個pathui
2 excludespa
是不想監聽的文件,logstash會自動忽略該文件的監聽。配置的規則與path相似,支持字符串或者數組,可是要求必須是絕對路徑。日誌
3 start_positioncode
是監聽的位置,默認是end,即一個文件若是沒有記錄它的讀取信息,則從文件的末尾開始讀取,也就是說,僅僅讀取新添加的內容。對於一些更新的日誌類型的監聽,一般直接使用end就能夠了;相反,beginning就會從一個文件的頭開始讀取。可是若是記錄過文件的讀取信息,這個配置也就失去做用了。
4 sincedb_path
這個選項配置了默認的讀取文件信息記錄在哪一個文件中,默認是按照文件的inode等信息自動生成。其中記錄了inode、主設備號、次設備號以及讀取的位置。所以,若是一個文件僅僅是重命名,那麼它的inode以及其餘信息就不會改變,所以也不會從新讀取文件的任何信息。相似的,若是複製了一個文件,就至關於建立了一個新的inode,若是監聽的是一個目錄,就會讀取該文件的全部信息。
5 其餘的關於掃描和檢測的時間,按照默認的來就行了,若是頻繁建立新的文件,想要快速監聽,那麼能夠考慮縮短檢測的時間。
6 add_field
就是增長一個字段,例如:
1
2
3
4
5
|
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