Мониторинг журналов плоскости данных и плоскости управления в сети приложений Azure Kubernetes (предварительная версия)

Это важно

Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:

Сеть приложений Azure Kubernetes предоставляет два типа ведения журнала, которые можно настроить на основе требований мониторинга и устранения неполадок: журналов плоскости данных и журналов плоскости управления.

  • Журналы уровня данных: включают журналы из рабочих нагрузок приложений, applink-system компонентов пространства имен и журналов доступа прокси-сервера Envoy.
  • Журналы плоскости управления: включите журналы Istiod из компонентов плоскости управления приложениями Azure Kubernetes.

Ведение журнала сети приложений 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
    

Включите надстройку Container Insights в кластере AKS

  • Включите дополнение Container Insights для кластера члена сети приложений Azure Kubernetes (опционально без указания ID рабочей области), используя команду az aks enable-addons.

     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 телеметрии.

  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 будут доступны в рабочей области Log Analytics, где была включена надстройка Container Insights.

  2. Просмотрите журналы доступа Envoy, перейдя в рабочую область Log Analytics и выполнив следующий запрос:

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

Включение журналов плоскости управления

Чтобы включить журналы контрольной плоскости, создайте настройку диагностики и отправьте журналы в рабочее пространство Log Analytics.

  1. Задайте переменную среды для имени параметра диагностики с помощью следующей команды:

    export DS_NAME=<diagnostic-settings-name>
    
  2. Создайте параметр диагностики для ресурса члена сети приложений 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
    
  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
    

Таблицы журналов и схема

В следующих таблицах содержатся журналы сети приложений Azure Kubernetes в рабочей области Log Analytics:

таблица логов Описание
ContainerLogV2 Содержит журналы приложений и рабочих нагрузок
MeshControlPlane Содержит журналы Istiod

Схема

Чтобы найти ContainerLogV2 схему, см. столбцы ContainerLogV2.

MeshControlPlane — это настраиваемая таблица со следующей схемой:

# Имя столбца Тип
0 Идентификатор арендатора (TenantId) струна
1 TimeGenerated datetime
2 Категория струна
3 Уровень струна
4 Message струна
5 Контейнер струна
6 ПодИмя струна
7 Система источников струна
8 Тип струна
9 _ResourceId (идентификатор ресурса) струна

Примеры запросов

Фильтрация журналов по идентификатору ресурса кластера AKS

  • Фильтрация журналов на основе идентификатора ресурса управляемого кластера AKS в таблице ContainerLogV2 с помощью следующего запроса:

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

Фильтрация журналов по идентификатору ресурса участника сети приложений Azure Kubernetes

  • Фильтруйте журналы в таблице MeshControlPlane по ID ресурса участника сети приложений Azure Kubernetes для журналов управления плоскостью, используя следующий запрос:

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

    На следующем снимке экрана показан пример ошибок Istiod сетевого приложения в журналах мониторинга Azure.

    Снимок экрана: пример ошибок Istiod сети приложений в логах Azure Monitor.

Дополнительные сведения о наблюдаемости и мониторинге сети приложений Azure Kubernetes см. в следующих статьях: