Administro varios (~20) sitios en un VPS Dreamhost. Últimamente maximizo mi asignación de memoria para el VPS y quiero encontrar el problema.
Me gustaría tener un script SSH que escanee todos los archivos de registro de todos los dominios y me muestre qué objeto (imagen, script php, etc.) recibe muchas llamadas.
Contará las llamadas en cada /logs/*/http/access.log, realizará una clasificación descendente y me mostrará las 10 principales en todos los dominios.
Pero no sé cómo hacer eso.
Se puede hacer?
¿Alguien puede sugerir un guión que haga eso?
Respuesta1
La parte en la que solicitaste un script para "... contar las llamadas en cada /logs/*/http/access.log, hacer una clasificación descendente y mostrarme las 10 principales en todos los dominios". se puede lograr con esto:
grep -o " /[^ ]*" /logs/*/http/access.log | sort | uniq -c | sort -rn | head
Pero puedes obtener la misma información de AWStats o Google Analytics. En realidad, es solo una lista de todas las URL agregadas y ordenadas por la cantidad de veces que se accedió a cada una.
Ese mismo patrón de comandos de Unix se puede utilizar para agregar sus errores de PHP y errores de Apache, lo que podría ser más útil en su situación particular. Por ejemplo lo siguiente:
grep -o " PHP.*" /logs/*/php/error.log | sort | uniq -c | sort -rn | head
Encontrará todos los errores de PHP en su registro de errores de PHP (supuse dónde podría guardarlos) y enumerará los 10 más frecuentes.
Otro útil es:
grep -o " PHP Fatal error: Allowed memory size.*" /logs/*/php/error.log | sed 's/tried to allocate [0-9]* bytes/tried to allocate N bytes/' | sort | uniq -c | sort -rn | head
Que encontrará todos sus errores de falta de memoria y los agrupará.
Respuesta2
En lugar de adoptar ese enfoque, le recomendaría que considere configurar un servidor de registro centralizado. Tiene múltiples opciones para hacerlo, desde el antiguo almacenamiento basado en archivos hasta las herramientas de análisis más basadas en web que almacenan los registros en una base de datos y le permiten buscar entre ellos, crear cuadros/gráficos, etc.
Aquí hay un enlace a un excelente documento técnico de Cisco Systems que le ayudará:
Respuesta3
En lugar de esta complicada solución manual, le recomendaría que utilice una herramienta comoSplunkServidor.
Splunk es en realidad un increíble análisis de registros, en el que puedes analizar los registros de la forma que desees, incluso con alertas.
Splunk recopila, indexa y aprovecha los volúmenes masivos de valiosos datos de las máquinas generados por su compleja infraestructura de TI, ya sea física, virtual o en la nube.