Los logs del servidor son como la caja negra de tu web. Registran todo lo que pasa: visitas, errores, ataques, problemas de rendimiento. Saber interpretarlos te permite diagnosticar problemas, detectar amenazas y optimizar tu sitio. En esta guía te enseñamos a leerlos.
¿Qué son los logs del servidor?
Los logs son archivos de texto donde el servidor registra eventos. Los principales tipos son:
- Access logs: Registran cada petición recibida
- Error logs: Registran errores y problemas
- PHP logs: Errores específicos de PHP
- Application logs: Logs de tu aplicación (WordPress, etc.)
Ubicación de los logs
Apache
# Debian/Ubuntu
/var/log/apache2/access.log
/var/log/apache2/error.log
# CentOS/RHEL
/var/log/httpd/access_log
/var/log/httpd/error_log
Nginx
/var/log/nginx/access.log
/var/log/nginx/error.log
PHP
# Ver ubicación configurada
php -i | grep error_log
# Ubicaciones comunes
/var/log/php_errors.log
/var/log/php-fpm/error.log
Hosting compartido
Generalmente en:
/home/usuario/logs/
/home/usuario/public_html/logs/
O accesibles desde el panel de control (cPanel, Plesk).
Anatomía de un access log
Una línea típica de access log:
192.168.1.1 - - [14/Dec/2025:10:25:13 +0000] "GET /productos HTTP/1.1" 200 4523 "https://google.com" "Mozilla/5.0..."
Desglose:
| Parte | Ejemplo | Significado |
|---|---|---|
| IP | 192.168.1.1 | IP del visitante |
| Fecha | [14/Dec/2025:10:25:13] | Cuándo ocurrió |
| Método | GET | Tipo de petición |
| URL | /productos | Página solicitada |
| Código | 200 | Código HTTP |
| Tamaño | 4523 | Bytes enviados |
| Referer | https://google.com | De dónde vino |
| User Agent | Mozilla/5.0... | Navegador/bot |
Anatomía de un error log
[Sun Dec 14 10:30:45.123456 2025] [php:error] [pid 12345] [client 192.168.1.1:54321] PHP Fatal error: Uncaught Error: Class 'NotFound' not found in /var/www/html/index.php:42
Desglose:
- Fecha y hora: Cuándo ocurrió
- Módulo: Qué componente reporta (php, core, etc.)
- Nivel: Severidad (error, warning, notice)
- PID: ID del proceso
- Cliente: IP que causó el error
- Mensaje: Descripción del error
Comandos útiles para analizar logs
Ver logs en tiempo real
# Seguir el log en vivo
tail -f /var/log/nginx/access.log
# Filtrar solo errores
tail -f /var/log/nginx/error.log | grep -i error
Buscar errores específicos
# Buscar errores 500
grep " 500 " /var/log/nginx/access.log
# Buscar errores 404
grep " 404 " /var/log/nginx/access.log
# Errores PHP
grep "Fatal error" /var/log/php_errors.log
IPs más activas
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
Páginas más solicitadas
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
User agents sospechosos
awk -F" '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
Qué buscar en los logs
1. Errores HTTP frecuentes
Busca patrones de errores HTTP:
- Muchos 404: Enlaces rotos o escaneo de vulnerabilidades
- Errores 500: Problemas de código o servidor
- Errores 503: Servidor sobrecargado
2. Intentos de ataque
Señales de ataques:
# Intentos de acceso a wp-login
grep "wp-login" /var/log/nginx/access.log | wc -l
# Intentos de SQL injection
grep -E "union|select|insert|drop" /var/log/nginx/access.log
# Escaneo de archivos sensibles
grep -E ".env|wp-config|.git" /var/log/nginx/access.log
3. Bots problemáticos
Bots que consumen recursos excesivos:
# Ver bots
grep -i "bot" /var/log/nginx/access.log | awk -F" '{print $6}' | sort | uniq -c | sort -rn
4. Errores PHP repetitivos
# Errores más comunes
grep -i "error" /var/log/php_errors.log | sort | uniq -c | sort -rn | head -10
5. Rendimiento lento
Si tienes logging de tiempo de respuesta habilitado:
# Peticiones lentas (> 2 segundos)
awk '$NF > 2' /var/log/nginx/access.log
Configurar logging útil
Nginx - Formato personalizado con tiempo de respuesta
log_format detailed '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time';
access_log /var/log/nginx/access.log detailed;
PHP - Logging detallado
# php.ini
log_errors = On
error_log = /var/log/php_errors.log
error_reporting = E_ALL
Herramientas de análisis de logs
Línea de comandos
- GoAccess: Analizador visual en terminal
- AWStats: Estadísticas completas
Soluciones centralizadas
- ELK Stack: Elasticsearch, Logstash, Kibana
- Grafana Loki: Más ligero que ELK
- Papertrail: SaaS simple
Automatizar el análisis
Crea scripts que te alerten de anomalías:
#!/bin/bash
# check_errors.sh - Ejecutar con cron cada hora
ERRORS_500=$(grep " 500 " /var/log/nginx/access.log | wc -l)
ERRORS_404=$(grep " 404 " /var/log/nginx/access.log | wc -l)
if [ $ERRORS_500 -gt 100 ]; then
echo "Alerta: $ERRORS_500 errores 500 detectados" | mail -s "Alerta de errores" admin@ejemplo.com
fi
Complementa esto con alertas de monitoreo de WatcherWolf para detección en tiempo real.
Rotación de logs
Los logs crecen rápidamente. Configura rotación:
# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
Conclusión
Los logs son una mina de información para diagnosticar problemas, detectar ataques y optimizar tu web. Dedica tiempo a entender qué información tienen y cómo extraerla. Automatiza alertas para los problemas más críticos y revisa periódicamente para detectar tendencias.
Combina el análisis de logs con monitoreo proactivo de uptime y rendimiento para tener visibilidad completa de la salud de tu web.
Complementa con monitoreo de WatcherWolf
¿Listo para monitorear tu web?
Empieza gratis y recibe alertas instantáneas cuando tu sitio tenga problemas.
Crear cuenta gratis