KEYAKIとElastic Stackを連携してみた

こんにちは、データアナリティクスチームのハガーです。

社内では『IoTを知ろう、学ぼう、体験しよう!キャンペーン』と題してKEYAKIを使ったアイデアソンなどが実施されている今日この頃。

私としましてはKEYAKIに収集したデータを簡単に可視化・分析するため、Elastic Stackを連携させてみました。

KEYAKIとは

弊社が提供しているIoTプラットフォームとなります。

KEYAKIの特徴は以下の4点になります。
・管理機能 : アプリの設定をKEYAKIで一括管理
・SDK for iOS / Android : SDKの提供
・Web API : 収集した情報をWeb APIでお客様へ公開
・外部API連携 : HTTP/HTTPSアクセスで外部システムへ連携

KEYAKIの詳細はこちら。
https://www.cresco.co.jp/iot/solution/keyaki/

Elastic Stackとは

主にログ分析に使用されるElastic社のオープンソース製品群のことです。

データ検索・分析・保存のためのElasticsearch、データ収集・変換のためのLogstash、データ可視化のためのKibana、クライアントからのデータ送信のためのBeatsからなります。

Elasticsearch社(外部リンク)
https://www.elastic.co/jp/

システム連携イメージ

社内で実際にビーコンデータをKEYAKI上に取得し、外部API連携を利用してLogstashへ連携、加工したデータをElasticsearchに送信し、Kibanaで可視化という流れを試しました。

LogstashはAmazon EC2上に構築、ElasticsearchおよびKibanaはAmazon Elasticsearch Serviceを利用しています。Logstash定義ファイルのinputにはhttpプラグイン、outputにはamazon_esプラグインを使用しました。

KEYAKIデータの可視化

Logstashの定義ファイルやElasticsearchのテンプレートなど幾つか設定は必要になりますが、Kibanaで簡単に可視化できます。

以下、参考までに私のほうで可視化してみたものを掲載します(値はマスキングしたもの)。

1)ニアリアルタイムでの現在地表示

1分間隔で社員の現在地を表示してみました。
実際は1分ごとに画面がリフレッシュします。

場所はビーコン受信機の設置場所になります。ビーコンの受信機同士が近い場合は複数の受信機で電波が検知されてしまうため場所の特定が必要になりますが、Elasticsearchから最も電波強度が高い地点をクエリとして返すことで場所を決めています。

2)滞在状況の可視化

約2時間程度のデータを使用して、社員の滞在状況を可視化してみました。
– 左上:社員情報
– 中上:時間内の滞在社員人数
– 右上:時間内の滞在時間(分)※Total
– 下:タイムラインごとのヒートマップ

検索キーワードとして社員名を入れることで、個人ごとの滞在状況も簡単に可視化できます。

正直なところフロアマップなども表示できればいいのですが、Kibanaの地図機能では緯度経度や都市名などで世界地図へのマッピングするのみになります。
この辺はTableauなど他のBIツールを利用したり、Elasticsearchにクエリを発行して別途アプリケーション連携するなど必要がありますが、Kibanaで作成したグラフはiframeでブラウザへの埋め込みができるので、Webアプリケーションとしての作りこみも簡単にできそうです。

おわりに

KEYAKIとElastic Stackを連携することで、データの可視化が簡単にできました。
弊社ではIoTプラットフォームであるKEYAKIの提供と併せて、データ分析サービスも行っておりますので、興味のある方はお気軽にお問い合わせください。

<CRESCOデータ分析サービスの紹介ページはこちら>
https://www.cresco.co.jp/service/data_analytics/

  • このエントリーをはてなブックマークに追加