Grafana を使った株価観測(投了)

Grafana に慣れておくと嬉しい気がするので,私に直接関わりあるデータとして株価を観測することにします.

追記:実装を途中で投げ出しました.敗因は各社ごとにデータフォーマットが異なることとデータが取るのが大変なサイトがあったこと……

メインの参考文献:
MySQLのデータをgrafanaで表示させてみた(https://ludwig125.hatenablog.com/entry/2020/12/05/064958

環境

  • Ubuntu 18.04 LTS

1.Docker install 〜 run Grafana & MySQL

sudo apt update
sudo apt install docker.io

docker の権限周りでエラーが出たので以下のサイトを参考に追加する.

sudo usermod -aG docker YOUR_NAME
sudo chmod 666 /var/run/docker.sock

Grafana をインストール,サーバの起動

sudo apt-get install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
systemctl start grafana-server

データが消えないようにボリュームを作って永続化,MySQL サーバの起動

docker volume create mysql
docker container run --name mysql-server -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=YOUR_PASSWORD -p 3306:3306 -itd mysql:latest

最初 port を expose するのを忘れていたり background で動かし忘れていたりしたのでその修正には以下のサイトを参考にした.

2.MySQL 設定

データベースと権限設定したユーザを追加する.
ユーザとしては grafana 用の read only なユーザ(grafana)とデータを定期的に追加するために read/write 可能なユーザ(cron)を準備した.

docker exec -it mysql-server bash

mysql -p
# enter your password

CREATE DATABSE stock;
CREATE USER 'grafana' IDENTIFIED BY 'PASSWORD';
CREATE USER 'cron' IDENTIFIED BY 'PASSWORD';
GRANT SELECT ON stock.* TO 'grafana';
GRANT ALL PRIVILEGES ON stock.* TO 'cron'; 

過剰な権利を与えたりしたら次のようにする.

3.データを定期記録するプログラムを作成

どこからデータを引っ張ってこればいいかをいい感じに調べて,それを MySQL に食わせるためのプログラムを Python で簡単に書く.とりあえずは環境構築.

sudo apt install python3 python3-pip
pip3 install mysql-connector==8.0.19

最新版の mysql-connector を使ったときにエラーを吐いたのでバージョンを合わせた.

次はコードを書く.

(投了したので概要だけ)

  1. データソースのサイトを探して GET する
  2. python で適度にデータ処理してデータベースに突っ込む
  3. (crontab に追加して定期的にデータをアップデートする)

このあとは Grafana と MySQL をつなげて表示までいけたら良かったのですが,残念なことに各社それぞれ自由なフォーマットを使っていることに気づき,流石に修正しきれないので投了しました.
気が向いたら実装を追加,くらいでしょうか……


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です