Azure Resource Manager を監視する

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

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

Note

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

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

分析情報

Azure の一部のサービスについては、サービスを監視するための開始点となる監視ダッシュボードが Azure portal に組み込まれています。 これらのダッシュボードは、"分析情報" と呼ばれており、Azure portal の Azure Monitor の [分析情報ハブ] にあります。

詳細については、「Azure Monitor リソース グループの分析情報の監視」を参照してください。

リソースの種類

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

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

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

データ ストレージ

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 データ プラットフォーム」を参照してください。

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

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

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

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

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

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

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

Azure でリソースを作成および管理するとき、要求は Azure のコントロール プレーンである Azure Resource Manager を通じて調整されます。 この記事では、Azure に対して行われたコントロール プレーン要求の量と待機時間を監視する方法について説明します。

これらのメトリックを使用すると、サブスクリプション全体のコントロール プレーン要求のトラフィックと待機時間を監視できます。 たとえば、調整された要求を確認することで、要求がいつ調整されたかを把握できるようになりました。 それらが失敗したかどうかを判断するには、特定の状態コードでフィルター処理し、サーバー エラーを確認します。

メトリックは、最大 3 か月間 (93 日間) 使用でき、同期要求のみを追跡します。 仮想マシンの作成のようなシナリオの場合、メトリックは実行時間の長い非同期操作のパフォーマンスや信頼性を表すものではありません。

Azure Resource Manager メトリックへのアクセス

コントロール プレーン メトリックには、Azure Monitor REST API、SDK、Azure portal を使用して Azure Resource Manager メトリックを選択することによってアクセスできます。 Azure Monitor の概要については、Azure Monitor のメトリックに関するページを参照してください。

コントロール プレーン メトリックにアクセスするためのオプトインまたはサインアップのプロセスはありません。

ベアラー トークンを取得して Azure に要求を行う方法のガイダンスについては、Azure REST API リファレンスのページを参照してください。

メトリック定義

Azure Monitor での Azure Resource Manager メトリックの定義には、2017-12-01-preview API バージョンからのみアクセスできます。 定義を取得するには、次のスニペットを実行します。 00000000-0000-0000-0000-000000000000 は、サブスクリプション ID で置き換えてください。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metricDefinitions?api-version=2017-12-01-preview&metricnamespace=microsoft.resources/subscriptions' \
--header 'Authorization: bearer {{bearerToken}}'

このスニペットでは、メトリック スキーマの定義が返されます。 特に、このスキーマには、Monitor API でフィルター処理できるディメンションが含まれています。

メトリックの例

Azure Resource Manager メトリックについて調べるのに役立つシナリオをいくつか次に示します。

Azure portal を使用してトラフィックと待機時間のコントロール プレーン メトリックのクエリを実行する

まず、ポータルで [Azure Monitor] ページに移動します。

[メトリックについて調べる] が強調表示された、Azure portal の [モニター] ページに移動するスクリーンショット。

[メトリックについて調べる] を選択した後、1 つのサブスクリプションを選択してから、Azure Resource Manager メトリックを選択します。

Azure portal で 1 つのサブスクリプションと Azure Resource Manager のメトリックを選んだスクリーンショット。

次に、[適用] を選択した後、カスタム フィルター処理と分割を使用して、Traffic または Latency コントロール プレーン メトリックを視覚化できます。

フィルターやディメンションで分割するオプションが示された、Azure portal のメトリック視覚化のスクリーンショット。

REST API を使用してトラフィックと待機時間のコントロール プレーン メトリックのクエリを実行する

Azure で認証した後は、サブスクリプションのコントロール プレーン メトリックを取得するための要求を行うことができます。 このスクリプトで、00000000-0000-0000-0000-000000000000 を、お使いのサブスクリプション ID に置き換えます。 このスクリプトでは、2 日間の平均要求待機時間 (秒) と合計要求数を 1 日間隔で分割して取得します。

curl --location --request GET "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=average,count&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z" \
--header "Authorization: bearer {{bearerToken}}"

Azure Resource Manager メトリックの場合は、Latency メトリックを使用し、'count' 集計を含めることでトラフィック数を取得できます。 次のように要求の JSON 応答が表示されます。

{
    "cost": 5758,
    "timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
    "interval": "P1D",
    "value": [
        {
            "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Latency",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Latency",
                "localizedValue": "Latency"
            },
            "displayDescription": "Latency data for all requests to Azure Resource Manager",
            "unit": "Seconds",
            "timeseries": [
                {
                    "metadatavalues": [],
                    "data": [
                        {
                            "timeStamp": "2021-11-01T00:00:00Z",
                            "count": 1406.0,
                            "average": 0.19345163584637273
                        },
                        {
                            "timeStamp": "2021-11-02T00:00:00Z",
                            "count": 1517.0,
                            "average": 0.28294792353328935
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.resources/subscriptions",
    "resourceregion": "global"
}

トラフィック数のみを取得する場合は、count 集計で Traffic メトリックを使用できます。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Traffic&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z' \
--header 'Authorization: bearer {{bearerToken}}'

この要求の応答は次のようになります。

{
    "cost": 2879,
    "timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
    "interval": "P1D",
    "value": [
        {
            "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Traffic",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Traffic",
                "localizedValue": "Traffic"
            },
            "displayDescription": "Traffic data for all requests to Azure Resource Manager",
            "unit": "Count",
            "timeseries": [
                {
                    "metadatavalues": [],
                    "data": [
                        {
                            "timeStamp": "2021-11-01T00:00:00Z",
                            "count": 1406.0
                        },
                        {
                            "timeStamp": "2021-11-02T00:00:00Z",
                            "count": 1517.0
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.resources/subscriptions",
    "resourceregion": "global"
}

メトリック サポート ディメンションの場合、対応するメトリック値を表示するには、ディメンション値を指定する必要があります。 たとえば、Resource Manager への要求が成功した場合の Latency に注目する場合は、StatusCodeClass ディメンションを 2XX でフィルター処理する必要があります。

仮想ネットワークやロード バランサーのようなネットワーク リソースのサブスクリプションで行われた要求の数を確認する場合は、MICROSOFT.NETWORKNamespace ディメンションをフィルター処理する必要があります。

調整された要求の確認

調整された要求のみを表示するには、429 の状態コード応答のみになるようにフィルター処理する必要があります。 REST API 呼び出しの場合、フィルター処理は $filter プロパティと StatusCode ディメンションを使用して実行します。そのためには、次のスニペットの要求の最後にあるように、$filter=StatusCode eq '429' を追加します。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCode%20eq%20%27429%27' \
--header 'Authorization: bearer {{bearerToken}}'

ポータルで直接フィルター処理することもできます。Azure portal で、HTTP 状態コードを 429 応答のみにフィルター処理するスクリーンショット。

サーバー エラーの確認

調整された要求を確認するのと同様に、5xx 応答のみをフィルター処理して、サーバー エラー応答コードを返した "すべて" の要求を表示します。 REST API 呼び出しの場合、フィルター処理は $filter プロパティと StatusCodeClass ディメンションを使用して実行します。そのためには、次のスニペットの要求の最後にあるように、$filter=StatusCodeClass eq '5xx' を追加します。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCodeClass%20eq%20%275xx%27' \
--header 'Authorization: bearer {{bearerToken}}'

調整の例で行ったのと同様に、フィルター プロパティを StatusCodeClass に設定し、値を 5xx に設定することで、ポータル内で一般的なサーバー エラーのフィルター処理を実行することもできます。

Azure Monitor リソース ログ

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

このサービスではリソース ログは収集されませんが、Azure リソースのデータの監視に関する記事で情報を見つけることができます。

Azure activity log

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

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

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

監視データを分析する

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

Azure Monitor ツール

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

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

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

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 クエリ インターフェイスに関するページを参照してください。

警告

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 は他の種類の警告を表示する場合があります。

Resource Manager のアラート ルール

Azure Resource Manager 監視データ リファレンス」の一覧で示されている任意のメトリック、ログ エントリ、またはアクティビティ ログ エントリに対してアラートを設定できます。

Advisor の推奨事項

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

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