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 を使用します。
以下の 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 EOFEnvoy アクセス ログは、Container Insights アドオンが有効になっている Log Analytics ワークスペースで使用できます。
Log Analytics ワークスペースに移動し、次のクエリを実行して、Envoy アクセス ログを表示します。
ContainerLogV2 | where TimeGenerated > ago(45m) | where PodName contains "gateway" | take 10
コントロール プレーン ログを有効にする
コントロール プレーン ログを有効にするには、診断設定を作成し、Log Analytics ワークスペースにログを送信します。
次のコマンドを使用して、診断設定名の環境変数を設定します。
export DS_NAME=<diagnostic-settings-name>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有効になったら、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 Kubernetes Application Network の可観測性と監視の詳細については、次の記事を参照してください。