Мониторинг / обработка ошибок на веб-серверах - PullRequest
5 голосов
/ 23 мая 2010

У нас есть веб-сервер, на котором мы собираемся запустить несколько приложений. Все они будут совместно использовать базу данных и серверы memcached, но у каждого приложения есть своя собственная база данных mySQL, и все ключи memcached для каждого приложения имеют префикс.

Возможный сценарий:

Если сервер memcached в нашем кластере выходит из строя, мы хотим, чтобы кто-то (действующий системный администратор) автоматически связывался с помощью push-уведомлений по электронной почте / iphone или любым другим подходящим способом.

Если мы собираемся установить 150 идентичных приложений для наших клиентов на наших серверах, и сервер memcached умирает - все 150 приложений индивидуально узнают об этом и обратятся к нашему системному администратору, который наверняка подумает о получении новая работа, где он или она не собираются просыпаться, получая 150 сообщений, отправленных в 4:15 утра.

Возможное решение:

Одна из идей состоит в том, чтобы настроить внешний сервер для обработки ошибок, который получает отправленный запрос $ _POST или cURL и обрабатывает хранение сообщения об ошибке в зависимости от серьезности фактического сообщения об ошибке. Конечно, при получении сообщения об ошибке он будет проверять, что, если тот же сервер memcached уже был зарегистрирован как офлайн, не было бы необходимости спамить системного администратора дополнительными напоминаниями ...

Вопросы:

  • Какой хороший подход к обработке ошибок?
  • Как крупные парни в отрасли справляются с этим?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 мая 2010

Вы можете рассмотреть возможность использования инфраструктуры мониторинга с открытым исходным кодом, такой как Hyperic , поэтому вам не нужно заново изобретать колесо.

Hyperic может контролировать многие аспекты вашей системы из коробки, и довольно легко подключить новые точки мониторинга. Он предоставляет оповещения на основе правил, и вы можете настроить, какие типы оповещений будут выполняться только один раз, пока не будут сброшены, и один раз каждый раз, когда это происходит.

Я не использовал его для мониторинга приложения PHP (хотя предполагаю, что он может), но очень успешно использовал его для мониторинга приложения Java и связанной БД MySQL.

2 голосов
/ 23 мая 2010

Ну, я думаю, что ваша проблема лучше всего решается за пределами приложения.

Вы хотите контролировать физические и программные серверы / сервисы. Я бы порекомендовал что-то вроде http://www.nagios.org/ или http://www.opennms.org/. Настройте его так, чтобы он отслеживал каждый сервер memcached, сервер mysql, apache и т. Д., А также отправлял уведомления об изменении состояния (отключение, низкий уровень ресурсов, восстановление и т. Д. )

...