¿Cómo puedo analizar los registros de flujo de VPC personalizados mediante CloudWatch Logs Insights?
He configurado registros de flujo de VPC personalizados. ¿Cómo puedo detectar patrones y tendencias con Amazon CloudWatch Logs Insights?
Descripción breve
Puede utilizar CloudWatch Logs Insights para analizar los registros de flujo de la VPC. CloudWatch Log Insights detecta automáticamente campos en muchos registros proporcionados por Amazon, así como eventos de registro con formato JSON, para facilitar la construcción de consultas y la exploración de registros. CloudWatch Logs Insights detecta automáticamente los registros de flujo de VPC que están en el formato predeterminado.
Sin embargo, los registros de flujo de VPC se implementan en un formato personalizado. Por este motivo, no se detectan automáticamente, por lo que debe modificar las consultas. En este artículo, se ofrecen varios ejemplos de consultas que puede personalizar y ampliar para que coincidan con sus casos de uso.
Se utiliza este formato personalizado de registros de flujo de VPC:
${account-id} ${vpc-id} ${subnet-id} ${interface-id} ${instance-id} ${srcaddr} ${srcport} ${dstaddr} ${dstport} ${protocol} ${packets} ${bytes} ${action} ${log-status} ${start} ${end} ${flow-direction} ${traffic-path} ${tcp-flags} ${pkt-srcaddr} ${pkt-src-aws-service} ${pkt-dstaddr} ${pkt-dst-aws-service} ${region} ${az-id} ${sublocation-type} ${sublocation-id}
Resolución
Recuperar los registros de flujo de VPC más recientes
Dado que CloudWatch Logs Insights no detecta automáticamente los campos de registro, debe usar la palabra clave parse para aislar los campos deseados. En esta consulta, los resultados se ordenan por la hora de inicio del evento del registro de flujo y se limitan a las dos entradas de registro más recientes.
Consulta
#Retrieve latest custom VPC Flow Logs parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id | sort start desc | limit 2
Resultados
account_id | vpc_id | subnet_id | interface_id | instance_id | srcaddr | srcport |
---|---|---|---|---|---|---|
123456789012 | vpc-0b69ce8d04278ddd | subnet-002bdfe1767d0ddb0 | eni-0435cbb62960f230e | - | 172.31.0.104 | 55125 |
123456789012 | vpc-0b69ce8d04278ddd1 | subnet-002bdfe1767d0ddb0 | eni-0435cbb62960f230e | - | 91.240.118.81 | 49422 |
Resumir las transferencias de datos por pares de direcciones IP de origen y destino
A continuación, resuma el tráfico de red por pares de direcciones IP de origen y destino. En este ejemplo, la estadística sum se utiliza para realizar una agregación en el campo bytes. Esto calcula un total acumulado de los datos transferidos entre hosts. Para obtener más contexto, se incluye flow_direction. Los resultados de esta agregación se asignan al campo Data_Transferred, de forma temporal. A continuación, los resultados se ordenan por Data_Transferred en orden descendente y se devuelven los dos pares más grandes.
Consulta
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id | stats sum(bytes) as Data_Transferred by srcaddr, dstaddr, flow_direction | sort by Data_Transferred desc | limit 2
Resultados
srcaddr | dstaddr | flow_direction | Data_Transferred |
---|---|---|---|
172.31.1.247 | 3.230.172.154 | egreso | 346952038 |
172.31.0.46 | 3.230.172.154 | egreso | 343799447 |
Analizar las transferencias de datos por ID de instancia de EC2
Puede utilizar registros de flujo de VPC personalizados para analizar directamente un ID de instancia de Amazon Elastic Compute Cloud (Amazon EC2). Siguiendo la consulta anterior, ahora puede determinar las instancias de EC2 más activas mediante el campo instance_id.
Consulta
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id | stats sum(bytes) as Data_Transferred by instance_id | sort by Data_Transferred desc | limit 5
Resultados
instance_id | Data_Transferred |
---|---|
- | 1443477306 |
i-03205758c9203c979 | 517558754 |
i-0ae33894105aa500c | 324629414 |
i-01506ab9e9e90749d | 198063232 |
i-0724007fef3cb06f3 | 54847643 |
Filtrar por tráfico SSH rechazado
Para comprender mejor el tráfico denegado por el grupo de seguridad y las listas de control de acceso (ACL) de red, filtre los registros de flujo de VPC rechazados. Puede reducir aún más este filtro para incluir el protocolo y el puerto de destino. Para identificar los hosts que se rechazan en el tráfico SSH, extienda el filtro a fin de incluir el protocolo TCP (por ejemplo, el protocolo 6) y el tráfico con un puerto de destino de 22.
Consulta
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id | filter action = "REJECT" and protocol = 6 and dstport = 22 | stats sum(bytes) as SSH_Traffic_Volume by srcaddr | sort by SSH_Traffic_Volume desc | limit 2
Resultados
srcaddr | SSH_Traffic_Volume |
---|---|
23.95.222.129 | 160 |
179.43.167.74 | 80 |
Aislar la secuencia de datos HTTP para un par de origen y destino específico
Para investigar más a fondo las tendencias de sus datos mediante CloudWatch Logs Insights, aísle el tráfico bidireccional entre dos direcciones IP. En esta consulta, ["172.31.1.247","172.31.11.212"] devuelve registros de flujo al utilizar la dirección IP como dirección IP de origen o destino. Para aislar el tráfico HTTP, las instrucciones del filtro hacen coincidir los eventos del registro de flujo de la VPC con el protocolo 6 (TCP) y el puerto 80. Utilice la palabra clave display para devolver un subconjunto de todos los campos disponibles.
Consulta
#HTTP Data Stream for Specific Source/Destination Pair parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id | filter srcaddr in ["172.31.1.247","172.31.11.212"] and dstaddr in ["172.31.1.247","172.31.11.212"] and protocol = 6 and (dstport = 80 or srcport=80) | display interface_id,srcaddr, srcport, dstaddr, dstport, protocol, bytes, action, log_status, start, end, flow_direction, tcp_flags | sort by start desc | limit 2
Resultados
interface_id | srcaddr | srcport | dstaddr | dstport | protocolo | bytes | acción | log_status |
---|---|---|---|---|---|---|---|---|
eni-0b74120275654905e | 172.31.11.212 | 80 | 172.31.1.247 | 29376 | 6 | 5160876 | ACEPTAR | Aceptar |
eni-0b74120275654905e | 172.31.1.247 | 29376 | 172.31.11.212 | 80 | 6 | 97380 | ACEPTAR | Aceptar |
Aislar la secuencia de datos HTTP para un par de origen y destino específico
Puede utilizar CloudWatch Logs Insights para visualizar los resultados como un gráfico circular o de barras. Si los resultados incluyen la función bin(), los resultados de la consulta se devuelven con una marca de tiempo. Esta serie temporal se puede visualizar con un gráfico de líneas o de áreas apiladas.
Sobre la base de la consulta anterior, puede utilizar stats sum(bytes) como Data_Trasferred por bin(1m) para calcular los datos acumulados transferidos en intervalos de un minuto. Para ver esta visualización, cambie entre las tablas Logs (Registros) y Visualization (Visualización) en la consola de CloudWatch Logs Insights.
Consulta
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id | filter srcaddr in ["172.31.1.247","172.31.11.212"] and dstaddr in ["172.31.1.247","172.31.11.212"] and protocol = 6 and (dstport = 80 or srcport=80) | stats sum(bytes) as Data_Transferred by bin(1m)
Resultados
bin(1m) | Data_Transferred |
---|---|
2022-04-01 15:23:00.000 | 17225787 |
2022-04-01 15:21:00.000 | 17724499 |
2022-04-01 15:20:00.000 | 1125500 |
2022-04-01 15:19:00.000 | 101525 |
2022-04-01 15:18:00.000 | 81376 |
Información relacionada
Registros y campos identificados admitidos
Analizar los datos de registro con CloudWatch Logs Insights
Comandos de consulta de CloudWatch Logs Insights
Tutorial: Ejecutar una consulta que genere una visualización de serie temporal

Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año