fluentd と Azure & PowerBI を連携させた簡単リアルタイム分析&ダッシュボード構築

  • 49
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

  • 最近リアルタイムストリーム処理が注目されて、いろんなプロダクトやサービスが出て盛り上がっているので、そんな中でも可視化まで一気に手に入って簡単に使えるAzure & PowerBIを使うための手順をまとめておこうと思います

  • 注: 2015/08/21現在の情報なので、今後変わっていく可能性があります

  • 注: 2015/08/21現在、設定するリージョンとしては西日本もしくはUSをオススメします

何ができるの?

  • こんな感じのイケてるリアルタイムダッシュボードが、コードを書くことなく作れます

dashboard.PNG

  • このダッシュボードでは5秒に1度自動更新がかかるようになっています(更新はストリーム処理の頻度によります)

全体構成

  • このスライドの19ページ目にある図(下記)がEnd to Endの構成イメージで、この記事ではData Collection を fluentd で行い Event Hubs/Stream AnalyticsとPowerBIの連携部分について書きます

e2e.PNG

前提条件

  • 当然ながら Microsoft Azure のアカウントが必要です
  • また Power BI のアカウントも必要です
  • Mac の方は Google Chrome での操作をオススメしています

Event Hubs の作成と設定

  • Azure 管理ポータルサイト にアクセスし、表示されるログイン画面に Microsoft アカウント を入力して [続行] ボタンをクリックし、Azure 管理ポータルサイトにログインします
  • ログインすると、下図のような Azure 管理ポータルサイト画面が表示されます

azure-portal.PNG

  • Azure 管理ポータルサイトの左下部にある [+新規] をクリックします

new.PNG

  • [APP SERVICES] -> [SERVICE BUS] -> [イベント ハブ] -> [簡易作成] の順にクリックし、名前、リージョン、新規または既存の名前空間を指定して、新しい Event Hubs を作成します

eventhubs-create.PNG

  • Stream Analytics ジョブは、単一の Event Hubs コンシューマー グループから読み取ります
  • コンシューマーグループを作成するには、新たに作成された Event Hubs に移動し、[コンシューマー グループ] タブをクリックし、ページ下部の [作成] をクリックして、コンシューマー グループの名前を指定します

consumer-group-create.PNG

  • Event Hubs へのアクセスを許可するには、共有アクセス ポリシーを作成する必要があります
  • 作成には Event Hubs の [構成] タブをクリックします

policy.PNG

  • [共有アクセス ポリシー] で、[管理] アクセス許可を持つ新しいポリシーを作成します(お試しなので管理にしていますが、実運用では必要に応じて権限をコントロールしましょう)

policy2.PNG

  • [ダッシュボード] に移動し、ページ下部の [接続情報] をクリックして、接続情報をコピーして保存します

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-create.PNG

入力の設定

  • Stream Analytics ジョブで、ページ上部の [入力] をクリックしてから、[入力の追加] から設定を追加します

inputsetting.PNG

  • [入力のエイリアス]: ジョブの入力の名を入力します。後でクエリでこの名前を使用します
  • [イベント ハブ]: Event Hubs がある名前空間を選択します
  • [イベント ハブ名]: Event Hubs の名前を選択します
  • [イベント ハブ ポリシー名]: このチュートリアルで前に作成した Event Hubs のポリシーを選択します
  • [イベント ハブ コンシューマー グループ]: このチュートリアルで前に作成したコンシューマー グループを入力します

ジョブのクエリの指定

サンプルデータの入力

  • 入力を選択して、ページ下部の [サンプル データ] をクリックします

sampling.PNG

  • 表示されたダイアログ ボックスで、データ収集を開始する [開始時間] を指定し、使用する追加のデータ量に応じて [期間] を指定して収集すると、サンプルデータが生成されます
  • 生成が終わると、[詳細] が出てくるのでそこをクリックし、 ここをクリック リンクをクリックして、生成された .JSON ファイルをダウンロードして保存します。

sample-json.PNG

クエリの入力、検証

  • Stream Analytics ジョブ ページの上部にある [クエリ] をクリックすると、クエリエディタが出てきます

query-editor.PNG

  • 適宜クエリを書き、[テスト] をクリックすると、先ほど取得したサンプルjsonをuploadして、そのサンプルデータに対しするクエリ実行結果を確認することができます

output.PNG

出力の設定

  • Stream Analytics ジョブで、ページ上部の [出力] をクリックし、[出力の追加] をクリックすると設定が出てきます

output-setting.PNG

  • ここでは PowerBI を選択して進めます
  • 続いて出てくる[接続の承認]ページで Power BI のアカウントを使ってアクセスを承認します

ack.PNG

  • 承認が済んだら、出力設定をします

powerbi-setting.PNG

  • [出力のエイリアス]: 出力のエイリアス名なので、わかりやすいものを設定します
  • [データ セット名]: Power BI で利用するデータ セットの名前を選択します。
  • [テーブル名]: Power BI で利用するテーブルの名前を選択します

 クエリの開始

  • 入力、クエリ、出力のすべてが設定できたら、ジョブを開始できます
  • 画面下部の [開始] ボタンを押して開始します、ここで開始時刻を指定することもできます

PowerBI

  • ジョブが問題なく開始されていれば、先ほどの設定どおりにPowerBI側のデータソースに出力があるはずです

powerbi-window.PNG

おわりに

  • ちょっとブラウザ&ログコレクタの設定をするだけで、いい感じのリアルタイムダッシュボードが作れるので、いろいろ可視化関連で自作してて大変だな~と思っている方には特に捗るサービスだと思います。