Go言語のCLIからInfluxdbに為替情報を入れてGrafanaで可視化する


はじめに

為替情報を取得できるOANDA APIについてのWrapperとそれを使用したコマンドラインツール(goanda)をGo言語で作成しました。さらに、goandaとinfluxdbとgrafanaを使用して、為替情報を可視化しました。可視化までについてDocker Composeにまとめました。

環境

実際に試した際の環境です。

  • Ubuntu 17.10
  • Docker 17.12.0-ce
  • Docker Compose 1.8.0

今回使用したものです。

流れ

可視化までの流れです。

  1. Docker Composeを起動します。
  2. goandaがInfluxDBにデータベースの作成などInfluxDBの初期設定を行います。
  3. goandaがOANDA APIを使用して過去データをInfluxDBに保存します。
  4. goandaがOANDA APIのStreaming APIを使用してリアルタイムのデータをInfluxDBに保存し続けます。
  5. InfluxDBにデータが保存されているので、Grafanaに手動で設定し可視化を行います。

実践

実際に起動してみます。

アクセストークンの取得、設定

  • OANDA APIを使用するために口座開設またはデモ口座を開設し、アクセストークンを発行必要があります。
git clone https://github.com/mmm888/exchange-api-docker
cd exchange-api-docker
cat << '_EOF_' > build/cmd/secret.go
package exchange

var (
    userID = "REPLACE THIS WITH YOUR ACCOUNT ID"
    token  = "REPLACE THIS WITH YOUR ACCESS TOKEN"
)
_EOF_

REPLACE THIS WITH YOUR ACCOUNT ID, ACCESS TOKENから発行したアクセストークンに置き換えます。

また、docker-compose.ymlに環境変数を設定して、通貨ペア等の設定ができます。設定できる一覧はこちらです。

起動

Docker Composeを起動します。

docker-compose build
docker-compose up -d

Grafanaの設定

Grafanaが起動しているので、http://127.0.0.1:3000/ にアクセスします。

  • User: admin
  • Password: admin

データストアを以下のように設定します。

グラフを以下のように設定します。

こんな感じで、可視化できました。

まとめ

作ったのはOANDA APIのWrappeする部分とそれを使ったコマンドラインツールで、外部サービスを使用して可視化まで行いました。Go言語の勉強 + 外部サービスとあわせて起動するためにDocker Composeの使い方を勉強するのにちょうどよかったと思います。

参考