У нас есть веб-сервер, на который мы собираемся запустить много приложений. Они все совместно используют базу данных и memcached серверы, но каждое приложение имеет свою собственную базу данных MySQL и все memcached ключи на приложение, снабжается префиксом.
Возможный сценарий:
Если memcached сервер в нашем кластере идет бум, мы хотим, чтобы кто-то (действующий системный администратор) автоматически связался уведомлением о нажатии электронной почты/iPhone или любым другим соответствующим способом.
Если мы, мы собираемся установить 150 идентичных приложений для наших клиентов на наших серверах и memcached сервере, умрем - то все 150 приложений индивидуально узнают это и свяжутся с нашим системным администратором, который несомненно собирается думать о получении нового задания, где он не собирается, разбужены путем получения 150 сообщений, отправленных 4:15 утром.
Возможное решение:
Одна идея состоит в том, чтобы настроить внешний сервер для обработки ошибок, которая получает $ _POST или ВИХРЕВОЙ запрос, отправленный, и обрабатывает устройство хранения данных сообщения об ошибке в зависимости от серьезности фактического сообщения об ошибке. Это, конечно, проверило бы после приема ошибочного вызова, что, если бы о том же memcached сервере уже сообщили как офлайн, не было бы никакой потребности массово разослать системного администратора с дополнительными напоминаниями...
Вопросы:
Спасибо!
Вы можете рассмотреть возможность использования инфраструктуры мониторинга с открытым исходным кодом, такой как Hyperic , чтобы вам не пришлось изобретать велосипед.
Hyperic может контролировать многие аспекты вашей системы из коробки, и довольно легко подключить новые точки мониторинга. Он предоставляет предупреждения на основе правил, и вы можете настроить, какие типы предупреждений будут однократными до сброса, а не один раз каждый раз, когда это происходит.
Я не использовал его для мониторинга приложения PHP (хотя предполагаю, что он может), но очень успешно использовал его для мониторинга приложения Java и связанной с ним базы данных MySQL.
Что ж, думаю, вашу проблему лучше всего решить вне приложения.
Вы хотите отслеживать физические и программные серверы / службы. Я бы порекомендовал что-то вроде http://www.nagios.org/ или http://www.opennms.org/ . Настройте его для наблюдения за каждым сервером memcached, сервером mysql, apache и т. Д. И отправкой уведомлений об изменении состояния (отключение, нехватка ресурсов, восстановление и т. Д.)