Azure Batch の監視

この記事では、次の内容について説明します。

  • このサービスに対して収集できる監視データの種類。
  • そのデータを分析する方法。

Note

このサービスや Azure Monitor を既に使い慣れていて、監視データの分析方法だけを確認したい場合は、この記事で後述する分析に関するセクションをご覧ください。

Azure リソースに依存するクリティカルなアプリケーションやビジネス プロセスがある場合は、システムを監視し、そのアラートを受け取る必要があります。 Azure Monitor サービスでは、システムのすべてのコンポーネントからメトリックとログを収集して集計します。 Azure Monitor を使用すると、可用性、パフォーマンス、回復性を視覚化し、問題に関する通知を受け取ることができます。 Azure portal、PowerShell、Azure CLI、REST API、またはクライアント ライブラリは、監視データの設定および表示に使用できます。

リソースの種類

Azure では、リソースの種類と ID の概念を使用して、サブスクリプション内のすべてを識別します。 同様に、Azure Monitor では、コア監視データがリソースの種類 (名前空間とも呼ばれます) に基づいてメトリックとログに整理されます。 リソースの種類に応じてさまざまなメトリックとログが使用できます。 サービスは、複数のリソースの種類に関連付けられる可能性があります。

リソースの種類は、Azure で実行されているすべてのリソースのリソース ID の一部でもあります。 たとえば、Microsoft.Compute/virtualMachines は、仮想マシンのリソースの種類の 1 つです。 サービスとそれに関連付けられるリソースの種類の一覧については、リソース プロバイダーに関するページをご覧ください。

Batch のリソースの種類の詳細については、「Batch 監視データのリファレンス」を参照してください。

データ ストレージ

Azure Monitor の場合:

  • メトリック データは、Azure Monitor メトリック データベースに保存されます。
  • ログ データは、Azure Monitor ログ ストアに保存されます。 Log Analytics は、Azure portal のツールの 1 つであり、このストアに対してクエリを実行することができます。
  • Azure アクティビティ ログは、Azure Portal 内の独自のインターフェイスを持つ別のストアです。

必要に応じて、メトリックおよびアクティビティ ログ データを Azure Monitor ログ ストアにルーティングできます。 次に、Log Analytics を使用してデータのクエリを実行し、他のログ データと関連付けることができます。

多くのサービスで診断設定を使用して、メトリックとログ データを Azure Monitor の外部の他のストレージの場所に送信できます。 たとえば、Azure Storage、ホステッド パートナー システムEvent Hubs を使用する Azure 以外のパートナー システムなどがあります。

Azure Monitor によるデータの保存方法の詳細については、「Azure Monitor データ プラットフォーム」を参照してください。

ストレージ内の診断ログにアクセスする

Batch 診断ログをストレージ アカウント内にアーカイブする場合は、関連するイベントが発生するとすぐに、ストレージ アカウント内にストレージ コンテナーが作成されます。 次の名前付けパターンに従って、BLOB が作成されます。

insights-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/
RESOURCEGROUPS/{resource group name}/PROVIDERS/MICROSOFT.BATCH/
BATCHACCOUNTS/{Batch account name}/y={four-digit numeric year}/
m={two-digit numeric month}/d={two-digit numeric day}/
h={two-digit 24-hour clock hour}/m=00/PT1H.json

次に例を示します。

insights-metrics-pt1m/resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/
RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.BATCH/
BATCHACCOUNTS/MYBATCHACCOUNT/y=2018/m=03/d=05/h=22/m=00/PT1H.json

PT1H.json BLOB ファイルには、BLOB の URL で指定された時間 (例: h=12) 内に発生した JSON 形式のイベントが含まれます。 現在の時間内にイベントが発生すると、PT1H.json ファイルにイベントが追加されます。 分の値 (m=00) は常に 00 です。診断ログ イベントが個々の BLOB に 1 時間ごとに分類されるためです。 時刻はすべて UTC 形式です。

次の例は、PT1H.json ログ ファイル内の PoolResizeCompleteEvent エントリを示しています。 このエントリには、専用ノードと優先順位の低いノードの現在の数と目標の数、および操作の開始時刻と終了時刻に関する情報が含まれます。

{ "Tenant": "65298bc2729a4c93b11c00ad7e660501", "time": "2019-08-22T20:59:13.5698778Z", "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.BATCH/BATCHACCOUNTS/MYBATCHACCOUNT/", "category": "ServiceLog", "operationName": "PoolResizeCompleteEvent", "operationVersion": "2017-06-01", "properties": {"id":"MYPOOLID","nodeDeallocationOption":"Requeue","currentDedicatedNodes":10,"targetDedicatedNodes":100,"currentLowPriorityNodes":0,"targetLowPriorityNodes":0,"enableAutoScale":false,"isAutoPool":false,"startTime":"2019-08-22 20:50:59.522","endTime":"2019-08-22 20:59:12.489","resultCode":"Success","resultMessage":"The operation succeeded"}}

ストレージ アカウント内のログにプログラムでアクセスするには、Storage API を使用します。

Azure Monitor プラットフォームのメトリック

Azure Monitor により、ほとんどのサービスに関するプラットフォーム メトリックが提供されます。 これらのメトリックは次のとおりです。

  • 名前空間ごとに個別に定義されます。
  • Azure Monitor 時系列メトリック データベースに保存されます。
  • 軽量であり、凖リアルタイムのアラートをサポートできます。
  • リソースのパフォーマンスを時間の経過と共に追跡するために使用されます。

収集: Azure Monitor では、プラットフォーム メトリックを自動的に収集します。 構成は必要ありません。

ルーティング: また、通常は、プラットフォーム メトリックを Azure Monitor ログまたは Log Analytics にルーティングして、他のログ データを使用してクエリを実行することもできます。 詳細については、「メトリック診断設定」を参照してください。 サービスの診断設定を構成する方法については、「Azure Monitor で診断設定を作成する」を参照してください。

Azure Monitor ですべてのリソースに対して収集できるすべてのメトリックの一覧については、Azure Monitor でサポートされるメトリックに関する記事を参照してください。

Batch アカウントのメトリックスの例として、プール作成イベント、優先順位の低いノードの数、タスク完了イベントがあります。 これらのメトリックは傾向を特定するのに役立ち、データ分析に使用できます。

Note

過去 3 分間に出力されたメトリックはまだ集計されている可能性があるため、この期間中は値が過少報告されることがあります。 メトリックの配信は保証されておらずず、正しくない順序での配信、データ損失、重複などの影響を受ける可能性があります。

Batch で使用可能なメトリックの完全な一覧については、「Batch 監視データのリファレンス」を参照してください。

Azure Monitor リソース ログ

リソース ログでは、Azure リソースによって実行された操作に関する分析情報を提供します。 ログは自動的に生成されますが、保存するかクエリを実行するには、Azure Monitor ログにルーティングする必要があります。 ログはカテゴリに分類されています。 特定の名前空間に複数のリソース ログ カテゴリが含まれる場合があります。

収集: リソース ログは、"診断設定" を作成してログを 1 つ以上の場所にルーティングするまでは収集および保存されません。 診断設定を作成するときは、収集するログのカテゴリを指定します。 診断設定を作成して管理するには、Azure portal、プログラム、Azure Policy など、複数の方法があります。

ルーティング: 既定で推奨されるのは、リソース ログを Azure Monitor ログにルーティングして、他のログ データを使用してクエリを実行できるようにすることです。 Azure Storage、Azure Event Hubs、特定の Microsoft 監視パートナーなど、その他の場所も利用できます。 詳細については、「Azure リソース ログ」およびリソース ログの送信先に関するページを参照してください。

リソース ログの収集、保存、ルーティングの詳細については、「Azure Monitor の診断設定」を参照してください。

Azure Monitor で使用可能なすべてのリソース ログ カテゴリの一覧については、Azure Monitor でサポートされているリソース ログに関するページを参照してください。

Azure Monitor 内のすべてのリソース ログには、同じヘッダー フィールドの後にサービス固有のフィールドがあります。 共通のスキーマの概要については、Azure Monitor リソース ログのスキーマに関する記事をご覧ください。

使用可能なリソース ログ カテゴリ、それに関連する Log Analytics テーブル、および Batch のログ スキーマについては、「Batch 監視データのリファレンス」を参照してください。

監視する Batch アカウントごとに診断ログを明示的に有効にする必要があります。

Batch サービスでは、次のログを収集できます。

次のスクリーンショットは、allLogsAllMetrics を Log Analytics ワークスペースに送信する診断設定の例を示しています。

例を示す [診断設定] ページのスクリーンショット。

Azure Batch プールを作成するときに、次の監視関連の拡張機能のいずれかを計算ノードにインストールして、データを収集および分析できます。

さまざまな拡張機能とエージェントと、それらが収集するデータの比較については、「エージェントを比較する」を参照してください。

Azure activity log

アクティビティ ログには、Azure リソースごとに操作を追跡する、そのリソースの外から見たサブスクリプションレベルのイベント (新しいリソースの作成や仮想マシンの起動など) が含まれます。

収集: アクティビティ ログ イベントは、Azure portal で表示するために、個別のストアに自動的に生成および収集されます。

ルート指定: アクティビティ ログ データを Azure Monitor ログに送信して、他のログ データと共に分析できます。 Azure Storage、Azure Event Hubs、特定の Microsoft 監視パートナーなど、その他の場所も利用できます。 アクティビティ ログをルーティングする方法の詳細については、Azure アクティビティ ログの概要に関するページをご覧ください。

具体的に Batch アカウントでは、アクティビティ ログによってアカウントの作成と削除やキー管理に関連するイベントが収集されます。

監視データを分析する

監視データを分析するためのツールは多数あります。

Azure Monitor ツール

Azure Monitor は、次の基本的なツールをサポートします。

より複雑な視覚化を可能にするツールは次のとおりです。

  • ダッシュボードを使用すると、さまざまな種類のデータを組み合わせて、Azure portal 内の 1 つのペインに表示できます。
  • ブック。Azure portal で作成できるカスタマイズ可能なレポート。 ブックには、テキスト、メトリック、ログ クエリを含めることができます。
  • Grafana。運用ダッシュボードに優れたオープン プラットフォーム ツール。 Grafana を使用して、Azure Monitor 以外の複数のソースからのデータを含むダッシュボードを作成できます。
  • Power BI。さまざまなデータ ソースにわたって対話型の視覚化を提供するビジネス分析サービス。 Azure Monitor からログ データを自動的にインポートするように Power BI を構成して、これらの視覚化を利用できます。

[Dedicated Core Count]\(専用コア数\) や [Low-Priority Node Count]\(優先順位の低いノードの数\) などのカウントベースの Batch メトリックを分析する場合は、[平均] 集計を使用します。 [Pool Resize Complete Events]\(プール サイズの変更完了イベント\) などのイベントベースのメトリックの場合は、[カウント] 集計を使用します。 [合計] 集計の使用は避けてください。グラフの期間中に受信したすべてのデータ ポイントの値が合計されます。

Azure Monitor エクスポート ツール

次の方法を使用して、Azure Monitor から他のツールにデータを取得できます。

Azure Monitor 用 REST API の使用を開始するには、「Azure 監視 REST API のチュートリアル」を参照してください。

Kusto クエリ

Kusto クエリ言語 (KQL) を使用して、Azure Monitor ログ/Log Analytics ストアの監視データを分析できます。

重要

ポータルでサービスのメニューから [ログ] を選択すると、クエリ スコープが現在のサービスに設定された状態で Log Analytics が開きます。 このスコープは、ログ クエリにその種類のリソースのデータのみが含まれることを意味します。 他の Azure サービスのデータを含むクエリを実行する場合は、[Azure Monitor] メニューから [ログ] を選択します。 詳細については、「Azure Monitor Log Analytics のログ クエリのスコープと時間範囲」を参照してください。

いずれかのサービスに関する一般的なクエリの一覧については、Log Analytics クエリ インターフェイスに関するページを参照してください。

サンプル クエリ

Batch のサンプル ログ クエリを次に示します。

プールのサイズ変更: プールと結果コード (成功または失敗) ごとのサイズ変更時間を一覧表示します。

AzureDiagnostics
| where OperationName=="PoolResizeCompleteEvent"
| summarize operationTimes=make_list(startTime_s) by poolName=id_s, resultCode=resultCode_s

タスク期間: タスクの開始から完了までの経過時間を秒単位で指定します。

AzureDiagnostics
| where OperationName=="TaskCompleteEvent"
| extend taskId=id_s, ElapsedTime=datetime_diff('second', executionInfo_endTime_t, executionInfo_startTime_t) // For longer running tasks, consider changing 'second' to 'minute' or 'hour'
| summarize taskList=make_list(taskId) by ElapsedTime

ジョブごとの失敗したタスク: 親ジョブ別に失敗したタスクを一覧表示します。

AzureDiagnostics
| where OperationName=="TaskFailEvent"
| summarize failedTaskList=make_list(id_s) by jobId=jobId_s, ResourceId

警告

Azure Monitor のアラートにより、監視データで特定の状態が見つかったときに事前に通知を受け取ります。 アラートにより、ユーザーが気付く前に、管理者が問題を識別して対処できます。 詳細については、Azure Monitor アラートに関するページを参照してください。

Azure リソースに関する一般的なアラートのソースは数多くあります。 Azure リソースに関する一般的なアラートの例については、ログ アラート クエリのサンプルに関するページをご覧ください。 Azure Monitor ベースライン アラート (AMBA) サイトには、重要なプラットフォーム メトリック アラート、ダッシュボード、ガイドラインを実装するための半自動化された方法が用意されています。 このサイトは、Azure ランディング ゾーン (ALZ) の一部であるすべてのサービスを含む、Azure サービスの継続的に拡張されるサブセットに適用されます。

共通アラート スキーマを使用すると、Azure Monitor のアラート通知の使用を標準化できます。 詳細については、「共通アラート スキーマ」をご覧ください。

アラートの種類

Azure Monitor データ プラットフォームでは、任意のメトリックまたはログ データ ソースに対してアラートを生成できます。 監視するサービスと収集する監視データに応じて、さまざまな種類のアラートがあります。 アラートの種類に応じて、さまざまな利点と欠点があります。 詳細については、適切な種類の監視アラートの選択に関するページをご覧ください。

次の一覧では、作成できる Azure Monitor アラートの種類について説明します。

  • メトリック アラートでは、リソース メトリックを定期的に評価します。 メトリックはプラットフォーム メトリック、カスタム メトリック、メトリックに変換された Azure Monitor からのログまたは Application Insights メトリックにすることができます。 メトリック警告では、複数の条件と動的しきい値を適用することもできます。
  • ログ アラートでは、ユーザーは Log Analytics クエリを使用して、定義済みの頻度でリソース ログを評価できます。
  • アクティビティ ログ アラートは、定義された条件と一致する新しいアクティビティ ログ イベントが発生したときにトリガーされます。 Resource Health アラートと Service Health アラートは、サービスとリソースの正常性を報告するアクティビティ ログ アラートです。

一部の Azure サービスでは、スマート検出アラートPrometheus アラート推奨されるアラート ルールもサポートされています。

一部のサービスでは、同じ Azure リージョン内に存在する同じ種類の複数のリソースに同じメトリック警告ルールを適用することで、大規模に監視することができます。 監視対象リソースごとに個別の通知が送信されます。 サポートされている Azure サービスとクラウドについては、「1 つのアラート ルールで複数のリソースを監視する」をご覧ください。

Note

サービスで動作するアプリケーションを作成または実行している場合、Azure Monitor Application Insights は他の種類の警告を表示する場合があります。

バッチ アラート ルール

メトリックの配信は、正しくない順序での配信、データ損失、重複などの不整合に制約される場合があるため、1 つのデータ ポイントでトリガーされるアラートを回避する必要があります。 代わりに、しきい値を使用して、一定期間におけるこれらの不整合を考慮することができます。

たとえば、優先順位の低いコアの数が特定のレベルに落ちたときにメトリック アラートを構成することが必要になる場合があります。 その後、このアラートを使用して、プールの構成を調整します。 最高の結果を得るには、優先順位の低いコアの数の平均が期間全体のしきい値を下回った場合にアラートがトリガーされる 10 分以上の期間を設定します。 この期間によりメトリックの集計が可能になり、より正確な結果が得られるようになります。

次の表に、Batch のアラート ルール トリガーを示します。 これらのアラート ルールは例に過ぎません。 Batch 監視データのリファレンスに一覧表示されているメトリック、ログ エントリ、またはアクティビティ ログ エントリに対してアラートを設定できます。

アラートの種類 条件 説明
メトリック 使用できないノード数 使用できないノード数が 0 より大きい場合
メトリック タスク失敗イベント タスクの失敗イベントの合計が動的しきい値より大きい場合

Advisor の推奨事項

一部のサービスでは、リソースの操作中にクリティカルな条件や差し迫った変更が発生した場合は、ポータルのサービス [概要] ページにアラートが表示されます。 アラートの詳細と推奨される修正は、左側のメニューの [監視] の下の [アドバイザーのレコメンデーション] に表示されます。 通常の操作中、アドバイザーのレコメンデーションは表示されません。

Azure Advisor の詳細については、Azure Advisor の概要に関するページをご覧ください。

その他の Batch 監視オプション

Batch Explorer は、Azure Batch アプリケーションの作成、デバッグ、および監視を支援する、豊富な機能を備えた無料のスタンドアロン クライアント ツールです。 Batch Explorer で Azure Batch Insights を使用して、仮想マシン (VM) パフォーマンス カウンターなどの Batch ノードのシステム統計を取得できます。

Batch アプリケーションでは、Batch .NET ライブラリを使用して、ジョブ、タスク、ノード、プールなどのリソースの状態の監視またはクエリを実行します。 次に例を示します。

Batch API を使用して、Batch ジョブ、タスク、計算ノード、およびその他のリソースに対してリスト クエリを作成できます。 リスト クエリにフィルターを適用する方法の詳細については、「効率的に Batch リソースを一覧表示するクエリを作成する」を参照してください。

または、タスクまたはノードの大規模なコレクションに関する詳細情報を返す、時間がかかる可能性のあるリスト クエリの代わりに、[タスク数の取得] 操作と [プール ノード数の一覧表示] 操作を使用して、Batch タスクと計算ノードのカウントを取得できます。 詳細については、「タスクとノードを状態別にカウントして、Batch ソリューションを監視する」を参照してください。

Application Insights を Azure Batch アプリケーションと統合して、カスタム メトリックとトレースでコードをインストルメント化できます。 Application Insights を Batch .NET ソリューションに追加し、アプリケーション コードをインストルメント化し、Azure portal でアプリケーションを監視し、カスタム ダッシュボードを構築する方法の詳細なチュートリアルについては、「Application Insights による Azure Batch .NET アプリケーションの監視とデバッグと付随するコード サンプル」を参照してください。