今天來理解一下 Logstash 的基本用法,目標是把一個在本地端資料夾的 JSON 格式的股票盤後資訊,放到 ES Cloud。我們出發吧!
Logstash 是一套軟體,要讓它照我們想要的方式運作,就必須告訴它怎麼做,在 Logstash 的設計中,使用者是透過配置檔進行溝通。從官方文件的提示找到配置檔的存放位置:
在這個資料夾下,建立一個副檔名為 conf 的配罝檔:
開始編輯它吧。
conf 檔的內容包含三個部分:
input {
...
}
filter {
...
}
output {
...
}
input, filter 以及 output 分別代表三種不同類型的插件 (plug-in) 的配置區塊,它們三人組成了 Logstash 的事件處理管道 (pipeline)。
-input: 產生事件
-filter: 將事件進行轉換,處理成我們想要的格式
-output: 將事件送往別處存放 (stash),如 Elasticsearch.
所以我們可以這樣理解,玩轉 Logstash,就是組裝不同的 plug-in 來達成目的。
我在 home 目錄下放了一個 sample-stock.json 檔:
{"stock_id" : "1101","date" : "2020-09-23","volume" : 3.47E7,"open" : 41.8,"high" : 41.8,"low" : 40.9}
要把這個檔案的內容放到 ES Cloud 中。
首先,我們必須先用合適的 input plug-in 來讀檔。我們可以在官方文件找到一卡車的 plug-in ,根據我的需求,選用 file:
配置檔編寫如下:
input {
file {
path => "/home/sample-stock.json"
start_position => "beginning"
}
}
Logstash 預設包含了一個 JSON filter 插件,用來解析 JSON 資料格式並且在 logstash 中建立對應的資料結構。如果不用 filter 直接 Output,就只是把一個字串打上 ES Cloud。編輯 Conf 檔如下:
filter {
json {
source => "message"
}
}
其中,我把指定了 source 欄位為 message。在 logstash 中,所有的 event 會被存放在 message 欄位中。
最後就是要指定要把資料送到哪去,很直觀的就選擇 Elasticsearch 插件,使用說明書請參閱官方文件。
output {
elasticsearch {
index => "history-prices-logstash"
cloud_id =>"<label>:<cloud-id>"
cloud_auth =>"user_name:password"
}
}
配直 Elasticsearch 插件也是很直觀,指定 Index,設定帳密,搞定。
最後一步,就是執行 Logstash 啦~
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/sample.conf
成功了耶。但好像多了一些欄位,明天再來研究吧。