logstash從AWS S3獲取日誌信息的經常使用方法有兩種,一種是利用AWS lambda,另外一種就是利用logstash的S3 input插件。html
插件github:https://github.com/logstash-plugins/logstash-input-s3git
插件文檔:https://www.elastic.co/guide/en/logstash/7.3/plugins-inputs-s3.htmlgithub
須要注意的是,logstash 7.3版本和6.3版本對應的S3 input的版本也不一樣,二者支持的設置選項也不一樣。一個明顯的區別是logstash 7.3對應的S3 input多了一個watch_for_new_files選項。正則表達式
配置選項的話,其實值得說的內容並很少。主要有如下幾個:ide
access_key_id
secret_access_key
region
這三個配置是跟登錄S3服務相關的。其中access key和secret access key在My Security Credentials中進行查看和管理。
bucket
這個是指定數據來源的桶的名稱。
prefix
exclude_pattern
這兩個是用來指定或過濾文件的。
prefix將指定一個字符串前綴,符合該前綴的文件將被
收集。
exclude_pattern將指定一個正則表達式,符合該正則表達式的文件將被
忽略。
另外有一點,在S3中,雖然文件在形式上是以文件夾的結構進行管理的,但文件夾的實質是文件名的前綴。例如,假設桶中有一個文件夾叫gg,gg中有一個叫abc.log的文件,那麼實際上abc.log的文件全名是gg/abc.log。在進行文件的匹配和過濾時,也是按文件全名進行處理的。若是有 prefix => "gg/",則能夠匹配到在gg文件夾中的abc.log。
S3 input插件將讀取符合配置的每一個文件的內容,並將文件中的每一行轉換爲一個message,後續能夠利用filter對message進行處理。在讀取了S3上的文件後,S3 input會在./data/plugins/inputs/s3/中創建文件並記錄目前已經讀取文件的最後上傳時間。該文件即標記了logstash讀取文件的進度。刪除該文件將致使logstash在啓動後從新讀取S3上的符合配置要求的文件內容。