こんばんは。今日は、Azure MonitorのLog AnalyticsのログをPower BIに統合する手順を試してみましたので、手順をまとめておきます。
どうせめんどくさいんだろうなぁと思って及び腰だったのですが、超絶簡単にできました・・!これはスバらしい・・・!
それではまいります。
なお、図解などはないですが公式ドキュメントも一応あるようでしたので貼っておきます。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/log-powerbi
Contents
背景
Azure Log Analyticsで収集したAzure各種リソースのログを、リアルタイムで可視化して社内にインサイトを提供したい場合などに役立つと思います。
Log Analyticsでは、システムのCPU使用率といったメトリクスだけでなく、アプリケーションのログなどさまざまな情報を収集できるので、そのログをうまく分析してやることでビジネスの改善につながるインサイトを抽出できる可能性も秘めています。
前提
- AzureのLog Analyticsに分析したいログが蓄積されていること
- Power BI Desktopがインストールされていること
- (レポートを発行するなら)Power BIサービスのライセンスをもっていること
手順
Log AnalyticsからPower BI用クエリをエクスポートする
まず最初に、Log Analytics上で、欲しいデータが取得できるクエリを作ってもらったうえで、エクスポート>Power BIへエクスポートをオプションを選択します。Power BIのクエリはM言語 という形式で書かねばならないのですが、このオプションを利用することで、KQLをM言語形式に自動変換してくれます。
エクスポートされたクエリはこんな感じでtxt形式で保存されます。クエリの中を見てみると、Source変数の中で、接続先のlog Analyticsワークスペース情報が記述されていることが分かります。これでLog Analyticsからデータが取得できるようになっているわけですね。
Power BI Desktopでデータに接続する
続いてPower BI Desktopでこのデータを取得する設定をしていきます。といっても超絶簡単1ステップです。
Power BI Desktopを起動して・・・
データを取得 > 空のクエリ > 詳細エディターで、先ほどエクスポートしたクエリを張るだけ。
すると、Log Analyticsのデータが抽出できましたっ!「閉じて適用」に進みます。
可視化する
データを取り込めたので、あとは所望の可視化を自由に行うだけです。
レポートとして発行する
最後にレポートとして発行します。Power BI Desktopから”発行”すると
Power BIレポートとして共有することができるようになりました。
(おまけ)Log Analytics ダッシュボードもあるよ
ちなみに、今回Power BIで可視化しましたが、Azureにもダッシュボード機能がありますので、Power BIのライセンスがない場合など、場合によってはこちらを使う手もありそうです。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/visualize/tutorial-logs-dashboards
Azure Monitorのピン留め先から、ダッシュボードを指定すれば・・・
クエリ結果をダッシュボードに表示できます。Power BIのようなグラフでの可視化には、Log Analyticsのクエリ側でrender timechart構文などを使って事前に可視化しておく必要はありそうです。
以上、Log AnalyticsのログをPower BIで可視化する方法の解説でした!
珍しくとても簡単だった・・・参考になりましたら幸いです。
おしまい
Log Analyticsでは、データの抽出期間を、クエリ中で明示しなくともUI上で指定することができました。この場合、生成されたMクエリで取得できるデータの抽出期間はどうなるのでしょうか。
試してみたところ、Log Analyticsで設定していた期間と同じ区間のデータが抽出されました。生成されたMクエリを眺めてみると、timespan句でこの設定を反映しているようです。
今度は、UI上の設定を使わず、クエリ中に期間を明示した場合も試してみました。
この場合、生成されるMクエリが先ほどと少々変わりました。timespan設定は消えて、代わりにクエリ中に期間が指定されています。
というわけで、結論としては、「UIで指定した期間、またはクエリで指定した期間に従って抽出される」ということのようです。