Мониторинг производительности — критически важная практика для поддержания стабильной работы PHP-приложений. Рассмотрим комплексный подход к мониторингу.
Основные метрики:
Детальные PHP-метрики:
Пример конфигурации:
; newrelic.ini
newrelic.enabled = true
newrelic.license = "YOUR_LICENSE_KEY"
newrelic.appname = "My PHP App"
newrelic.transaction_tracer.enabled = true
newrelic.transaction_tracer.detail = 1
newrelic.error_collector.enabled = true
Экспортер метрик Nginx:
scrape_configs:
- job_name: 'nginx'
static_configs:
- targets: ['nginx-exporter:9113']
Пример дашборда в Grafana:
Настройка OpenTelemetry для PHP:
$tracerProvider = new TracerProvider();
$spanProcessor = new BatchSpanProcessor(
new OtlpHttpExporter('http://jaeger:4318/v1/traces')
);
$tracerProvider->addSpanProcessor($spanProcessor);
Пример трейса в Jaeger:
Конфигурация для продакшена:
# .blackfire.yaml
probe:
log_level: 3
log_file: /var/log/blackfire.log
sampling: 0.1 # Профилировать 10% запросов
Для Laravel Horizon:
php artisan horizon:metrics
Метрики для Prometheus:
Пример сбора метрик в коде:
$registry = \Prometheus\CollectorRegistry::getDefault();
$counter = $registry->getOrRegisterCounter(
'app',
'user_registrations_total',
'Total user registrations'
);
$counter->inc();
Пример alertmanager.yml:
route:
receiver: 'slack-notifications'
routes:
- match:
severity: 'critical'
receiver: 'sms-notifications'
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#alerts'
send_resolved: true
Многоуровневый мониторинг:
SLO/SLA:
Проактивный мониторинг:
Распределенный трейсинг:
Логирование структурированных логов:
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
$log->error('Something happened', ['context' => $data]);
Эффективный мониторинг PHP-приложений требует комплексного подхода, сочетающего APM-инструменты, метрики инфраструктуры, логирование и трейсинг. Настроенная система мониторинга позволяет быстро выявлять и устранять проблемы, обеспечивая высокую доступность и производительность приложения.