次の方法で共有


Azure Kubernetes Application Network でデータ プレーンとコントロール プレーンのログを監視する (プレビュー)

Important

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。

Azure Kubernetes Application Network には、監視とトラブルシューティングの要件に基づいて構成できる 2 種類のログ記録 ( データ プレーン ログコントロール プレーン ログ) が用意されています。

  • データ プレーン ログ: アプリケーション ワークロード、 applink-system 名前空間コンポーネント、および Envoy プロキシ アクセス ログからのログを含めます。
  • コントロール プレーン ログ: Azure Kubernetes Application Network コントロール プレーン コンポーネントからの Istiod ログを含めます。

Azure Kubernetes Application Network のログは既定で無効になっています。 この記事では、両方の種類のログ記録を有効にして、Azure Monitor で表示する方法について説明します。

環境変数の設定

  • 次のコマンドを使用して、選択したワークフローの環境変数を設定します。

    # Set if specifying an existing or creating a new Log Analytics workspace
    export LAW_NAME=<log-analytics-workspace-name>
    
    # Set for resource group, location, and AKS cluster name
    export AKS_RG=<aks-resource-group>
    export LOCATION=<location>
    export CLUSTER_NAME=<aks-cluster-name>
    
    # Set for Azure Kubernetes Application Network member resource group, name, and member name
    export APPNET_RG=<appnet-resource-group>
    export APPNET_NAME=<appnet-name>
    export APPNET_MEMBER_NAME=<appnet-member-name>
    

データ プレーン ログを有効にする

データ プレーン ログには、ワークロード/アプリケーションと applink-system ワークロード (Ztunnel および Istio CNI) からのログが含まれます。 トラブルシューティングのためにログを有効にして表示するには、Azure Container Insights アドオンが推奨される方法です。

データ プレーン ログを有効にする場合は、既存の Log Analytics ワークスペースを指定するか、リソース グループの既定のワークスペースを使用するか、新しいワークスペースを作成するかを選択できます。

新しい Log Analytics ワークスペースを作成する

  • 新しい Log Analytics ワークスペースを作成する場合は、 az monitor log-analytics workspace create コマンドを使用します。

    az monitor log-analytics workspace create \
        --resource-group $AKS_RG \
        --workspace-name $LAW_NAME \
        --location $LOCATION
    

AKS クラスターで Container Insights アドオンを有効にする

  • az aks enable-addons コマンドを使用して、Azure Kubernetes Application Network メンバー クラスターの Container Insights アドオン (必要に応じてワークスペース ID を省略) を有効にします。

     az aks enable-addons \
      --addon monitoring \
      --name $CLUSTER_NAME \
      --resource-group $AKS_RG \
      --workspace-resource-id /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME
    

ログを表示する

  • Log Analytics ワークスペースに移動し、次のクエリを実行して、ログを表示します。

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Envoy のアクセスログ

場合によっては、アプリケーション/ワークロードに対してトラフィックが生成されたときに Envoy アクセス ログを調べる必要がある場合があります。 Envoy アクセス ログを有効にするには、Telemetry API を使用します。

  1. 以下の YAML で、Envoy アクセス ログを有効にする名前空間を指定します。 メッシュ全体の Envoy アクセス ログの場合は、メタデータから名前空間を削除します。

    cat <<EOF | kubectl apply -n default -f -
    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: mesh-logging-default
      namespace: default
    spec:
      accessLogging:
      - providers:
        - name: envoy
    EOF
    

    Envoy アクセス ログは、Container Insights アドオンが有効になっている Log Analytics ワークスペースで使用できます。

  2. Log Analytics ワークスペースに移動し、次のクエリを実行して、Envoy アクセス ログを表示します。

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where PodName contains "gateway"
    | take 10
    

コントロール プレーン ログを有効にする

コントロール プレーン ログを有効にするには、診断設定を作成し、Log Analytics ワークスペースにログを送信します。

  1. 次のコマンドを使用して、診断設定名の環境変数を設定します。

    export DS_NAME=<diagnostic-settings-name>
    
  2. Azure Kubernetes Application Network メンバー リソースの診断設定を作成し、 az monitor diagnostic-settings create コマンドを使用して Log Analytics ワークスペースを宛先として指定します。

    az monitor diagnostic-settings create \
    --resource /subscriptions/$SUBSCRIPTION/resourceGroups/$APPNET_RG/providers/Microsoft.AppLink/appLinks/$APPNET_NAME/appLinkMembers/$APPNET_MEMBER_NAME \
    --workspace /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME \
    --logs "[{category:istiod,enabled:true}]" \
    --name $DS_NAME
    
  3. 有効になったら、Log Analytics ワークスペースに移動し、次のクエリを実行します。

    $appnet_member_resourceId は次の形式である必要があります: /subscriptions/$subscription/resourceGroups/$appnet_rg/providers/microsoft.applink/applinks/$appnet_name/applinkmembers/$appnet_member_name

    MeshControlPlane
    | where TimeGenerated > ago(1h)
    | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
    

ログ テーブルとスキーマ

次の表には、Log Analytics ワークスペースの Azure Kubernetes Application Network ログが含まれています。

ログテーブル 説明
ContainerLogV2 アプリケーション/ワークロード ログが含まれています
MeshControlPlane Istiod ログが含まれています

Schema

ContainerLogV2 スキーマを見つけるには、「ContainerLogV2 列」を参照してください。

MeshControlPlane は、次のスキーマを持つカスタム テーブルです。

# 列名 タイプ
0 テナント識別子 文字列
1 タイムジェネレイテッド datetime
2 カテゴリ 文字列
3 レベル 文字列
4 メッセージ 文字列
5 コンテナー 文字列
6 ポッドネーム 文字列
7 ソースシステム 文字列
8 タイプ 文字列
9 _ResourceId(リソース識別子) 文字列

サンプル クエリ

AKS クラスター リソース ID でログをフィルター処理する

  • 次のクエリを使用して、ContainerLogV2 テーブルの AKS マネージド クラスター リソース ID に基づいてログをフィルター処理します。

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where _ResourceId == $aks_cluster_resource_id // managed cluster resourceId
    

Azure Kubernetes Application Network メンバー リソース ID でログをフィルター処理する

  • 次のクエリを使用して、MeshControlPlane テーブルの Azure Kubernetes Application Network メンバー リソース ID に基づいてログをフィルター処理し、コントロール プレーン ログを取得します。

    MeshControlPlane
    | where TimeGenerated > ago(45m)
    | where Level == "ERROR"
    | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
    

    次のスクリーンショットは、Azure Monitor ログの Application Network Istiod エラーの例を示しています。

    Azure Monitor ログの Application Network Istiod エラーの例のスクリーンショット。

Azure Kubernetes Application Network の可観測性と監視の詳細については、次の記事を参照してください。