Введение 4
1. Постановка задачи 6
2. Требования к системе 7
2.1. Функциональные требования 7
2.2. Нефункциональные требования 10
3. Анализ существующих решений 15
4. Архитектура системы и особенности реализации 18
4.1. Источники данных 20
4.2. Обработка данных 21
4.3. Контроллеры 23
4.4. Веб-интерфейс 24
5. Апробация прототипа 27
Заключение 28
Список литературы 29
Мониторинг - это отслеживание ключевых показателей эффективности сервера: загрузки дисков, процессора и других параметров. Он является одним из ключевых инструментов обеспечения бесперебойного функционирования серверов. Мониторинг обычно производится удаленно, причем отслеживается состояние десятков или даже тысяч серверов одновременно. При несоответствии наблюдаемых показателей ожидаемым производится сигнализация о неполадках (например, отправляется письмо по электронной почте системному администратору). Такой способ мониторинга далее будет обозначаться как превентивный. Но в некоторых ситуациях уже известно, что на конкретном сервере имеются неполадки, однако нет информации о том, в чем именно они заключаются. Архивные данные, собранные с помощью превентивного мониторинга, не всегда обладают достаточной полнотой, что приводит к необходимости производить дополнительный мониторинг данного сервера в режиме реального времени. Чаще всего в таких случаях требуется отслеживать расширенный набор показателей для того, чтобы локализовать и устранить проблему.
Существует множество программных решений для осуществления мониторинга серверов, например, Zabbix [21], Nagios [18], Monit [17]. Однако, они чаще всего не отличаются гибкостью и либо являются слишком сложными для использования в целях мониторинга в режиме реального времени, либо не могут быть применены в компаниях с жесткой политикой безопасности из-за нестандартных способов подключения к серверам. Примером такого случая является ситуация, когда подключение к серверу возможно только через определенную внешнюю программу (SSH-клиент для операционной системы Windows с закрытым исходным кодом). В связи с этим при необходимости такого рода мониторинга инженеры компании SAP, которые занимаются поддержкой пользователей по вопросам функционирования серверов, вынуждены применять архаичные методы мониторинга: запуск мониторинговых утилит на сервере через SSH-подключение, с последующим анализированием объемных текстовых журналов (логов), порожденных утилитами, либо экспортирование этих журналов в специальные программы для визуализации. Следует отметить, что такой подход требует больших временных затрат и исполнения большого количества действий для получения понятной и наглядной информации. Поэтому возникает необходимость в разработке системы, которая позволила бы облегчить процесс мониторинга серверов в режиме реального времени и обладала гибкостью, необходимой для функционирования в условиях, когда прямое подключение к серверу невозможно.
В ходе выполнения данной выпускной квалификационной работы были достигнуты следующие результаты.
• Разработаны требования к системе для мониторинга серверов в режиме реального времени.
• Проведен анализ существующих решений в сфере мониторинга серверов.
• Разработана архитектура системы, основанная на принципе модульности.
• Реализован прототип системы, включающий следущие компоненты:
- источники данных для внешнего и встроенного SSH-клиентов;
- контроллеры для графического интерфейса и отправки данных в Систему хранения и анализа журналов;
- утилитные расширения sar и pidstat;
- графический веб-интерфейс.
• Прототип системы был опробован в подразделении компании SAP в Санкт-Петербурге и получил положительные отзывы инженеров.