Azure Container Registry を監視する

Azure リソースに依存するクリティカルなアプリケーションとビジネス プロセスがある場合は、それらのリソースの可用性、パフォーマンス、操作を監視する必要があります。 この記事では、Azure Container Registry によって生成される監視データと、Azure Monitor の機能を使用してこのデータについての分析とアラートを行う方法について説明します。

監視の概要

Azure portal の各レジストリ の [概要] ページには、プッシュ操作やプル操作など、最近のリソースの使用状況とアクティビティの簡単なビューが含まれています。 この概要情報は役立ちますが、そこに表示されるデータはごくわずかです。

Registry metrics overview

Azure Monitor とは

Azure Container Registry では、Azure Monitor を使用して監視データが作成されます。Azure Monitor は Azure のフルスタックの監視サービスであり、他のクラウドやオンプレミスのリソースに加えて、Azure リソースを監視するための完全な機能セットが提供されます。

まず「Azure Monitor を使用した Azure リソースの監視」の記事にある次の概念の説明をお読みください。

  • Azure Monitor とは
  • 監視に関連するコスト
  • Azure で収集される監視データ
  • データ収集の構成
  • 監視データの分析とアラート生成のための Azure の標準ツール

以下のセクションでは、この記事を基に、Azure Container Registry に関して収集される特定のデータについて説明します。また、Azure のツールを使用してデータの収集を構成し、このデータを分析するための例を示します。

データの監視

Azure Container Registry では、他の Azure リソースと同じ種類の監視データが収集されます。これについては、Azure リソースの監視データに関するページをご覧ください。

Azure Container Registry によって作成されるメトリックとログの詳細については、「Azure Container Registry の監視データのリファレンス」を参照してください。

収集とルーティング

プラットフォーム メトリックとアクティビティ ログは自動的に収集および格納されますが、診断設定を使用して他の場所にルーティングすることもできます。

リソース ログは、診断設定を作成して 1 つ以上の場所にルーティングするまでは収集および格納されません。

Azure portal、CLI、または PowerShell を使用して診断設定を作成するプロセスの詳細については、「Azure でプラットフォーム ログとメトリックを収集するための診断設定を作成する」を参照してください。 診断設定を作成するときは、収集するログのカテゴリを指定します。 Azure Container Registry についてのカテゴリの一覧については、Azure Container Registry 監視データ リファレンスに関する記事を参照してください。

ヒント

ポータルでレジストリに移動することで、レジストリの診断設定を作成することもできます。 メニューで、 [監視][診断設定] を選択します。

次の図は、レジストリの診断設定を有効にするときのオプションを示しています。

Diagnostic settings for container registry

収集できるメトリックとログについては、次のセクションで説明します。

メトリックの分析

Azure Monitor のメニューから [メトリック] を開き、メトリックス エクスプローラーを使用して、Azure コンテナー レジストリのメトリックを、他の Azure サービスからのメトリックと一緒に分析することができます。 このツールの使用方法の詳細については、Azure Monitor メトリックス エクスプローラーでメトリックスを分析する方法に関するページを参照してください。

ヒント

ポータルでレジストリに移動することで、メトリックス エクスプローラーに移動することもできます。 メニューで [監視] の下の [メトリック] を選択します。

Azure Container Registry について収集されるプラットフォーム メトリックの一覧については、Azure Container Registry の監視データのリファレンスのメトリックに関する説明を参照してください

参考のために、Azure Monitor でサポートされているすべてのリソース メトリックの一覧を確認できます。

Azure CLI

次の Azure CLI コマンドを使用して、Azure Container Registry のメトリックに関する情報を取得できます。

REST API

Azure Container Registry のメトリックに関する情報をプログラムで取得するには、Azure Monitor REST API を使用します。

ログの分析

Azure Monitor ログのデータはテーブルに格納され、各テーブルには独自の一意のプロパティ セットがあります。

Azure Monitor 内のすべてのリソース ログには、同じフィールドの後にサービス固有のフィールドがあります。 共通のスキーマの概要については、Azure Monitor リソース ログのスキーマに関する記事をご覧ください。 Azure Container Registry のリソース ログのスキーマについては、Azure Container Registry データ リファレンスに関する記事を参照してください。

アクティビティ ログは、Azure のプラットフォーム ログであり、サブスクリプション レベルのイベントの分析情報が提供されます。 個別に表示できるほか、Azure Monitor ログにルーティングして、Log Analytics を使用してより複雑なクエリを実行することもできます。

Azure Container Registry について収集されるリソース ログの種類の一覧については、「Azure Container Registry の監視データのリファレンス」を参照してください。

Azure Monitor ログによって使用され、Log Analytics によってクエリ可能なテーブルの一覧については、Azure Container Registry データ監視のリファレンスに関する記事を参照してください。

サンプル Kusto クエリ

重要

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

たとえば、次のクエリを使用すると、ContainerRegistryRepositoryEvents テーブルから直近の 24 時間のデータを取得できます。

ContainerRegistryRepositoryEvents
| where TimeGenerated > ago(1d) 

次の画像は、サンプル出力を示しています。

Query log data

次に、レジストリ リソースの監視に使用できるクエリを示します。

過去 1 時間のエラー イベント

union Event, Syslog // Event table stores Windows event records, Syslog stores Linux records
| where TimeGenerated > ago(1h)
| where EventLevelName == "Error" // EventLevelName is used in the Event (Windows) records
	or SeverityLevel== "err" // SeverityLevel is used in Syslog (Linux) records

直近の 100 件のレジストリ イベント

ContainerRegistryRepositoryEvents
| union ContainerRegistryLoginEvents
| top 100 by TimeGenerated
| project TimeGenerated, LoginServer, OperationName, Identity, Repository, DurationMs, Region , ResultType

リポジトリを削除したユーザーまたはオブジェクトの ID

ContainerRegistryRepositoryEvents
| where OperationName contains "Delete"
| project LoginServer, OperationName, Repository, Identity, CallerIpAddress

タグを削除したユーザーまたはオブジェクトの ID

ContainerRegistryRepositoryEvents
| where OperationName contains "Untag"
| project LoginServer, OperationName, Repository, Tag, Identity, CallerIpAddress

リポジトリ レベルの操作エラー

ContainerRegistryRepositoryEvents 
| where ResultDescription contains "40"
| project TimeGenerated, OperationName, Repository, Tag, ResultDescription

レジストリ認証エラー

ContainerRegistryLoginEvents 
| where ResultDescription != "200"
| project TimeGenerated, Identity, CallerIpAddress, ResultDescription

警告

Azure Monitor のアラートは、監視データで重要な状態が見つかると事前に通知します。 これにより、ユーザーが気付く前に、管理者が問題を識別して対処できます。 アラートはメトリックログアクティビティ ログに対して設定できます。 アラートの種類に応じて、さまざまな利点と欠点があります。

次の表に、Azure Container Registry の一般的および推奨される警告ルールを示します。

アラートの種類 条件 説明
メトリック シグナル: ストレージが使用された
演算子:より大きい
集計の種類: 平均
しきい値: 5 GB
使用されたレジストリ ストレージが指定した値を超えた場合にアラートを生成します。

例: 使用されたレジストリ ストレージが値を超えた場合、メール アラートを送信する

  1. Azure portal で、お使いのレジストリに移動します。
  2. [監視][メトリック] を選択します。
  3. メトリックス エクスプローラーの [メトリック] で、 [使用済みストレージ] を選択します。
  4. [新しいアラート ルール] を選択します。
  5. [スコープ] で、アラート ルールを作成するレジストリ リソースを確認します。
  6. [条件] で、 [条件の追加] を選択します。
    1. [シグナル名] で、 [使用済みストレージ] を選択します。
    2. [グラフの期間] で、 [直近 24 時間] を選択します。
    3. [アラート ロジック][しきい値] で、5 などの値を選択します。 [単位] で、GB などの値を選択します。
    4. 残りの設定は既定値のままにして、 [完了] を選択します。
  7. [アクション] で、 [アクション グループの追加]>[+ アクション グループの作成] を選択します。
    1. アクション グループの詳細を入力します。
    2. [通知] タブで [Email/SMS message/Push/Voice](メール、SMS メッセージ、プッシュ、音声) を選択し、admin@contoso.com などの受信者を入力します。 [Review + create](レビュー + 作成) を選択します。
  8. アラート ルールの名前と説明を入力し、重大度を選択します。
  9. [アラート ルールの作成] を選択します。

次のステップ