1.はじめに
Log Analytics ワークスペースや Microsoft Sentinel を用いて、時系列グラフを作成しようとしたところ、意外にこれといったドキュメントが無かったので、備忘録で残しておきます。
方法としては幾つかの方法がありますが、今回は一番簡単な列分割でキーを指定する方法をご紹介します。
2.やりたいこと
Log Analytics ワークスペースから Kusto Query (KQL) を用いてサクッと時系列グラフを作りたい。
時系列に任意のキーを集計表示して比較したい。
- X軸に時間
- Y軸に集計値(特定のキー毎に集計する)
3.やってみる
summarize
演算子とrender
演算子がポイントになります。
Log Analytics ワークスペースは Microsoft のデモ環境が提供されていますので、以下リンクから試してみてください。
Azure Log Analytics デモ環境
4.ポイント
4.1 summarize を用いて、時間軸(TimeGenerated)、Y軸の分割キー(Strings)、集計カウントでまとめる
KQL だと以下の部分になります。count()で1時間毎の集計を行う際に HTTP ステータスコードのキー scStatus
でグループ化しています。
| summarize count() by bin(TimeGenerated, 1h) , scStatus
4.2 render で timechart を指定する
一目見た際に、何のグラフで何を比較しているのか、タイトルなどを用いると分かりやすいです。
| render timechart with(title="W3C IIS Log group by HTTP Status", ytitle="Counts")
5.サンプル例
5.1 W3C IIS ログで、ステータスコード毎に時系列チャートを作成する
参考:W3Cログフォーマット
W3CIISLog
| where TimeGenerated >ago(14d)
| summarize count() by bin(TimeGenerated, 1h) , scStatus
| render timechart with(title="W3C IIS Log group by HTTP Status", ytitle="Counts")
5.2 Windows セキュリティイベントで EventID 毎に時系列チャートを作成する
参考:Windows EventID
SecurityEvent
| where TimeGenerated > ago (14d)
| summarize count() by bin(TimeGenerated, 1h) , tostring(EventID)
| render timechart with(title="SecurityEvent by EventID", ytitle="Counts")
補足
- Azure Monitor Agent(AMA) / Log Analytics Agent(MMA) から取り込まれる Windows Security Event では、なぜか EventID が数値型(int)なので、
tostring
関数で Strings 型に変換する必要があります。 - 分割に用いるキーが多すぎる場合は、
where
条件でフィルターすると良いでしょう(where EventID in (4624,4625)
など)
6. まとめ
Azure Monitor を用いてログを貯めている方は多いと思いますが、時系列チャートを作るテクニックがあまり紹介されていないので、簡単な手順としてまとめてみました。どなたかの参考になれば幸いです。
*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。