Тип работы:
Предмет:
Язык работы:


Разработка системы мониторинга и анализа производительности серверного ПО

Работа №129150

Тип работы

Бакалаврская работа

Предмет

информатика

Объем работы46
Год сдачи2020
Стоимость4260 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
79
Не подходит работа?

Узнай цену на написание


Введение 4
Постановка задачи 5
Используемые термины 6
Обзор литературы 8
Глава 1.Сбор требований 9
1.1. Анализ существующих решений 9
1.1.1 Prometheus 9
1.1.2 Graphite 11
1.1.3 InfluxDB 12
1.1.4 OpenTSDB 14
1.1.5 Nagios 15
1.1.6 Sensu 16
1.2. Итоги анализа 17
1.3. Выводы 19
Глава 2. Разработка 20
2.1. Архитектура 20
2.2. Модель данных 21
2.3. Технологический стек 22
2.3.1 Monitoring server 22
2.3.2 Database 23
2.3.3 Anomalies detector 25
2.3.4 Agent 25
2.3.5 Client 25
2.4. Реализация 26
2.4.1 Monitoring server 26
2.4.2 Обнаружение аномалий 34
2.4.3 Клиенты 36
2.4.4 Агенты 37
Глава 3. Тестирование 38
3.1. Ручное интеграционное функциональное тестирование . . 38
3.2. Автоматизированное интеграционное функциональное тестирование 41
3.3. Нагрузочное тестирование 42
Глава 4. Заключение 46
Список литературы 47

Информационные технологии всё глубже входят в жизнь современного человека, они используются повсеместно: в образовании, медицине, сфере развлечений, сфере услуг, и т.д.
Благодаря технологическому прорыву, плоды которого человечество особенно активно пожинает в течение нескольких последних десятков лет, сейчас уже практически невозможно представить себе человека, не пользующегося мобильным телефоном или Интернетом.
В Интернете существует множество сайтов и приложений, предлагающих широкий спектр услуг: просмотр образовательных онлайн-курсов, заказ продуктов, прослушивание аудиокниг, и прочее. Большая часть сервисов, предоставляющих эти услуги, работает “в облаке”. Это означает, что для их использования нет необходимости устанавливать на устройство какие-либо приложения помимо веб-браузера, поскольку они работают на серверах - других компьютерах, которые соединены с компьютером пользователя посредством сети Интернет.
С ростом уровня потребления услуг онлайн-сервисов, растёт и нагрузка на них, и, соответственно, инфраструктура, обеспечивающая их работу: закупаются дополнительные серверы, создаются новые сервисы, существующие сервисы дробятся на более мелкие для масштабирования системы и повышения её производительности и отказоустойчивости.
Укрупнение инфраструктуры ведёт к тому, что диагностировать проблемы, возникающие во время работы приложений, становится всё сложнее. В ситуации, когда у компании есть только пять серверов, и на каждом из которых запущено по одному приложению, за этими приложениями возможно следить в ручном режиме. Но когда счёт серверов и приложений идёт на десятки, сотни или даже тысячи, вовремя заметить проблему без автоматизации наблюдения становится невозможным.
От стабильности работы веб-сервисов зависит не только досуг их пользователей: например, приложения, обеспечивающие работу банков или фондовых бирж, вовсе не могут позволить себе долгих перебоев в работе - каждая минута простоя может напрямую или косвенно стоить колоссального количества денег. Таким образом, возможность автоматизированного наблюдения за работоспособностью системы является жизненно необходимой для бизнеса.
Постановка задачи
Целью данной работы является разработка системы мониторинга, предоставляющей функционал для слежения за работоспособностью и производительностью веб-приложений: сбором метрик, отображением собранных данных и оповещением администраторов системы в случае, если приложение работает некорректно. Для этого необходимо решить следующие подзадачи:
1. Ознакомление с существующими решениями подобных задач для вы-деления основных подходов, особенностей каждого решения;
2. Определение требований к разрабатываемой системе;
3. Проектирование архитектуры системы и разработка протокола взаимодействия системы с наблюдаемыми приложениями;
4. Выбор технологического стека;
5. Разработка системы;
6. Тестирование системы.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках выполнения выпускной квалификационной работы была сформулирована задача построения системы мониторинга. Проведён анализ существующих решений в сфере мониторинга, на основе которого были сформулированы основные функциональные требования, к поставленной задаче и учитывающие требования к современным веб-приложениям. Спроектирована архитектура решения и выбран технологический стек, позволяющий эффективно и быстро решить поставленную задачу.
Разработаны все ключевые модули системы. Проведён и описан процесс функционального и нагрузочного тестирования. Нагрузочное тестирование показало результаты, которые можно считать удовлетворительными для современной системы мониторинга.
Разработанная система учитывает преимущества и недостатки существующих решений в сфере мониторинга, и её основными преимуществами являются простота использования, низкая стоимость мониторинга для клиентских приложений, гибкий язык запросов, позволяющий извлекать и агрегировать данные, использование алгоритмов поиска аномалий в данных метрик.
Исходный код компонентов системы доступен по следующим ссылкам:
1. Сервер мониторинга[43];
2. Клиентская библиотека для языка Java[44];
3. Агент[45];
4. Сервис обнаружения аномалий[46].



[1] Определение мониторинга.
https://en.wikipedia.org/wiki/Website_monitoring
[2] Славек Лигус, Effective Monitoring and Alerting: For Web Operations, 2012
[3] Майк Джулиан, Practical Monitoring: Effective Strategies for the Real World, 2017
[4] В.П. Шкодырев, К.И. Ягафаров, В.А. Баштовенко, Е.Э. Ильина, Обзор методов обнаружения аномалий в потоках данных, 2017
[5] А.А. Пивень, Ю.И. Скорин, Тестирование программного обеспечения, 2012
[6] Р.А. Нагаев, И.С. Полевщиков, Автоматизация процесса тестирования программного обеспечения с применением Junit, 2016
[7] Документация collectd. https://collectd.org/documentation.shtml
[8] Описание формата Whisper.
https://graphite.readthedocs.io/en/latest/whisper.html
[9] Документация InfluxDB. https://docs.influxdata.com/influxdb
[10] LSM-дерево.
https://ru.wikipedia.org/wiki/LSM-
%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE
[11] TSM-дерево.
https://docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/
[12] Документация OpenTSDB. http://opentsdb.net/docs/build/html/
[13] Описание TCollector.
http://opentsdb.net/docs/build/html/user_guide/utilities/tcollector.html
[14] Описание time series daemon. http://opentsdb.net/overview.html
[15] Документация Hadoop. https://hadoop.apache.org/docs/stable/
[16] Документация HBase. https://hbase.apache.org/book.html
[17] Документация Nagios. https://www.nagios.org/documentation/
[18] Документация RabbitMQ.
https://www.rabbitmq.com/documentation.html
[19] Документация Redis. https://redis.io/documentation
[20] Спецификация протокола UDP. https://tools.ietf.org/html/rfc768
[21] Документация Kotlin. https://kotlinlang.org/
[22] Описание работы JVM.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html
[23] Null-безопасность в Kotlin. https://kotlinlang.org/docs/reference/null- safety.html
[24] Корутины в Kotlin. https://kotlinlang.org/docs/reference/coroutines- overview.html
[25] Документация Spring Framework. https://spring.io/projects/spring- framework
[26] Описание механизма Dependency injection.
https://en.wikipedia.org/wiki/Dependency_injection
[27] Документация Cassandra. https://cassandra.apache.org/
[28] NoSQL базы данных. https://en.wikipedia.org/wiki/NoSQL
[29] Принципы ACID. https://en.wikipedia.org/wiki/ACID
[30] Формат данных в Cassandra.
https://cassandra.apache.org/doc/latest/data_modeling/intro.html
[31] Документация Flask. https://flask.palletsprojects.eom/en/1.1.x/
[32] Формат данных JSON. https://www.json.org/json-en.html
[33] Unix Timestamp. https://tools.ietf.org/html/rfc3339
[34] Типы данных в Cassandra.
https://cassandra.apache.org/doc/latest/cql/types.html
[35] Модель Холта-Уинтерса.
https://upcommons.upc.edu/bitstream/handle/2117/120562/LOAD
%20FORECASTING%20USING%20HOLT-WINTERS%20METHOD.pdf
[36] https://github.com/linkedin/luminol. Библиотека luminol.
[37] Определение веб-браузера.
https://en.wikipedia.org/wiki/Web_browser
[38] Документация cURL. https://curl.haxx.se/docs/
[39] Документация netcat. http://netcat.sourceforge.net/
[40] Документация Jmeter. https://jmeter.apache.org/
[41] CPU. https://en.wikipedia.org/wiki/Central_processing_unit
[42] SSD. https://en.wikipedia.org/wiki/Solid-state_drive
[43] Репозиторий, содержащий исходный код сервера мониторинга. https://github.com/purrfessor/monitoring
[44] Репозиторий, содержащий исходный код клиентской библиотеки для языка Java. https://github.com/purrfessor/monitoring-client
[45] Репозиторий, содержащий исходный код агента мониторинга. https://github.com/purrfessor/monitoring-agent
[46] Репозиторий, содержащий исходный код сервиса обнаружения аномалий. https://github.com/purrfessor/anomalies-detector


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ