Azure Monitor ログによるコンテナー グループおよびインスタンスのログ記録

Log Analytics ワークスペースは、Azure リソースからだけでなく、オンプレミスのリソースや他のクラウドのリソースからのログ データも格納して照会できる一元的な場所を提供します。 Azure Container Instances には、ログとイベント データを Azure Monitor ログに送信するための組み込みサポートが含まれています。

コンテナー グループのログとイベント データを Azure Monitor ログに送信するには、コンテナー グループを構成するときに既存の Log Analytics ワークスペース ID とワークスペース キーを指定します。

以下のセクションでは、ログ記録が有効なコンテナー グループの作成方法と、ログに対するクエリの実行方法について説明します。 また、ワークスペース ID とワークスペースキーでコンテナー グループを更新して、ログ記録を有効にすることもできます。

注意

この記事は最近、Log Analytics ではなく Azure Monitor ログという用語を使うように更新されました。 ログ データは引き続き Log Analytics ワークスペースに格納され、同じ Log Analytics サービスによって収集されて分析されます。 Azure Monitor のログの役割をより適切に反映させるために、用語を更新しています。 詳しくは、Azure Monitor の用語の変更に関するページをご覧ください。

前提条件

コンテナー インスタンスでログを有効にするには、次の前提条件が必要です。

Log Analytics の資格情報を取得する

Azure Container Instances が Log Analytics ワークスペースにデータを送信するには、アクセス許可が必要です。 このアクセス許可を付与し、ログ記録を有効にするには、コンテナー グループを作成するときに、Log Analytics ワークスペース ID と、そのキーの 1 つ (プライマリまたはセカンダリ) を提供する必要があります。

ログ分析ワークスペースの ID とプライマリ キーを取得するには:

  1. Azure portal で Log Analytics ワークスペースに移動します
  2. [設定][Agents management]\(エージェント管理\) を選択します
  3. 次の値を書き留めておきます。
    • ワークスペース ID
    • 主キー

コンテナー グループを作成する

ログ分析のワークスペース ID とプライマリ キーがわかったので、ログ記録が有効なコンテナー グループを作成できます。

次の例は、1 つの fluentd コンテナーで構成されるコンテナー グループを作成する 2 つの方法を示しています。1 つは Azure CLI を使用する方法で、もう 1 つは Azure CLI と YAML テンプレートを使用する方法です。 fluentd コンテナーは、既定の構成で複数の出力行を生成します。 この出力は Log Analytics ワークスペースに送信されるため、ログの表示とクエリのデモンストレーションに適しています。

Azure CLI でのデプロイ

Azure CLI でデプロイするには、az container create コマンドで --log-analytics-workspace パラメーターと --log-analytics-workspace-key パラメーターを指定します。 次のコマンドを実行する前に、2 つのワークスペースの値を前の手順で取得した値に置き換えます (また、リソース グループ名を更新します)。

Note

次の例では、パブリック コンテナー イメージを Docker Hub からプルします。 匿名の pull request を行うのではなく、Docker Hub アカウントを使用して認証するようにプル シークレットを設定することをお勧めします。 パブリック コンテンツを操作するときの信頼性を向上させるために、プライベートの Azure Container Registry にイメージをインポートして管理します。 パブリック イメージの操作に関する詳細を参照してください

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

YAML でのデプロイ

YAML でコンテナー グループをデプロイしたい場合にはこの方法を使用します。 次の YAML は、1 つのコンテナーが含まれたコンテナー グループを定義します。 YAML を新しいファイルにコピーしてから、LOG_ANALYTICS_WORKSPACE_IDLOG_ANALYTICS_WORKSPACE_KEY を前の手順で取得した値に置き換えます。 ファイルを deploy-aci.yaml として保存します。

Note

次の例では、パブリック コンテナー イメージを Docker Hub からプルします。 匿名の pull request を行うのではなく、Docker Hub アカウントを使用して認証するようにプル シークレットを設定することをお勧めします。 パブリック コンテンツを操作するときの信頼性を向上させるために、プライベートの Azure Container Registry にイメージをインポートして管理します。 パブリック イメージの操作に関する詳細を参照してください

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

次に、以下のコマンドを実行してコンテナー グループをデプロイします。 myResourceGroup をサブスクリプション内のリソース グループに置き換えます (または、"myResourceGroup" という名前のリソース グループを最初に作成します)。

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

コマンドを発行した直後に、Azure から展開の詳細を含む応答を受け取るはずです。

ログを表示する

コンテナー グループをデプロイした後、最初のログ エントリが Azure portal に表示されるまでに数分 (最大 10 分) かかることがあります。

ContainerInstanceLog_CL テーブル内のコンテナー グループのログを表示するには、次の手順を実行します。

  1. Azure portal で Log Analytics ワークスペースに移動します
  2. [全般][ログ] を選択します
  3. クエリ ContainerInstanceLog_CL | limit 50 を入力します
  4. [実行] を選択します

クエリによっていくつかの結果が表示されます。 最初に結果が何も表示されない場合は、数分待ってから、 [実行] ボタンを選択してクエリをもう一度実行します。 既定では、ログ エントリはテーブル形式で表示されます。 その後、行を展開して個々のログ エントリの内容を表示できます。

Azure portal のログ検索の結果

イベントの表示

コンテナー インスタンスのイベントは、Azure portal で確認することもできます。 イベントには、インスタンスが作成されたときや開始したときが含まれます。 ContainerEvent_CL テーブル内のイベント データを表示するには、次の手順に従います。

  1. Azure portal で Log Analytics ワークスペースに移動します
  2. [全般][ログ] を選択します
  3. クエリ ContainerEvent_CL | limit 50 を入力します
  4. [実行] を選択します

クエリによっていくつかの結果が表示されます。 最初に結果が何も表示されない場合は、数分待ってから、 [実行] ボタンを選択してクエリをもう一度実行します。 既定では、エントリがテーブル形式で表示されます。 その後、行を展開して個々のエントリの内容を表示できます。

Azure portal でのイベント検索の結果

コンテナー ログのクエリを実行する

Azure Monitor ログには、何千行にもなる可能性があるログ出力から情報を抽出ための広範なクエリ言語が含まれます。

クエリの基本構造では、ソース テーブル (この記事では ContainerInstanceLog_CL または ContainerEvent_CL) の後に、一連の演算子をパイプ文字 (|) で区切って記述します。 複数の演算子を連結して結果を絞り込み、高度な機能を実行できます。

クエリ結果の例を見るには、クエリ テキスト ボックスに次のクエリを貼り付けてから、 [実行] ボタンを選択してクエリを実行します。 このクエリは、"Message" フィールドに "warn" という単語が含まれるすべてのログ エントリを表示します。

ContainerInstanceLog_CL
| where Message contains "warn"

さらに複雑なクエリもサポートされています。 たとえば、次のクエリでは、過去 1 時間以内に生成された "mycontainergroup001" コンテナー グループのログ エントリのみが表示されます。

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

ログのスキーマ

Log Analytics の Azure Monitor レガシ スキーマについては、「従来の Log Analytics テーブル」を参照してください。

診断設定の使用

新しいテーブルでは、Log Analytics に情報をルーティングするために診断設定を使用する必要があります。 Container Instances の診断設定機能はパブリック プレビューであり、Azure portal のプレビュー機能オプションを使って有効にできます。

詳細については、「Azure Monitor Log Analytics テーブル」を参照してください。

次のステップ

Azure Monitor ログ

Azure Monitor ログでのログのクエリとアラートの構成について詳しくは、以下をご覧ください。

コンテナーの CPU とメモリを監視する

コンテナー インスタンスの CPU とメモリ リソースの監視については、以下をご覧ください。