はじめに
最近リアルタイムストリーム処理が注目されて、いろんなプロダクトやサービスが出て盛り上がっているので、そんな中でも可視化まで一気に手に入って簡単に使えるAzure & PowerBIを使うための手順をまとめておこうと思います
注: 2015/08/21現在の情報なので、今後変わっていく可能性があります
注: 2015/08/21現在、設定するリージョンとしては西日本もしくはUSをオススメします
何ができるの?
- こんな感じのイケてるリアルタイムダッシュボードが、コードを書くことなく作れます
- このダッシュボードでは5秒に1度自動更新がかかるようになっています(更新はストリーム処理の頻度によります)
全体構成
- このスライドの19ページ目にある図(下記)がEnd to Endの構成イメージで、この記事ではData Collection を fluentd で行い Event Hubs/Stream AnalyticsとPowerBIの連携部分について書きます
前提条件
- 当然ながら Microsoft Azure のアカウントが必要です
- また Power BI のアカウントも必要です
- Mac の方は Google Chrome での操作をオススメしています
Event Hubs の作成と設定
- Azure 管理ポータルサイト にアクセスし、表示されるログイン画面に Microsoft アカウント を入力して [続行] ボタンをクリックし、Azure 管理ポータルサイトにログインします
- ログインすると、下図のような Azure 管理ポータルサイト画面が表示されます
- Azure 管理ポータルサイトの左下部にある [+新規] をクリックします
- [APP SERVICES] -> [SERVICE BUS] -> [イベント ハブ] -> [簡易作成] の順にクリックし、名前、リージョン、新規または既存の名前空間を指定して、新しい Event Hubs を作成します
- Stream Analytics ジョブは、単一の Event Hubs コンシューマー グループから読み取ります
- コンシューマーグループを作成するには、新たに作成された Event Hubs に移動し、[コンシューマー グループ] タブをクリックし、ページ下部の [作成] をクリックして、コンシューマー グループの名前を指定します
- Event Hubs へのアクセスを許可するには、共有アクセス ポリシーを作成する必要があります
- 作成には Event Hubs の [構成] タブをクリックします
- [共有アクセス ポリシー] で、[管理] アクセス許可を持つ新しいポリシーを作成します(お試しなので管理にしていますが、実運用では必要に応じて権限をコントロールしましょう)
- [ダッシュボード] に移動し、ページ下部の [接続情報] をクリックして、接続情報をコピーして保存します
fluentd の設定
- fluent-plugin-azureeventhubs を使うと、Event Hubs へデータを送るのがとても簡単です
- connection_string に接続情報を設定し、hub_name に Event Hubs で設定した名前を入れるだけでOKです
(例)fluentd.conf
<match pattern>
type azureeventhubs_buffered
connection_string <Paste SAS connection string from Azure Management Potal>
hub_name <Name of Event Hubs>
include_tag (true|false) # true: Include tag into record [Optional: default => false]
include_time (true|false) # true: Include time into record [Optional: default => false]
tag_time_name record_time # record tag for time when include_time sets true. [Optional: default => 'time']
type (https|amqps) # Connection type. [Optional: default => https]. Note that amqps is not implementated.
expiry_interval <Integer number> # Signature expiration time interval in seconds. [Optional: default => 3600 (60min)]
</match>
- Event Hubsの設定が終わっていれば、この設定を用いてデータを投げ始めてOKです
- Stream Analyticsの設定で、実際のデータをサンプリングする部分があるので、先にデータを投げておくとよいです
Stream Analytics ジョブの作成
- Stream Analytics のジョブは、"入力" "クエリ" "出力" の3つの設定から成り立っています
- まずは Azure ポータルで、[新規]、[データ サービス]、[Stream Analytics]、[簡易作成] で作成します
入力の設定
- Stream Analytics ジョブで、ページ上部の [入力] をクリックしてから、[入力の追加] から設定を追加します
- [入力のエイリアス]: ジョブの入力の名を入力します。後でクエリでこの名前を使用します
- [イベント ハブ]: Event Hubs がある名前空間を選択します
- [イベント ハブ名]: Event Hubs の名前を選択します
- [イベント ハブ ポリシー名]: このチュートリアルで前に作成した Event Hubs のポリシーを選択します
- [イベント ハブ コンシューマー グループ]: このチュートリアルで前に作成したコンシューマー グループを入力します
ジョブのクエリの指定
- Stream Analytics は、変換を記述するための単純な宣言型のクエリのモデルをサポートします
- Azure Stream Analytics クエリ言語リファレンス に詳細があります
- クエリ処理の概念は、このスライド の22ページあたりに書いてあります
サンプルデータの入力
- 入力を選択して、ページ下部の [サンプル データ] をクリックします
- 表示されたダイアログ ボックスで、データ収集を開始する [開始時間] を指定し、使用する追加のデータ量に応じて [期間] を指定して収集すると、サンプルデータが生成されます
- 生成が終わると、[詳細] が出てくるのでそこをクリックし、 ここをクリック リンクをクリックして、生成された .JSON ファイルをダウンロードして保存します。
クエリの入力、検証
- Stream Analytics ジョブ ページの上部にある [クエリ] をクリックすると、クエリエディタが出てきます
- 適宜クエリを書き、[テスト] をクリックすると、先ほど取得したサンプルjsonをuploadして、そのサンプルデータに対しするクエリ実行結果を確認することができます
出力の設定
- Stream Analytics ジョブで、ページ上部の [出力] をクリックし、[出力の追加] をクリックすると設定が出てきます
- ここでは PowerBI を選択して進めます
- 続いて出てくる[接続の承認]ページで Power BI のアカウントを使ってアクセスを承認します
- 承認が済んだら、出力設定をします
- [出力のエイリアス]: 出力のエイリアス名なので、わかりやすいものを設定します
- [データ セット名]: Power BI で利用するデータ セットの名前を選択します。
- [テーブル名]: Power BI で利用するテーブルの名前を選択します
クエリの開始
- 入力、クエリ、出力のすべてが設定できたら、ジョブを開始できます
- 画面下部の [開始] ボタンを押して開始します、ここで開始時刻を指定することもできます
PowerBI
- ジョブが問題なく開始されていれば、先ほどの設定どおりにPowerBI側のデータソースに出力があるはずです
このへん
PowerBIの使い方は、ナレッジベースをご覧ください
おわりに
- ちょっとブラウザ&ログコレクタの設定をするだけで、いい感じのリアルタイムダッシュボードが作れるので、いろいろ可視化関連で自作してて大変だな~と思っている方には特に捗るサービスだと思います。