關於logstash匯入es庫的配置檔案的一些理解

2021-08-06 07:00:10 字數 2628 閱讀 8346

引數

型別是否必選

預設值描述

add_field

hash

no{}

在事件中加入乙個field

close_older

number

no3600

乙個已經監聽中的檔案,如果超過這個值的時間內沒有更新內容,就關閉監聽它的檔案控制代碼。預設是3600秒,即乙個小時。【時間點短】

codec

codec

no"plain"

codec用於輸入的資料,在資料進入到ipnput之前,可以使用input codecs對資料進行解碼,從而省去了使用單獨的filter來完成這項工作

delimiter

string

no"\n"

設定行與行之間的分隔符,預設使用」\n「

discover_interval

number

no15

設定logstash每隔多久去檢查一次被監聽的path下是否有新檔案。預設值是15秒

exclude

array

no不想被監聽的檔案可以排除出去,這裡跟path 一樣支援glob展開

ignore_older

number

no86400

在每次檢查檔案列表的時候,如果乙個檔案的最後修改時間超過這個值,就忽略這個檔案。預設是86400秒,即一天

max_open_files

number

no配置當前input可以監控的檔案(控制代碼)的最大值。當我們需要處理的檔案大於這個引數的值時,使用close_older引數將一些檔案關閉

path

array

yes用來設定要監控的input目標檔案的檔案路徑,可以使用萬用字元的方式描述檔案路徑,如/var/log/.log。如果設定的值為/var/log/**/.log, 會在/var/log路徑下,遞迴的尋找字尾為log的目標檔案

sincedb_path

string

no如果你不想用預設的$home/.sincedb(windows平台上在c:\windows\system32\config\systemprpfile.sincedb),可以通過這個配置定義sincedb檔案到其他位置

sincedb_write_interval

number

no15

logstash 每隔多久寫一次sincedb檔案,預設是15秒

start_position

string, "beginning"或「end」

no「end「

logstash 從什麼位置開始去讀檔案資料,預設是結束位置,也就是說logstash程序會以類似tail -f 的形式執行。如果你是要匯入原始資料,把這個設定改為「beginning」,logstash程序就從頭開始讀取,有點類似cat,但是讀到最後一行不會終止,而是繼續變成 tail -f。

stat_interval

numberno1

logstash每隔多久檢查一次被監聽檔案的狀態(是否有更新),預設是1秒

br#no新增乙個任意的數字作為當前事件的標籤,這個標籤對我們後續的工作會有幫助

type

string

noinput的所有事件都需要新增乙個type屬性,types屬性主要在filter場景中使用。type會作為事件的一部分進行儲存,因此後續也可以用type作為關鍵字在kibana中搜尋

這個**對於配置檔案來說已經挺全的了,說一下自己的理解和實驗得到的結果。logstash是預設每隔多少秒監聽你要匯入的檔案是否增添了新的內容的。對於乙個全新的待匯入的檔案,他會從頭開始匯入,並且建立乙個 《檔案inode,已寫入的位元組數》這樣的乙個記錄,方便記錄已經匯入了多少資料到es庫中,同時sincedb_path可以指定這個記錄存放的位置。但是如果你把這個位置刪了,再執行一遍logstash,好像沒有什麼影響,它照樣 能按照之前的情況給你重新把記錄拷貝了,所以我把索引、sindb_path指定的檔案刪除,再重新執行logstash,想重新匯入原來刪除的檔案到es庫里頭,沒有任何變化,可能logstash認為我們已經把這個檔案導了多少位元組進入es庫了吧。所以這種情況,我覺得應該是把檔案拷貝乙份,匯入拷貝後的檔案入到es庫里頭,因為拷貝後的檔案inode就變化了嘛。別的方法暫時還沒想到,但是肯定有。

關於使用logstash將日誌資料增量匯入es庫中,對於全新的日誌檔案,logstash是從開頭開始匯入的,但是對於已經寫入一部分的日誌檔案,過了一段時間後日誌檔案又寫入了一些資料,logstash能夠自動監測到日誌檔案的變化並進行匯入es庫,它根據的機制應該就是《檔案inode,已寫入的位元組數》這樣的乙個記錄。自動進行監聽,每當發現已寫入的字數小於檔案的大小了,就開始自動進行匯入,從已寫入的位元組數之後的位元組進行匯入。

所以這部分的配置檔案,我認為最終要的是 input部分 要有path(指明檔案路徑),codec=>json(解析日誌的json格式),start_postion沒有必要了(因為對於全新的檔案他會自動從頭開始匯入,而對於已經匯入的檔案則會依據那個記錄從上次匯入之後的位置對新的東西匯入),sindb_path也沒有必要(除非是指定/dev/null這樣的);output部分:指明elasticsearch 以及他的host和index就行了 ,stdout部分可以指明一下codec=>rubydebug作為驗證匯入的檔案匯入沒

Logstash 建立 es 索引

官方介紹 logstash is an open source data collection engine with real time pipelining capabilities。簡單來說logstash就是一根具備實時資料傳輸能力的管道,負責將資料資訊從管道的輸入端傳輸到管道的輸出端 與此...

logstash遷移ES集群

前言 新機器上新建集群 logstash遷移原es集群資料到目標機器。安裝logstash,新建遷移配置檔案 檢視安裝進度 lsy test tail f wget log 解壓安裝包 lsy test tar zxvf logstash 5.6.1 重新命名 lsy test mv logstas...

Logstash跟es加密通訊

前提條件,es集群內部各節點已開啟https訪問,集群也已開啟x pack安全功能,並設定了系統預設的使用者密碼等,具體操作詳見 方法二 使用 kibana dev tools kibana 開發工具 標籤卡中的 api 建立 post security role logstash write ro...