Мы пытаемся настроить мониторинг (zabbix) для веб-приложений, которые возвращают белую страницу смерти. Приложения основаны на PHP.
Насколько мне известно, белый экран смерти может быть вызван рядом проблем, проблемами с памятью, синтаксическими ошибками и т. д.
Поэтому я хочу спросить, лучше ли полагаться на то, что веб-сервер вернет код 50x, или может быть (каким-то образом) возможность получить код возврата 200, но при этом отображаемая страница будет пустой (белой)?
решение1
Лучшей и общепринятой практикой является использование кодов состояния HTTP. Если PHP сталкивается с критическими ошибками, он должен завершить работу с соответствующим кодом ошибки HTTP.
Критическая ошибка с кодом статуса HTTP 200 является фиктивным заявлением и ее следует избегать. Даже хорошо разработанные страницы 404 должны использовать код ошибки HTTP 404 и ничего больше.
Используя коды ошибок HTTP вы можете:
используйте существующие онлайн и локальные инструменты мониторинга для мониторинга ваших веб-сайтов и приложений
разрешить браузерам реагировать в соответствии с данной ошибкой
сообщите Google и другим поисковым системам, что на вашем сайте произошла ошибка, а не появился новый контент
настройте Nginx для отображения корректного HTML и сохранения кода ошибки, если ваш PHP завершает работу с фатальной ошибкой
...
решение2
Если вы хотите правильно отслеживать работу веб-сайта, вам следует определить строку или строки, которые появляются в вашем веб-контенте, и поручить вашему монитору проверить наличие этих строк в HTTP-ответе.
Если вы используете веб-приложение, которое собирает и обрабатывает данные форм, вам следует создать интерактивный монитор, который обрабатывает формы и подтверждает, что форма возвращает правильный результат. Это можно сделать разными способами. В прошлом я интегрировал Jmeter с Nagios, чтобы сделать это, но вы также можете использовать онлайн-сервисы, такие как Pingdom.
Полагаться на коды статуса HTTP, по моему мнению, не очень хорошая практика. Ошибка базы данных в PHP все еще может возвращать код статуса HTTP 200. Аналогично, сайт, который был дефейсом, может возвращать код статуса 200.