Visualizar objetos de log de fluxo

Um log de fluxo é um resumo do tráfego de rede que é identificado exclusivamente por uma conexão entre duas placas da interface de rede virtual (vNICs), dentro de um determinado espaço de tempo. Um log de fluxo descreve o tráfego que o firewall aceita (grupos de segurança ou ACLs de rede relevantes) ou rejeita, mas não ambos. Ele contém informações do cabeçalho e estatísticas de carga útil.

Os registros de fluxo são gravados periodicamente em IBM Cloud® Object Storage a cada 5 minutos, aproximadamente. Os logs de fluxo são publicados mais frequentemente nos casos nos quais o coletor de log de fluxo atinge fluxos de 100 KB.

Atualmente, os logs de fluxo coletam o tráfego do Protocolo de Controle de Transmissões (TCP) e do User Datagram Protocol (UDP), mas não o tráfego do Internet Control Message Protocol (ICMP).

Cada objeto de log de fluxo contém logs de fluxo individuais. Para visualizar ou analisar os registros de fluxo, use o IBM Analytics Engine. Para obter mais informações, consulte o tutorial Introdução IBM Analytics Engine.

IBM Cloud Data Engine está desatualizado e não é mais compatível. Se você atualmente usa instâncias existentes de Data Engine, é recomendável migrar suas cargas de trabalho para IBM Analytics Engine.

Formato de dados do log de fluxo

Os resumos de tráfego do log de fluxo contêm as informações a seguir:

  • Contagens de byte/pacote, separadamente para RX (recebimento) e TX (transmissão).
  • Se uma conexão é iniciada ou parada no espaço de tempo.

Como um log de fluxo reflete o tráfego de rede em uma janela de tempo limitada, uma conexão de longa execução pode fazer com que diversos logs de fluxo sejam emitidos. Para cada conexão processada por uma vNIC, uma sequência ordenada por tempo de logs de fluxo é emitida (não incluindo falhas). Esses registros de fluxo aparecem em um ou mais objetos Object Storage.

O initiator_ip em um log de fluxo é definido como o source_ip que aparece no primeiro pacote de sua conexão que atingiu a vNIC. No nível de implementação, esse pacote é geralmente aquele que faz com que a nova conexão seja incluída na tabela de conexões. Da mesma forma, o target_ip no log de fluxo é configurado para o campo dest_ip nesse mesmo pacote.

Se a vNIC do inicializador de conexão e a vNIC do destino de conexão ativarem logs de fluxo, o inicializador e o IP de destino e os campos de portas serão idênticos nos logs de fluxo em ambas as vNICs.

Exemplo: Considere um cliente que está enviando uma solicitação HTTP para um servidor web. O log de fluxo para essa solicitação de HTTP na vNIC do lado do cliente tem o endereço IP do cliente como initiator_ip. O log de fluxo correspondente na vNIC do lado do servidor tem o mesmo initiator_ip.

O start_time e o end_time em um log de fluxo refletem:

  • Horário de captura - O horário no qual os elementos do caminho de dados foram consultados por contadores de tráfego.
  • Horário de caminho de dados - O horário conforme mantido no próprio elemento de caminho de dados.

É possível que o log de fluxo não reflita todo o tráfego (por exemplo, no caminho de dados) entre um log de fluxo start_time e end_time. Em outras palavras, pode ser que os pacotes enviados e recebidos pela vNIC no final da janela de captura sejam refletidos somente em um log de fluxo com a janela start_time mais recente.

Os registros de fluxo refletem o tráfego real nas conexões: se não ocorrer tráfego em uma conexão em uma janela de captura, nenhum registro de fluxo aparecerá para ela no objeto “ Object Storage ” (Registro de fluxo) para essa janela. Isso significa que a sequência de registros de fluxo para uma conexão pode ser mapeada para uma sequência de objetos não consecutivos Object Storage.

A matriz de logs de fluxo dentro de um objeto não precisa ser classificada em nenhuma ordem específica.

Tráfego rejeitado:

  • Um log de fluxo específico resume o tráfego rejeitado ou aceito, nunca ambos.
  • A sequência de logs de fluxo para uma conexão pode ter sobreposições de espaço de tempo entre os logs de fluxo aceitos e rejeitados.
  • Pacotes rejeitados que não estão associados a uma conexão existente (por exemplo, um grupo de segurança ou uma ACL de rede nega a iniciação de conexão).
  • Pacotes rejeitados em uma conexão existente (por exemplo, um tráfego que não corresponde à máquina de estado TCP ou uma conexão intermediária mudada pela regra de ACL de rede).
  • Os pacotes rejeitados são gravados em logs de fluxo separados com base em seu estado de entrada ou de saída.

Os fluxos serão identificados como rejeitados se seus pacotes tiverem sido bloqueados por regras de grupo de segurança ou de ACL de rede.

Formato do objeto de log de fluxo

Os registros de fluxo são gravados no bucket Object Storage especificado pelo usuário, seguindo a seguinte convenção de nomenclatura:

ibm_vpc_flowlogs_v1/account={account}/region={region}/vpc-id={vpc-id}/subnet-id={subnet-id}/endpoint-type=vnics/instance-id={vsi-id}/vnic-id={vnic-id}/record-type={all|ingress|egress}/year={xxxx}/month={yy}/day={zz}/hour={hh}/stream-id={stream-id}/{sequence-number}.gz

Em que:

  • {stream-id} é uma sequência de data e hora em formato ISO 8601 yyyymmddThhmmssZ (Hora Universal Coordenada), definida como o horário de criação do primeiro objeto no directory.
  • {sequence-number} é um contador de objetos em execução dentro do fluxo, representado como um campo de oito caracteres, preenchido com zeros (%08d).
  • {all|ingress|egress} mostra o tipo de tráfego que o fluxo inclui.
  • {xxxx} é o ano em formato de quatro dígitos.
  • {yy} é o mês em formato de dois dígitos, com zero à esquerda.
  • {zz} é o dia do mês em um formato de dois dígitos, com zero à esquerda.
  • {hh} é a hora no formato de zero à esquerda (por exemplo, 00-24).

Quaisquer instâncias de caracteres inseguros de URL no caminho são codificadas por URL.

O objeto Object Storage de um log de fluxo contém um único objeto JSON válido. O objeto Object Storage está .gz compactado.

Os campos do cabeçalho do objeto especificados na tabela a seguir são gravados nos metadados do objeto Object Storage.

Campos do cabeçalho do objeto de registros de fluxo (por objeto S do Object Storage )

Campos de cabeçalho do objeto de registros de fluxo (por objeto Object Storage )
Campo Tipo Descrição
version string A versão Semântica.
collector_crn string O nome de recurso em nuvem (CRN) do coletor de log de fluxo.
attached_endpoint_type string Atualmente, o único valor é vnic.
network_interface_id string O ID vnic , já que ele não possui nenhum CRN de vNIC.
instance_crn string O CRN da instância à qual a interface de rede está anexada.
vpc_crn string O CRN da VPC da qual o coletor de log de fluxo é um membro.
capture_start_time string Data e Hora (Hora Universal Coordenada) da RFC 3339
capture_end_time string Data e Hora (Hora Universal Coordenada) da RFC 3339
state string Indica o estado operacional do coletor do log de fluxo. OK significa que os dados estão sendo coletados e enviados sem nenhum erro. skip data indica dados que foram perdidos durante esse intervalo de coleta (por exemplo, por causa da alta taxa de pacotes SYN rejeitados).
number_of_flow_logs uin32 O número de elementos em uma matriz flow_logs. Como esse número é altamente variável, ele é útil como uma referência rápida do número de logs de fluxo contidos em um único objeto Object Storage, sem a necessidade de baixar o objeto primeiro.
flow_logs matriz de objetos JSON Pode ser uma matriz vazia, que indica no traffic.

Campos de log de fluxo

Campos de log de fluxo
Campo Tipo Descrição
start_time string Quando o primeiro byte em um log de fluxo foi capturado e visto no caminho de dados (Data e Hora da RFC 3339 - Hora Universal Coordenada).
end_time string Quando o último byte em um log de fluxo foi capturado e visto no caminho de dados (Data e Hora da RFC 3339 - Hora Universal Coordenada).
connection_start_time string Quando o primeiro byte na conexão de um log de fluxo foi capturado e visto no caminho de dados (RFC 3339 Data e Hora - Hora Universal Coordenada).
direction string Os valores são I para entrada ou O para saída. Se o primeiro pacote na conexão tiver sido recebido pelo vNIC, a direção será I. Se o primeiro pacote tiver sido enviado pelo vNIC, a direção será O.
action string Os valores são accepted (o tráfego resumido por esse fluxo foi aceito) ou rejected (o tráfego foi rejeitado).
initiator_ip string (Endereço IPv4) O IP de origem conforme aparece no primeiro pacote que é processado pela vNIC nessa conexão. Se direction=="outbound", um IP privado associado à vNIC.
target_ip string (Endereço IPv4) O IP de destino conforme aparece no primeiro pacote que é processado pela vNIC nessa conexão. Se direction=="inbound", um IP privado associado à vNIC.
initiator_port uint16 A porta de origem TCP/UDP conforme aparece no primeiro pacote que é processado por esta vNIC nessa conexão.
target_port uint16 A porta de destino TCP/UDP conforme aparece no primeiro pacote que é processado por esta vNIC nessa conexão.
transport_protocol uint8 O número do protocolo Autoridade para Atribuição de Números na Internet (IANA) (TCP ou UDP).
ether_type string Atualmente, IPv4 é o único valor.
was_initiated bool A conexão iniciada nesse log de fluxo.
was_terminated bool A conexão finalizada (por exemplo, timeout/RST/Final-FIN).
bytes_from_initiator uint64 A contagem de bytes na conexão no espaço de tempo desse log de fluxo, do Inicializador para o Destino.
packets_from_initiator uint64 A contagem de pacotes na conexão no espaço de tempo desse log de fluxo, do Inicializador para o Destino.
bytes_from_target uint64 A contagem de bytes na conexão no espaço de tempo desse log de fluxo, do Destino para o Inicializador.
packets_from_target uint64 A contagem de pacotes na conexão no espaço de tempo desse log de fluxo, do Destino para o Inicializador.
cumulative_bytes_from_initiator uint64 A contagem de bytes desde que a conexão foi iniciada, do Inicializador para o Destino.
cumulative_packets_from_initiator uint64 A contagem de pacotes desde que a conexão foi iniciada, do Inicializador para o Destino.
cumulative_bytes_from_target uint64 A contagem de bytes desde que a conexão foi iniciada, do Destino para o Inicializador.
cumulative_packets_from_target uint64 A contagem de pacotes desde que a conexão foi iniciada, do Destino para o Inicializador.

Na maioria dos casos, é possível localizar o campo de direção ao comparar o IP privado da vNIC com os IPs de origem e de destino. No entanto, o campo é conveniente para consultas.

Exemplo de objeto de log de fluxo

    {
        "version": "0.0.1",
        "collector_crn": "crn",
        "attached_endpoint_type": "vnic",
        "network_interface_id": "crn",
        "instance_crn": "crn",
        "vpc_crn": "crn"
        "capture_end_time": "2008-09-15T15:53:00Z",
        "capture_start_time": "2008-09-15T15:00:00Z",
        "state": "ok",
        "number_of_flow_logs" : 1,
        "flow_logs": [
            {
                "start_time": "2008-09-15T15:53:00",
                "end_time": "2008-09-15T15:40:00",
                "direction": "O",
                "action": "accepted",
                "initiator_ip": "1.2.3.4",
                "initiator_port": 20033,
                "target_ip": "5.6.7.8",
                "target_port": 80,
                "transport_protocol": 6,
                "ether_type": "IPv4",
                "was_initiated": true,
                "was_terminated": false,
                "bytes_from_initiator": 12000,
                "packets_from_initiator": 2212,
                "bytes_from_target": 323232,
                "packets_from_target": 3232
                "cumulative_packets_from_initiator": 2212,
                "cumulative_packets_from_target": 3232,
                "cumulative_bytes_from_target": 323232,
                "cumulative_bytes_from_initiator": 12000,
            }
        ],
    }

Visualização de arquivos de log de fluxo gerados a partir do balde Object Storage

Se você usar o plano de preços Lite (gratuito) para IBM Cloud Object Storage, poderá acessar os arquivos de objeto de log de fluxo gerados diretamente do bucket Object Storage para verificar se os arquivos foram criados com êxito e se os objetos estão sendo gerados.

Para visualizar arquivos de log de fluxo gerados a partir do balde Object Storage, siga estas etapas:

  1. Para assegurar que os logs de fluxo estejam sendo capturados, verifique o depósito Object Storage.

  2. Navegue na pasta para encontrar o seu VPC ou o recurso onde você configurou o monitoramento.

  3. Drill-down no recurso para encontrar o recurso de rede que você está monitorando.

    Se configurado corretamente, você deverá ver vários arquivos gzip para cada entrada de log.

Para garantir que os dados estejam sendo capturados, faça o download de um dos arquivos para visualizar seu conteúdo e garantir que o tráfego esteja sendo capturado.