Gerenciar registros de fluxo

Use registros de fluxo para salvar metadados de tráfego de rede, incluindo 5 tuplas, no Google Distributed Cloud (GDC) isolado por ar para a pilha de observabilidade na forma de registros pesquisáveis. Use esses registros para:

  • Entender os fluxos de tráfego para um determinado serviço em uma organização.
  • Entender e identificar problemas com a integridade da rede de uma carga de trabalho do Kubernetes.
  • Verifique as políticas de rede do Kubernetes.

O registro de fluxo é um recurso do GDC baseado no projeto de código aberto Hubble: https://github.com/cilium/hubble. Configure os registros de fluxo usando o recurso FlowLog da API Networking.

Antes de começar

  • Você precisa de autorização para gerenciar ou ver registros de fluxo no console do GDC. Para gerenciar registros de fluxo, peça ao administrador do IAM da organização para conceder a você o papel de administrador de registros de fluxo (flowlog-admin). Para visualizar apenas os registros de fluxo atuais, peça ao administrador do IAM da organização para conceder a você o papel de leitor de registros de fluxo (flowlog-viewer).

    Para informações sobre como definir vinculações de função no console do GDC, consulte Conceder acesso a recursos.

  • Antes de consultar e visualizar registros de fluxo em painéis, é necessário ter acesso à instância de monitoramento. Para mais informações, consulte Consultar e visualizar métricas.

Criar um registro de fluxo

Crie um registro de fluxo para salvar metadados de tráfego de rede filtrados por um determinado conjunto de especificações.

Criar um registro de fluxo com filtros de protocolo e namespace

  1. Crie um arquivo chamado example-flowlog.yaml com o conteúdo a seguir.

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - tcp
          source:
            namespacePodSelectors:
              - namespace: gpc-system
              - namespace: kube-system
          destination:
            namespacePodSelectors:
              - namespace: kube-system
      lifetime:
        duration: "1h"
    

    Substitua FLOW_LOG_NAME pelo nome escolhido para o registro de fluxo.

    Neste exemplo, o registro de fluxo captura todos os fluxos para os quais uma conexão TCP foi iniciada por qualquer pod no namespace gpc-system ou kube-system para qualquer pod no namespace kube-system. Ele interrompe a gravação de registros uma hora depois da criação do objeto.

  2. Crie o objeto de registro de fluxo:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    Substitua MANAGEMENT_API_SERVER pelo caminho kubeconfig do servidor da API Management zonal.

  3. Verifique se o valor FLOW_LOG_NAME foi reconciliado corretamente e se o processo de geração de registros foi iniciado examinando o campo Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Exemplo de status:

    Status:
      Clusters:
        Cluster:  org-1-infra-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    org-1-infra
        Cluster:                 user-vm-1-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-1
        Cluster:                 user-vm-2-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-2
      Conditions:
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Active
        Status:                True
        Type:                  Logging
        Last Transition Time:  2024-01-19T01:46:11Z
        Message:
        Observed Generation:   1
        Reason:                ResourcesPropagated
        Status:                True
        Type:                  Propagated
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Succeeded
        Status:                True
        Type:                  Reconciled
      Start Time:              2024-01-18T19:17:53Z
      End Time:              2024-01-18T20:17:53Z
    

    Este exemplo de saída contém as seguintes condições:

    • Propagated: a configuração de registro de fluxo foi enviada para os clusters user-vm-1, user-vm-2 e org-1-infra.
    • Reconciled: o registro de fluxo foi programado com sucesso nos clusters user-vm-1, user-vm-2 e org-1-infra.
    • Logging: o registro de fluxo não expirou nem foi desativado, não encontrou nenhum erro e pode gerar registros se os filtros corresponderem aos fluxos.
    • Os valores Start Time e End Time indicam que o job foi iniciado em 19:17:53 e expira em 20:17:53.

    Para que esse registro de fluxo possa gerar entradas de registro, todas as condições Propagated, Reconciled e Logging precisam ser verdadeiras.

Modificar registro de fluxo

Para modificar um registro de fluxo, altere a definição do objeto de registro de fluxo criado no arquivo example-flowlog.yaml e aplique-o novamente:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

Conferir registros de fluxo no painel de monitoramento

  1. Abra o painel de registros operacionais. Para mais informações, consulte Consultar registros operacionais.

  2. Defina o valor do menu suspenso identifier como network-flow-logs, clique em add json parser e forneça o seguinte valor à consulta: {identifier="network-flow-logs"} | json:

    Definir identificador

  3. Clique em Executar consulta. Isso mostra as entradas de registro de fluxo salvas:

    Executar consulta

  4. Use os filtros para refinar ainda mais os resultados. Por exemplo, forneça o menu suspenso cluster com o valor user-vm-1 para analisar apenas os fluxos coletados do cluster user-vm-1:

    Refinar filtros

  5. Navegue pelas entradas de registro de fluxo, expanda a entrada para conferir os detalhes e adicione mais filtros de rótulo conforme necessário usando o ícone de atalho. Neste exemplo, queremos filtrar ainda mais os fluxos pelo endereço IP de origem:

    Entrada de registro de fluxo

  6. Clique no ícone de atalho + para filtrar fluxos por um campo de metadados específico.

    Atalho do filtro de rótulo

Ver resultados por nome do registro de fluxo

Quando vários registros de fluxo são criados, um filtro de rótulo adicional pode ser criado para ver os resultados de um ou mais registros de fluxo.

Para ver resultados limitados a registros produzidos por FLOW_LOG_NAME, crie um filtro de rótulo com os seguintes valores:

  • Label definido como On. Ele diferencia maiúsculas de minúsculas.
  • Operator definido como ~=. Isso usa um comparador de expressão regular.
  • Value definido como /FLOW_LOG_NAME/. O valor FLOW_LOG_NAME precisa estar entre /.

Filtre os resultados para ver apenas os registros produzidos por flowlog1:

Filtrar rótulos por nome do fluxo

Referências