Gerenciar registros de fluxo

Use registros de fluxo para salvar metadados de tráfego de rede, incluindo 5-tuplas, no Google Distributed Cloud (GDC) com isolamento físico na pilha de observabilidade na forma de registros consultá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.
  • Verificar 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

  • É preciso receber autorização para gerenciar ou visualizar 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, peça ao admin. da organização do IAM para conceder a você o papel de Visualizador de registros de fluxo (flowlog-viewer).

    Para informações sobre como definir vinculações de papéis no console do GDC, consulte Conceder acesso a recursos.

  • Antes de consultar e visualizar os registros de fluxo nos painéis, você precisa 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 registro de fluxo com filtros de protocolo e endpoint

  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:
            - udp
          endpoint:
            ports:
              - 53
      lifetime:
        duration: "12h"
    

    Substitua FLOW_LOG_NAME pelo nome escolhido para o registro de fluxo.

    Neste exemplo, o registro de fluxo captura todo o tráfego UDP na porta 53 (como o tráfego DNS). Ele para de registrar os registros 12 horas após a 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 do kubeconfig do servidor de 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 do registro de fluxo foi enviada aos 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 erros e pode produzir registros se os filtros corresponderem aos fluxos.
    • 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 produzir entradas de registro, todas as condições Propagated, Reconciled e Logging precisam ser verdadeiras.

Modificar registro de fluxo

Para modificar um registro de fluxo, mude 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

Ver 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 identificador como network-flow-logs, clique em adicionar analisador JSON e forneça o seguinte valor para a 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 ao menu suspenso cluster um valor de 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 ver 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 os 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, é possível criar um filtro de rótulo adicional para visualizar os resultados de um ou mais registros de fluxo.

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

  • Label definido como On. Esse campo diferencia maiúsculas de minúsculas.
  • Operator definido como ~=. Isso usa uma correspondência 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:

Filtro de rótulo por nome do fluxo

Referências