iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 21
0
Elastic Stack on Cloud

Elastic 戰台股系列 第 21

[Day21] 每日收盤資料更新 using Logstash (1)

前面幾天都在研究怎麼寫策略,今天開始,要來研究如何更新每日的收盤資料。

硬漢風 vs ES Style

在軟體業打滾的日子也十多年啦,從菜鳥 RD 到小主管的路上見過的工程師大概就分兩種:「什麼都自己幹」的硬漢以及「喔,這個套件不錯喔,來試試」的 Geek。寫程式,老闆賺得到錢,他不會管你用什麼方法寫,所以用什麼方法,沒有好壞或對錯之分,自己爽最重要!
先前在建立歷史盤後資料 Index 的時候,我是用 Python 打証交所 API ,然後把資料整理成 Elasticsearch 需求的格式上傳。但在研究 ES 的路上,技術顧問喬叔說:「既然用了 Elasticsearch,你更應該學學 Logstash」。不要考慮太多,研究就對了!於是,我的系統方塊圖修改如下:
https://ithelp.ithome.com.tw/upload/images/20201004/20129624yOnTPfKOQv.png
第一步,還是先來看看 Logstash 是什麼吧。

Logstash

Logstash 是開源的軟件,用來搜集、轉換數據,然後把資料送到根據需求設計的收藏庫 (Stash),我猜用這個字的意思是不想跟傳統資料庫混淆吧,抽象了一個層次。
https://ithelp.ithome.com.tw/upload/images/20201004/20129624ELzdHHcY7l.png
初步看來, Logstash 是可以滿足我的需求,我要取的 Data 是由証交所提供的 HTTP API,經過 Parsing,整理(Transform) 後,打進 Elasticsearch。

安裝 Logstash

我使用的電腦是 Macbook ,但我不想讓太多實驗與學習性質的東西直接安裝在我的原生系統上,所以我打算使用 Docker。用官方教學的 Docker 安裝方式,很容易就可以讓 Logstash 跑起來,但少了一點學習的味道。
先拉一版最新的 ubuntu image:

docker pull ubuntu

起一個 Container:

docker run ubuntu-logstash -it ubuntu bash

然後在 ubuntu-logstash 中進行接下來的的安裝。首先是 openjdk:

apt-get install openjdk-8-jdk

接下來無腦的照官方文件安裝即可:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

sudo apt-get install apt-transport-https

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

sudo apt-get update && sudo apt-get install logstash

最後來確認一下安裝:

/usr/share/logstash/bin# ./logstash --version
logstash 7.9.2

今天先到這邊,明天再繼續囉。


上一篇
[Day20] 選股程式實作 - 整合 Script Query 的 20週線選股策略
下一篇
[Day22] 每日收盤資料更新 using Logstash (2) - file plug-in with JSON
系列文
Elastic 戰台股30

尚未有邦友留言

立即登入留言