Eu administro vários (~20) sites em um Dreamhost VPS. Ultimamente, maximizei minha alocação de memória para o VPS e quero encontrar o problema.
Eu gostaria de ter um script SSH que verificasse todos os arquivos de log de todos os domínios e me mostrasse qual objeto (imagem, script php etc.) recebe muitas chamadas.
Ele contará as chamadas em cada /logs/*/http/access.log, fará uma classificação decrescente e mostrará as 10 principais em todos os domínios.
Mas não sei como fazer isso.
Isso pode ser feito?
Alguém pode sugerir um script que faça isso?
Responder1
A parte em que você solicitou um script para "... contar as chamadas em cada /logs/*/http/access.log, fazer uma classificação decrescente e mostrar-me os 10 principais entre domínios". pode ser alcançado com isso:
grep -o " /[^ ]*" /logs/*/http/access.log | sort | uniq -c | sort -rn | head
Mas você pode obter as mesmas informações do AWStats ou do Google Analytics. Na verdade, é apenas uma lista de todos os URLs agregados e classificados pelo número de vezes que cada um foi acessado.
Esse mesmo padrão de comandos Unix pode ser usado para agregar seus erros de PHP e erros de Apache, que podem ser mais úteis em sua situação específica. Por exemplo o seguinte:
grep -o " PHP.*" /logs/*/php/error.log | sort | uniq -c | sort -rn | head
Encontrará todos os erros de PHP em seu log de erros de php (adivinhei onde você poderia mantê-los) e listará os 10 mais frequentes.
Outro útil é:
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 os seus erros de falta de memória e os agrupará.
Responder2
Em vez de adotar essa abordagem, recomendo que você configure um servidor de registro centralizado. Você tem várias opções para fazer isso, desde o antigo armazenamento baseado em arquivo até as ferramentas de análise mais baseadas na Web que armazenam os logs em um banco de dados e permitem pesquisá-los, criar tabelas/gráficos, etc.
Aqui está um link para um excelente whitepaper da Cisco Systems que ajudará:
Construindo soluções escalonáveis de gerenciamento de syslog
Responder3
Em vez desta solução manual complicada, recomendo que você use uma ferramenta comoSplunkServidor.
Splunk é na verdade uma análise de log incrível, na qual você pode analisar logs da maneira que desejar, até mesmo com alertas.
O Splunk coleta, indexa e aproveita os enormes volumes de dados valiosos de máquinas gerados pela sua complexa infraestrutura de TI, seja ela física, virtual ou na nuvem.