Анализ проблем PHP
Допустим, мы можем взять лог php и в качестве метрики выводить на дашборд его ошибки, сравнивая их с нагрузкой на железо, либо с использованием пулов самого php. Попробуем раскрыть эту идею подробнее на примере nginx + php.
В подобных проектах для nginx желательно использовать плагин VTS. Он позволяет снимать расширенные метрики работы nginx, такие как время ответа и коды ошибок для каждого апстрима.
Для php-fpm есть прекрасный php-fpm exporter, который позволяет снимать обширный пул метрик с php. Из них наиболее полезные в диагностике проблем — это использование пулов, времени ответа, средняя общая утилизация и текущее количество дочерних процессов.
Комбинируя необходимые метрики в виде графиков, можно создать ряд дашбордов, в частности, можно вывести на один дашборд:
— показания самой машины (процессора, памяти, сети)
— показания необходимых апстримов веб-сервера (количество запросов, код ответа)
— показания php-fpm (количество запросов, использование пулов, времени ответа)
С таким дашбордом сразу будет понятно, с каким апстримом возникли проблемы и почему. Если это был всплеск трафика и сайт не справился с нагрузкой, мы увидим повышение сетевой активности на графиках, увеличение количества запросов и уменьшение количества свободных пулов php-fpm. Если повышения сетевого трафика нет, но есть повышение нагрузки на процессор, то на графиках php-fpm будет видно возросшее время ответа, что говорит об однотипных долгих запросах в php, которые приводят к исчерпанию доступных подключений в пулах.
В моей практике был проект, когда мы долго и мучительно искали источник проблемы, а по факту им оказались как раз ошибки php, непокрытого мониторингом. Будь у нас тогда под рукой подобный дашборд, потратили бы гораздо меньше времени.