вторник, 25 марта 2008 г.

Мониторинг состояния системы

Откуда вы обычно узнаете что ваша система не работает? От разгневаных клиентов? Или от неменее разгневаного руководства?

А как вы узнаете о причине неполадки? Используя собственный опыт и знание системы? Или долго и продолжительно изучаете логи, выискиваете ошибку, определяете причины?

А может не стоит дожидаться когда пользователь наткнется на отказ системы? Может этот процесс можно автоматизировать?
Только представьте, некоторая служба, регулярно проверяющая работоспособность системы(или нескольких систем). Она отслеживает работоспособность основных элементов системы (база, подключение, доступность, основной функционал), автоматически исправляет некоторые ошибки, и выдает подробный удобочитаемый сводный отчет о состоянии системы в целом и ее элементов.

И так, что требуется от службы мониторинга:

  1. Иметь базовый набор тестовых методов для проверки базового функционала системы(здесь очень пригодятся автоматические тесты, написанные на этапе разработки или тестирования)
  2. Уметь запускать мониторинг состояния системы в определенное время, проверять базовый функционал, логи и т.д.
  3. Уметь формировать сводный отчет и отправлять его ответственному(администратору или разработчику)
  4. Уметь устранять некоторые неисправности(например, перезапускать веб-сервер)
Недостатки такой системы:
  1. Жестко связана с обследуемой системой.
  2. Низкая гибкость, малая универсальность. Для каждой новой функциональности нужно писать свой метод для его мониторинга.
  3. Большие накладные расходы на полный мониторинг(трафик, время, загрузка сервера).
Для устранения этих недостатков можно
  1. Использовать автоматические тесты, созданные на этапе разработки или тестирования.
  2. Проводить мониторинг эпизодически (по требованию) для устранения неполадок.
Однако, разработка такой системы в большинстве случаев не оправдывает себя. Слишком большие накладные расходы на создание и поддержку системы. Однако, идея может быть реализована в сети как предоставляемый платный сервис, тогда решится проблема с разработкой своей системы, нужно будет лишь написать функционал(если его нет в стандартной, предоставляемой сервисом) для мониторинга специфической логики.

Комментариев нет: