Guías

Crea un mapa de calor a partir de registros de direcciones IP sin procesar

Un registro de accesos lleno de direcciones IP esconde información geográfica real, pero solo cuando cada dirección se ha resuelto en coordenadas que una herramienta de mapas pueda representar.

Extraer las direcciones del registro

Extrae primero las direcciones IP únicas de tu archivo de registro, en lugar de consultar cada línea del registro por separado, ya que la misma dirección de visitante suele aparecer muchas veces a lo largo de una sesión y no hay motivo para pagar por la misma consulta repetidamente.

sort logfile.txt | awk '{print $1}' | sort -u > unique_ips.txt

Resolver en bloque

Envía la lista de direcciones únicas como un array POST en bloque a /v1/ip.

POST /v1/ip
Content-Type: application/json

["203.0.113.10", "198.51.100.25", "192.0.2.44"]
{
  "status": "ok",
  "results": [
    {"ip": "203.0.113.10", "version": 4, "found": true, "country": "Germany", "country_code": "DE", "region": "Berlin", "city": "Berlin", "postcode": "10115", "lat": 52.5300, "lon": 13.3800, "timezone": "Europe/Berlin", "asn": 1111, "org": "Example ISP"},
    {"ip": "198.51.100.25", "version": 4, "found": true, "country": "Spain", "country_code": "ES", "region": "Madrid", "city": "Madrid", "postcode": "28001", "lat": 40.4168, "lon": -3.7038, "timezone": "Europe/Madrid", "asn": 2222, "org": "Example Networks"},
    {"ip": "192.0.2.44", "version": 4, "found": false}
  ]
}

Crear el conjunto de datos del mapa de calor

Empareja cada lat y lon devueltos con el número de apariciones de esa dirección original en tu registro, de modo que un visitante que aparece cien veces en el registro aporte proporcionalmente más peso que uno que aparece una sola vez. Pasa la lista resultante de puntos de coordenadas ponderados a la herramienta de mapas o gráficos que uses para generar el mapa de calor.

Un segundo ejemplo: un desglose por países

Si un mapa de calor preciso punto por punto es más detalle del que necesitas, agrupar por country_code en lugar de por coordenadas sin procesar produce una vista más sencilla de tipo coroplético, una cifra por país en lugar de una nube dispersa de puntos. Usa exactamente la misma consulta en bloque, solo que agrupada de otra forma una vez que llegan los resultados, así que construir ambas vistas a partir de los mismos datos resueltos no cuesta nada extra.

Gestionar las direcciones que no se resuelven

Una entrada con found: false, como el tercer resultado de arriba, simplemente debe excluirse del mapa de calor en lugar de representarse en una ubicación por defecto, ya que incluirla agruparía de forma engañosa el tráfico no resuelto en algún punto del mapa que no tiene nada que ver con su procedencia real.

Un error habitual que debes evitar

No te saltes el filtrado del tráfico que claramente no procede de visitantes, como las comprobaciones de estado internas o los servicios de monitorización que acceden constantemente a tu servidor desde una dirección fija, antes de crear la lista de direcciones únicas. Un servicio de monitorización que consulta cada minuto puede acumular un número desproporcionado de líneas en el registro que no tiene nada que ver con la geografía real de los visitantes, y aunque la eliminación de duplicados ya lo limita a un solo punto resuelto, ese punto puede seguir dominando visualmente el mapa de calor de forma desproporcionada respecto a cualquier patrón de tráfico real que represente.

Un caso límite: tráfico de hosting y centros de datos

El campo org de una dirección resuelta suele revelar cuándo el tráfico procede de un centro de datos o de un rango de hosting en la nube en lugar de una conexión residencial o móvil, lo que es una señal razonable para filtrar el tráfico de bots o scrapers antes de que distorsione un mapa de calor que pretende representar las ubicaciones reales de los visitantes.

Lo que cuesta

Resolver las direcciones únicas en lugar de cada línea del registro es lo que mantiene esto asequible, ya que el coste es una solicitud por dirección única, no una por línea del registro. Un registro con un millón de líneas pero solo unos pocos miles de direcciones de visitantes únicas cuesta unos pocos miles de solicitudes, no un millón, algo perfectamente asumible con crédito prepago o con un paquete Unlimited para un sitio grande, y a menudo dentro de la cuota gratuita para uno más pequeño. Vigilar la cabecera X-Quota-Used durante un trabajo por lotes grande es una forma sencilla de confirmar que el uso va según lo previsto antes de que termine el trabajo.

Eliminar duplicados antes de resolver es la palanca más importante para mantener asequible un mapa de calor basado en registros. La documentación de consulta de IPv4 describe por completo el formato de solicitud en bloque.