Monitoramento de aplicações PHP: métricas e alertas de A a Z

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Monitoramento de aplicações PHP: métricas e alertas de A a Z

\n\n

No desenvolvimento web moderno, a estabilidade e o desempenho de uma aplicação não são apenas um desejo, mas um requisito crítico. O PHP, apesar de sua maturidade, exige atenção cuidadosa ao monitoramento. Sem ele, você corre o risco de descobrir a queda do site pelos usuários, e não pelo sistema de alerta. Neste artigo, vamos analisar como construir um sistema completo de monitoramento de aplicações PHP: desde a coleta de métricas-chave até a configuração de alertas que salvarão seu projeto de paralisações.

\n\n

Por que monitorar o PHP? Métricas-chave

\n\n

O monitoramento permite responder a três perguntas principais: "A aplicação está funcionando?", "Quão rápido ela está funcionando?" e "Algo anormal está acontecendo?". Para aplicações PHP, os seguintes grupos de métricas são criticamente importantes:

\n\n
    \n
  • Métricas de disponibilidade (Uptime): Verificar se o servidor web e o PHP-FPM respondem às requisições. A maneira mais simples é um endpoint de health check.
  • \n
  • Métricas de desempenho: Tempo de execução da requisição (Response Time), capacidade de processamento (Requests per Second), tempo de operação do banco de dados e APIs externas.
  • \n
  • Métricas de recursos: Consumo de memória (Memory Usage), carga da CPU, número de processos ativos do PHP-FPM.
  • \n
  • Métricas de erros: Número de erros HTTP (5xx, 4xx), exceções (Exceptions), erros fatais e warnings.
  • \n
  • Métricas de negócio: Velocidade de finalização do pedido, número de registros — tudo que é importante para o seu negócio.
  • \n
\n\n

Essas métricas podem ser coletadas de diferentes maneiras: desde o simples registro em arquivo de log até o uso de sistemas avançados de observabilidade, como Prometheus + Grafana ou soluções comerciais (Datadog, New Relic).

\n\n

Coleta de métricas: do simples ao complexo

\n\n

Vamos começar com a abordagem básica — criar um health check simples e coletar métricas no formato Prometheus.

\n\n

1. Endpoint de Health Check

\n

Crie um endpoint simples que verifica a conexão com o banco de dados e o cache:

\n\n
<?php\n// health.php\n$checks = [\n    'database' => false,\n    'redis' => false,\n    'status' => 'unhealthy'\n];\n\ntry {\n    new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');\n    $checks['database'] = true;\n} catch (PDOException $e) {\n    // Registra o erro no log\n}\n\nif ($checks['database'] && $checks['redis']) {\n    $checks['status'] = 'healthy';\n    http_response_code(200);\n} else {\n    http_response_code(503);\n}\n\nheader('Content-Type: application/json');\necho json_encode($checks);\n
\n\n

2. Coleta de métricas para Prometheus

\n

Prometheus é um sistema popular de coleta de métricas. Sua aplicação deve fornecer dados no formato /metrics. Exemplo de um exportador simples:

\n\n
<?php\n// metrics.php\nheader('Content-Type: text/plain; version=0.0.4');\n\n$metrics = [];\n\n// Contador de requisições\n$metrics[] = '# HELP http_requests_total Total number of HTTP requests.';\n$metrics[] = '# TYPE http_requests_total counter';\n$metrics[] = 'http_requests_total{method="GET",route="/home"} 1024';\n\n// Histograma do tempo de resposta\n$metrics[] = '# HELP http_request_duration_seconds Request duration in seconds.';\n$metrics[] = '# TYPE http_request_duration_seconds histogram';\n$metrics[] = 'http_request_duration_seconds_bucket{le="0.1"} 500';\n$metrics[] = 'http_request_duration_seconds_bucket{le="0.5"} 800';\n$metrics[] = 'http_request_duration_seconds_bucket{le="+Inf"} 1024';\n\n// Métricas do PHP (memória, tempo)\n$metrics[] = '# HELP php_memory_bytes Current memory usage.';\n$metrics[] = '# TYPE php_memory_bytes gauge';\n$metrics[] = 'php_memory_bytes ' . memory_get_usage(true);\n\necho implode("\\n", $metrics) . "\\n";\n
\n\n

Configuração de alertas: quando e como notificar

\n\n

Métricas sem alertas são apenas números. Os alertas devem ser configurados com base em limites (thresholds). As regras principais:

\n\n<

Blogs

Book Recommendations