你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
Azure Kubernetes 应用程序网络提供两种类型的日志记录,可以根据监视和故障排除要求进行配置: 数据平面日志 和控制 平面日志。
-
数据平面日志:包括来自应用程序工作负荷、
applink-system命名空间组件和 Envoy 代理访问日志的日志。 - 控制平面日志:包括来自 Azure Kubernetes 应用程序网络控制平面组件的 Istiod 日志。
默认情况下禁用 Azure Kubernetes 应用程序网络日志记录。 本文介绍如何启用这两种类型的日志记录并在 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 群集上启用容器监控插件
使用
az aks enable-addons命令为 Azure Kubernetes 应用程序网络成员群集(可选地省略工作区 ID)启用 Container Insights 加载项。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 访问日志,请使用遥测 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 应用程序网络成员资源创建诊断设置,并使用命令将 Log Analytics 工作区指定为目标
az monitor diagnostic-settings create。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_nameMeshControlPlane | where TimeGenerated > ago(1h) | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
日志表和架构
下表包含 Log Analytics 工作区中的 Azure Kubernetes 应用程序网络日志:
| 日志表 | 说明 |
|---|---|
ContainerLogV2 |
包含应用程序/工作负荷日志 |
MeshControlPlane |
包含 Istiod 日志 |
Schema
若要查找 ContainerLogV2 架构,请参阅 ContainerLogV2 列。
MeshControlPlane 是具有以下架构的自定义表:
| # | 列名称 | 类型 |
|---|---|---|
| 0 | 租户ID | 字符串 |
| 1 | TimeGenerated | 日期/时间 |
| 2 | 类别 | 字符串 |
| 3 | 级别 | 字符串 |
| 4 | 消息 | 字符串 |
| 5 | 容器 | 字符串 |
| 6 | PodName | 字符串 |
| 7 | SourceSystem | 字符串 |
| 8 | 类型 | 字符串 |
| 9 | _资源ID | 字符串 |
示例查询
按 AKS 群集资源 ID 筛选日志
使用以下查询根据 ContainerLogV2 表中的 AKS 托管群集资源 ID 筛选日志:
ContainerLogV2 | where TimeGenerated > ago(45m) | where _ResourceId == $aks_cluster_resource_id // managed cluster resourceId
按 Azure Kubernetes 应用程序网络成员资源 ID 筛选日志
使用以下查询,根据 MeshControlPlane 表中的 Azure Kubernetes 应用程序网络成员资源 ID 筛选控制平面日志:
MeshControlPlane | where TimeGenerated > ago(45m) | where Level == "ERROR" | where _ResourceId == $appnet_member_resourceId // appnet member resourceId以下屏幕截图显示了 Azure Monitor 日志中应用程序网络 Istiod 错误的示例:
相关内容
有关 Azure Kubernetes 应用程序网络可观测性和监视的详细信息,请参阅以下文章: