Monitoramento de aplicações PHP: de métricas básicas à criação de perfis avançada
O monitoramento de aplicações PHP não é apenas "ver se o site caiu". É um processo abrangente de coleta, análise e visualização de dados sobre o funcionamento do código, servidor e banco de dados. Para o portal educacional pythonlib.ru (focado em PHP), reunimos as principais ferramentas e metodologias que ajudarão você a manter o controle do seu projeto.
Por que monitorar PHP?
- Detecção de gargalos: consultas lentas ao banco de dados, loops longos, algoritmos não otimizados.
- Prevenção de falhas: erros fatais, estouro de limites de memória, falta de espaço em disco.
- Análise da experiência do usuário: tempo de carregamento de páginas, número de requisições por segundo (RPS), taxa de erros.
- Segurança: padrões suspeitos de requisições, ataques de injeção.
Principais ferramentas de monitoramento PHP
1. Xdebug — o clássico da criação de perfis
Xdebug é uma extensão para PHP que fornece rastreamento de pilha, criação de perfis e depuração. Para monitoramento, use o modo de criação de perfis (profiler_enable_trigger).
Exemplo de configuração do php.ini:
zend_extension=xdebug.soxdebug.mode=profilexdebug.output_dir=/tmp/xdebugxdebug.profiler_output_name=cachegrind.out.%pO resultado são arquivos cachegrind.out, que podem ser analisados com KCachegrind ou Webgrind.
2. Pinba — monitoramento em tempo real
Pinba (PHP Is Not A Bottleneck Anymore) é um coletor de métricas leve que funciona como um módulo PHP e um servidor em C. Ele envia dados sobre tempo de execução, memória, número de requisições e erros para o MySQL.
Exemplo de uso no código:
// Configuração do timerpinba_timer_start('my_script');
// Seu código$data = heavyCalculation();
// Parada do timer e envio de dadospinba_timer_stop('my_script');
// Marcadores adicionaispinba_script_name_set('api/v1/users');pinba_hostname_set('web-01');Os dados são automaticamente inseridos nas tabelas do Pinba, de onde podem ser visualizados no Grafana.
3. Tideways — criador de perfis comercial
Tideways (anteriormente XHProf) é uma extensão para PHP que permite criar perfis de ambientes de produção com sobrecarga mínima. Ele coleta:
- Tempo de execução de cada função.
- Número de chamadas.
- Consumo de memória.
Instalação via Composer:
composer require tideways/php-xhprof-extensionIniciando a criação de perfil:
$profiler = new Tideways\\Profiler();$profiler->start();
// Seu código$result = expensiveOperation();
$profiler->stop();$data = $profiler->getCallgraph(); // dados para visualizaçãoLogging de erros: a base do monitoramento
Sem um logging de qualidade, o monitoramento é inútil. Use bibliotecas compatíveis com PSR-3, como Monolog.
Exemplo de configuração do Monolog para enviar erros críticos para o Telegram:
use Monolog\\Logger;use Monolog\\Handler\\TelegramBotHandler;
$logger = new Logger('app');$handler = new TelegramBotHandler( 'YOUR_BOT_TOKEN', 'YOUR_CHAT_ID', Logger::CRITICAL);$logger->pushHandler($handler);
try { // código perigoso} catch (\\Throwable $e) { $logger->critical('Erro no módulo de pagamento', [ 'exception' => $e, 'user_id' => $userId, 'ip' => $_SERVER['REMOTE_ADDR'] ]);}Métricas para monitorar
Aqui está um conjunto mínimo de métricas para qualquer aplicação PHP:
- Tempo de resposta (Response Time) — média, percentis 95 e 99.
- Número de requ