1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Log Analytics と Kusto (KQL) 入門 3 - Workbooks (ダッシュボード機能) の使い方 - Azure VM の可用性情報ダッシュボードを例に

Last updated at Posted at 2023-02-02

本記事について

Log Analytics や Azure Resource Graph を Kusto (KQL) を使って検索できるようになった後、それらをダッシュボード化したいという希望が出てくることがよくあります。そのような際に利用できる Azure サービスが、Azure Workbooks になります。

Azure Workbooks を利用すると、下記のような色鮮やかなグラフや表を組み合わせた、便利なダッシュボードを簡単に作成することができます。

image.png

Azure Workbooks はできることが非常に多く、公式ドキュメントにも各手法の詳細な説明が載っています。ただ、なかなかとっつきにくいという声も多いため、本記事では、簡単な例を基に Workbooks を作る際に良く利用される手法を見ていきたいと思います。

具体的には、パラメーターの設定、表(グリッド)・マップ・グラフの表示、変数のエクスポート、スタイルの設定などを行っていきます。

本記事の中で作成する Workbooks について

本記事では、Azure 仮想マシンが作成されているサブスクリプションで、その可用性を監視するためのダッシュボードを作っていきます。利用されるクエリの一部は、Project Flash : Azure 仮想マシンの可用性の監視を高めるというマイクロソフトのエンジニアが公開している記事の内容を基にしています。2022年から2023年にかけて、Azure Resource Graph や Azure Metric を利用して取得できる可用性情報が増えてきています。この内容を基に、仮想マシンの可用性を一元的に監視できるダッシュボードを作っていきます。

本記事に登場する Kusto クエリについて

本記事は、Kusto (KQL) にはある程度精通していることを前提としています。具体的には、以下の記事に登場するオペレーターが理解できていれば問題なく進める内容となっています。もし、KQL 自体を学習されたい方は下記の2記事も合わせてご参照ください。

Workbooks の作成

ここから順番に実際の Workbooks の作り方を見ていきます。

Workbook の作成

Workbook 自体は、Azure Monitor や Microsoft Sentinel, Log Analytics の画面などから作成できます。今回は Azure Monitor から作成します。Monitor のブックをクリックし、「+新規」からひとつ Workbook を作ります。

image.png

上の「名前を付けて保存」をクリックします。

image.png

タイトルやサブスクリプション情報、リソースグループ情報やリージョンを入力し、適用へ進みます。

image.png

Workbooks もひとつのリソースであるため、作成すると下記のようにリソースグループ内のリソースとして見えてきます。権限管理も Azure Resource Manager の IAM に依存します。

image.png

テキストの追加

まず、Workbook を開き、「編集」をクリックします。これで諸々の編集ができるようになります。都度保存することを忘れないようにしましょう。

image.png

テキストは「+追加」から「テキストの追加」を選択すると追加できます。

image.png

マークダウンで書いていくことができるので便利です。たとえば、リンクの追加もこのように行えます。

image.png

image.png

パラメーターの追加

ダッシュボードでは、パラメータを事前に設定しドリルダウンで選べるようにしておくことも重要です。Workbooks では「パラメーターの追加」からそれが行えます。

image.png

「パラメーターの追加」を押すと様々な種類のパラメーターを入れることができます。

image.png

たとえば、Azure サブスクリプションのパラメーターを作成するには下記のように設定します。パラメーターの型が様々用意されているので、使いたいものを選びます。サブスクリプションの場合は、「サブスクリプションの選択」にします。

image.png

次に、Log Analytics Workspace もパラメーター化します。型はリソースの選択とし、データの取得元をクエリにします。そして、データソースを Azure Resource Graph, リソースの種類はサブスクリプション、サブスクリプションはさきほど設定したパラメーターである「Subscription」を選び、下記クエリを入れます。これにより選択されたサブスクリプションの中にある、Log Analytics Workspace をパラメーターとして選択できるようになります。クエリの中の、type を別のリソースの種類にすることで、別のリソースの種類も同じ方法でパラメーター化できます。

resources
| where type == "microsoft.operationalinsights/workspaces"
| project id

image.png

また、時間もパラメーター化しておきます。型で時間の範囲の選択にすれば容易に設定ができます。

image.png

すると、このような形でパラメーターを入れることができるようになります。その他のパラメーターの種類や使い方については、こちらのドキュメントをご参照ください。

image.png

Resource Graph クエリの結果の表(グリッド)の追加

次に「クエリの追加」で表を追加していきます。

image.png

まずは、Azure Resource Graph で仮想マシンの一覧を取りたいと思います。データソース = Azure Resource Graph, リソースの種類 = サブスクリプション、サブスクリプション = Subscription (上のパラメーターで設定したもの)、視覚化 = グリッドにします。クエリは下記のものを入れます。

resources
| where type == "microsoft.compute/virtualmachines"
| project ResourceId = id, Region = location, Size = properties.hardwareProfile.vmSize, 
OS_Type = properties.storageProfile.osDisk.osType, OS_Offer = properties.storageProfile.imageReference.offer,
OS_SKU = properties.storageProfile.imageReference.sku, properties

image.png

次に詳細設定で、ステップ名やタイトルを入れます。

image.png

また、設定の「列の設定」で列ごとの表示設定をいじれます。

image.png

ResourceId 列の列レンダラーを「リソース」にしたり、Region 列の列レンダラーを「場所」にしたりします。そうすることで、リソースアイコン&リソースリンク付きになったり、リージョン名がきれいに整形されたりします。

image.png

image.png

Resource Graph クエリの結果のマップ(地図)の表示

地図を使ったビジュアルな表示も Workbooks の得意とするところです。国名や緯度・経度による表示もできますが、Azure のリージョン名も使えます。今回は、Azure リージョンの情報を使って地図上に可視化します。

クエリの追加で、基本的にはさきほどと同じ手順を行っていきます。今回は視覚化 = マップにして、下記のクエリを入れます。するとリージョンごとの仮想マシンの数が地図上に可視化されます。

resources
| where type == "microsoft.compute/virtualmachines"
| summarize count() by location

image.png

表1で選択したリソースに絞って、表2を表示する

ダッシュボードでは、対話的にリソースを選びながら詳細を見ていくということをしたくなる時があるかと思います。たとえば、さきほどの仮想マシン一覧でひとつ仮想マシンを選択(表1)し、その仮想マシンについて可用性状態や電源状態を調べる(表2)というシナリオを考えます。

まず、さきほどの仮想マシン一覧の表から、選択されたリソースのリソースIDを変数としてエクスポートする設定を入れます。詳細設定を開き、「項目が選択されている場合、パラメーターをエクスポートする」をクリックし、「+パラメーターの追加」をクリックします。

image.png

そして、エクスポートしたい列名とエクスポートされた後の変数名を入れます。ここでは型は「リソースの選択」としておきます。これで変数のエクスポート側の準備は完了です。今回はそれぞれ、エクスポートしたい列名 = ResourceId, エクスポートされた後の変数名 = exportResourceId としました。

image.png

次に表2として、可用性や電源状態を表示するグリッドを準備します。同じく「クエリの追加」からクエリを入れていきます。Resource Graph クエリの下記クエリを入れます。ここで、 where Id == tolower('{exportResourceId}') という句で上記でエクスポートした変数を利用し、選択されたリソースIDに一致する場合として絞り込みをしています。

Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project resourceGroup, Id = tolower(id), PowerState = tostring( properties.extended.instanceView.powerState.code)
| join kind=leftouter (
    HealthResources
    | where type =~ 'microsoft.resourcehealth/availabilitystatuses'
    | where tostring(properties.targetResourceType) =~ 'microsoft.compute/virtualmachines'
    | project targetResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState))
    on $left.Id == $right.targetResourceId
| project-away targetResourceId
| parse PowerState with "PowerState/" PowerState2
//| extend idString = tostring(id) 
| where Id == tolower('{exportResourceId}')
| project ResourceId = Id, PowerState=PowerState2, AvailabilityState

クエリの結果、上の表で特定のマシンを選択状態にした時だけ結果が表示されます。詳細設定で、「データがないことを示すメッセージ」を入れておくとより親切でしょう。

image.png

さらに今回は列の設定で、AvailabilityState の列をアイコンにしてみました。そうするとアイコンが自動的に表示されます。アイコンが用意されたテキストについては公式ドキュメントをご参照ください。

image.png

スタイルの変更 - 複数のコンポーネントを横並びにする

さきほどのマップや今のグリッドは小さい枠での表示でも十分かと思います。そのような際は、スタイルでユーザー設定の幅にしますにチェックを入れてサイズを調整できます。たとえば、それぞれパーセント幅を50%にしておくと横並びになります。

image.png

結果、下記のようになりダッシュボードがコンパクトになりました。

image.png

別の表の追加

このダッシュボードの目的は可用性の監視なので、それに適した表(グリッド)を追加します。Workbook 作成手順としてはさきほどと同じです。下記のクエリで、計画外のメンテナンスの実施状態を取ることができます。詳細設定のデータがない時のメッセージには「直近で計画外の正常性イベントはありませんでした。」と入れておきましょう。

HealthResources
	| where type == "microsoft.resourcehealth/resourceannotations"
	| where  properties.category == 'Unplanned' and  properties.context != 'Customer Initiated'
	//| extend ResourceId = tolower(tostring(properties.targetResourceId))
	| project ResourceId = properties.targetResourceId, Region = location, 
	    Category = tostring(properties.category), 
	    Annotation = tostring(properties.reason), 
	    todatetime(OccurredTime = properties.occurredTime), 
	    Summary = tostring(properties.summary)

するとイベントが無い時は下記のように表示されます。

image.png

一方、特定のマシンで Live Migration が行われたときは、下記のようにイベントが取れます。

image.png

メトリックのグラフの追加

データソースとして Azure Metric を使うこともできます。今回は、Project Flash で追加された仮想マシンの可用性メトリックを使ったグラフを追加します。追加から「メトリックの追加」を選びます。

image.png

設定値は以下のようにします。メトリックは、VM Avaiability Metric (Preview) の平均値をとります。これは、正常であれば1、異常であれば0をとるメトリックです。

image.png

正しく設定できれば、下記のように表示されるはずです。

image.png

Log Analytics ログクエリのグラフの追加

Azure Monitor エージェントを導入すると、各マシンから様々なログやメトリックを取得できます。(特に VM Insights (Azure Monitor for VMs) の利用がおすすめです。)今回は、シンプルなハートビートログのグラフを入れたいと思います。クエリを追加し、今回はデータソースをログにします。ワークスペースや時間の範囲は、上記で設定したパラメーターを使いたいと思います。
(該当の Log Analytics ワークスペースに仮想マシンのハートビート情報が入っていることが前提です。)

image.png

クエリはこちらで、5分間で一度でもハートビートがあったかどうか(ある場合は1, ない場合は0)で時系列の折れ線グラフとします。

Heartbeat 
| summarize count() by bin(TimeGenerated, 5m), Computer
| extend HB_count = iff(count_ >= 1, 1, 0)
| project TimeGenerated, Computer, HB_count

image.png

最後に

本記事では、仮想マシンの可用性の情報を例に、Azure Workbook を使ったダッシュボードの作成のやり方を見ていきました。本内容が Azure で監視のダッシュボード作成や活用の一助になれば幸いです。

*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?