Monitorar os logs do plano de dados e do plano de controle na Rede de Aplicativos do Kubernetes do Azure (versão preliminar)

Importante

As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

A Rede de Aplicativos Kubernetes do Azure oferece dois tipos de logs que você pode configurar com base em seus requisitos de monitoramento e solução de problemas: logs do plano de dados e do plano de controle.

  • Logs do plano de dados: incluem logs de cargas de trabalho do aplicativo, applink-system componentes de namespace e logs de acesso de proxy Envoy.
  • Logs do plano de controle: incluem logs Istiod dos componentes do plano de controle da Rede de Aplicativos do Kubernetes do Azure.

Por padrão, o registro em log da Rede de Aplicativos do Kubernetes do Azure está desabilitado. Este artigo descreve como habilitar os dois tipos de registro em log e exibi-los no Azure Monitor.

Definir variáveis de ambiente

  • Defina variáveis de ambiente para o fluxo de trabalho selecionado usando os seguintes comandos:

    # 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>
    

Habilitar logs do plano de dados

Os logs do plano de dados incluem logs de suas cargas de trabalho/aplicativos e cargas de trabalho do applink-system (Ztunnel e CNI Istio). O complemento do Azure Container Insights é a maneira preferida de habilitar e exibir logs para solução de problemas.

Ao habilitar os logs do plano de dados, você tem a opção de especificar um workspace existente do Log Analytics, usar o workspace padrão para o grupo de recursos ou criar um novo workspace.

Criar um novo workspace do Log Analytics

  • Se estiver criando um novo workspace do Log Analytics, use o az monitor log-analytics workspace create comando:

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

Habilitar o complemento do Container Insights em seu cluster do AKS

  • Habilite o complemento do Container Insights para o cluster de membros da Rede de Aplicativos do Kubernetes do Azure (opcionalmente omitindo a ID do workspace) usando o az aks enable-addons comando.

     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
    

Exibir logs

  • Exiba os logs navegando até o workspace do Log Analytics e executando a seguinte consulta:

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Logs de acesso do Envoy

Em alguns casos, talvez seja necessário examinar os logs de acesso do Envoy quando o tráfego é gerado para seus aplicativos/cargas de trabalho. Para habilitar os logs de acesso do Envoy, use a API de telemetria.

  1. No YAML abaixo, especifique o namespace no qual você deseja habilitar o log de acesso do Envoy. Para logs de acesso do Envoy em toda a malha, remova o namespace dos metadados.

    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
    

    Os logs de acesso do Envoy estarão disponíveis no workspace do Log Analytics onde o complemento do Container Insights foi habilitado.

  2. Exiba os logs de acesso do Envoy navegando até o workspace do Log Analytics e executando a seguinte consulta:

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

Habilitar registros do plano de controle

Para habilitar os logs do plano de controle, você deve criar uma configuração de diagnóstico e enviar os logs para o espaço de trabalho do Log Analytics.

  1. Defina uma variável de ambiente para o nome da configuração de diagnóstico usando o seguinte comando:

    export DS_NAME=<diagnostic-settings-name>
    
  2. Crie uma configuração de diagnóstico para o recurso de membro da Rede de Aplicativos do Kubernetes do Azure e especifique o espaço de trabalho do Log Analytics como o destino usando o comando 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. Depois de habilitado, navegue até o workspace do Log Analytics e execute a seguinte consulta:

    Observação

    $appnet_member_resourceId deve estar no formato: /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
    

Tabelas de log e esquema

As tabelas a seguir contêm logs da Rede de Aplicações do Kubernetes do Azure em seu espaço de trabalho do Log Analytics.

Tabela de log Descrição
ContainerLogV2 Contém seus logs de aplicativo/carga de trabalho
MeshControlPlane Contém logs do Istiod

Schema

Para localizar o ContainerLogV2 esquema, consulte Colunas ContainerLogV2.

MeshControlPlane é uma tabela personalizada com o seguinte esquema:

# Nome da coluna Tipo
0 ID do Inquilino (TenantId) cadeia
1 TimeGenerated datetime
2 Categoria cadeia
3 Nível cadeia
4 Mensagem cadeia
5 Contêiner cadeia
6 PodName cadeia
7 Sistema de origem cadeia
8 Tipo cadeia
9 _IdentificadorDeRecurso cadeia

Exemplos de consultas

Filtrar logs pela ID do recurso de cluster do AKS

  • Filtre logs com base na ID do recurso de cluster gerenciado do AKS na tabela ContainerLogV2 usando a seguinte consulta:

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

Filtrar logs pela ID do recurso associado da Rede de Aplicativos do Kubernetes do Azure

  • Filtre logs com base no ID do recurso de membro da Rede de Aplicativos do Kubernetes do Azure na tabela MeshControlPlane para logs de plano de controle usando a seguinte consulta:

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

    A captura de tela a seguir mostra um exemplo dos erros do Application Network Istiod nos Logs do Azure Monitor.

    Captura de tela de erros do Istiod de exemplo da Rede de Aplicativos nos logs do Azure Monitor.

Para obter mais informações sobre a observabilidade e o monitoramento da Rede de Aplicativos kubernetes do Azure, consulte os seguintes artigos: