Skip to content

Latest commit

 

History

History
131 lines (94 loc) · 5.82 KB

README.ja.md

File metadata and controls

131 lines (94 loc) · 5.82 KB

Nayco とは

nayco

Nayco(内湖) は、主にオンプレミスのデータ収集・蓄積・可視化環境を素早く立ち上げるための、オールインワンの小さなデータ基盤です。

主な特徴

  • Dockerコンテナ群で構成され、docker-compose コマンド一発で起動
  • 列指向DWH(ClickHouse)による、高速な集計とデータ圧縮による高いストレージ効率
  • 入力データを元にスキーマを推定し、自動でDWHにテーブルを作成。データに合わせてテーブルを作成する必要はありません。
  • 構成するソフトウェアは全てOSS

docker-compose コマンドで立ち上げたあとは、共有フォルダにファイルを置いたりMQTTでデータを送信するだけで、DWHへ自動でデータが蓄積され、Metabaseや一般的なツールによってデータを利用することができます。

詳細については Usage.ja.md を御覧ください。


クイックスタート

1. 起動

$ docker -v
Docker version 19.03.12

$ docker-compose -v
docker-compose version 1.26.2
$ git clone https://github.com/tac0x2a/nayco.git
$ cd nayco
$ docker-compose up -d

上記でNaycoが起動します。各コンテナの状態は Portainer(http://<NAYCO_HOST>:19000 )にアクセスして確認することができます。

なお、<NAYCO_HOST> は Naycoが実行されているホストまたはIPアドレスに読み替えてください。

2. サンプルデータの入力

ここでは、MQTTでJSONを送信してデータを入力します。

  • Topic: hello/nayco
  • Payload: {"title": "The Perfect Insider", "pub_date": "1996/4/5", "lang": "ja"}
  • Host: <NAYCO_HOST>
  • Port: 1883

Pythonの例

import paho.mqtt.publish as pub

topic = "hello/nayco"
payload = '{"title": "The Perfect Insider", "pub_date": "1996/4/5", "lang": "ja"}'
hostname = "<NAYCO_HOST>"
port = 1883

pub.single(topic=topic, payload=payload, hostname=hostname, port=1883)

3. データの確認

送信が完了したら、以下のデータ管理サービスでテーブルが作成されたことを確認します。

  • Uminoco: http://<NAYCO_HOST>:5000/table/hello_nayco_001

データとtopic名を元にテーブルが自動作成されていることを確認できます。 テーブル名はtopic名を元に生成されますが、RENAME TABLE ボタンから変更することができます。 今はデータが1件だけなので圧縮率が悪く見えますが、データが増えるにつれて、ClickHouseによるデータ圧縮が効果を発揮します。

4. データの可視化

蓄積したデータを可視化するサービスとして、NaycoにはMetabase が含まれています。

  • Metabase: http://<NAYCO_HOST>:3000

Metabaseを利用するためにあ、初回アクセス時に、DWH(ClickHouse)のDBをデータソースとして登録する必要があります。

  • Database type ClickHouse,
  • Database Name: 任意
  • Host: clickhouse
  • Port: 8123
  • Database user name: default
  • Database password: <空>

上記をSaveすれば、Naycoに蓄積されたデータをMetabseで可視化する準備が整いました。(Metabaseのクロールが実行されるまでの間、実際のテーブルがMetabase上に表示されない場合があります) 試しに、簡単な可視化をしてみましょう。Metabase上で hello_nayco_001 テーブルが見えるようになったので、以下のような可視化(Question)を行います。 Metabaseの使い方については、Metabaseのドキュメントを参照してください。

横軸を公開日、縦軸を件数とするバーチャートです。今は1件しかデータが登録されていないので、シンプルな見た目です。

以下のようなスクリプトを実行し、データを追加してみます。

Pythonの例

import paho.mqtt.publish as pub

topic = "hello/nayco"
payload = """
{ "title": "Doctors in Isolated Room", "pub_date": "1996/7/5", "lang": "ja" }
{ "title": "Mathematical Goodbye",     "pub_date": "1996/9/5", "lang": "ja" }
{ "title": "Jack the Poetical Private","pub_date": "1997/1/5", "lang": "ja" }
{ "title": "Who Inside",               "pub_date": "1997/4/5", "lang": "ja" }
{ "title": "Illusion Acts Like Magic", "pub_date": "1997/10/5","lang": "ja" }
{ "title": "Replaceable Summer",       "pub_date": "1998/1/7", "lang": "ja" }
{ "title": "Switch Back",              "pub_date": "1998/4/5", "lang": "ja" }
{ "title": "Numerical Models",         "pub_date": "1998/7/5", "lang": "ja" }
{ "title": "The Perfect Outsider",     "pub_date": "1998/10/5","lang": "ja" }
"""
hostname = "<NAYCO_HOST>"
port = 1883

pub.single(topic=topic, payload=payload, hostname=hostname, port=1883)

その後、Metabaseのページをリロードすると追加されたデータが表示されます。

このように、MQTTでデータを送信するだけで、簡単に可視化が可能です。その他、任意のSQLクライアントでDWHを直接クエリしたり、ファイルとしてエクスポートすることが可能です。


Contributing

  1. Fork it ( https://github.com/tac0x2a/nayco/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request