# README
Сервис сбора метрик и алертинга
Описание проекта
Сервис сбора метрик и алертинга — Сервер для сбора runtime метрик, который собирает репорты от агентов по протоколу HTTP.
Функциональность
- Разработан сервер для сбора рантайм-метрик, который будет собирать репорты от агентов по протоколу HTTP.
- Разработан агент (HTTP-клиент) для сбора рантайм-метрик и их последующей отправки на сервер по протоколу HTTP.
- Сервер переписан с использованием chi. Агент переписан с использованием gentleman.
- Доработаны сервер и агент, чтобы они могли изменять свои параметры запуска по умолчанию через флаги и переменные окружения.
- Реализовано логирование сведений о запросах и ответах на сервере через middleware.
- Добавлена поддержка gzip в код сервера и агента через middleware.
- Доработан код сервера, чтобы он мог с заданной периодичностью сохранять текущие значения метрик на диск в указанный файл, а на старте — опционально загружать сохранённые ранее значения. При штатном завершении сервера все накопленные данные сохраняются.
- Переписан сервер для сбора метрик таким образом, чтобы СУБД PostgreSQL стала основным хранилищем метрик вместо реализации с файлом.
- Добавлена обработка retriable-ошибок, например: ошибки связи с сервером при отправке запроса, ошибки чтения данных из сети или БД из-за проблем соединения, ошибки доступа к файлу, который был заблокирован другим процессом.
- Реализован механизм подписи передаваемых данных по алгоритму SHA256. Для этого подсчитывается hash от всего тела запроса и размещается в HTTP-заголовке HashSHA256.
- Перепланирована архитектура агента таким образом, чтобы сбор метрик (опрос runtime) и их отправка осуществлялись в разных горутинах с использованием паттерна worker pool, при этом количество одновременно исходящих запросов на сервер ограничено.
- Добавлены бенчмарки, измеряющие скорость выполнения компонентов сервиса, выполнен анализ использования памяти проектом, используя профилировщик pprof, проведен рефакторинг и оптимизация кода.
- Добавлена godoc документация к основным экспортированным методам и переменным (хендлерам, публичным структурам и интерфейсам).
Использованные технологии
- Go,
- Rest Api,
- Middleware,
- Compress,
- Hash,
- Crypto,
- PostgreSQL,
- Goose,
- Unit tests,
- Pprof,
- Godock,
- OpenAPI.
Запуск проекта
В папке проекта в терминале необходимо выполнить команды:
Сборка сервера и агента:
make build
Запуск базы данных в docker:
make run-db
Запуск сервера:
make run-server
Запуск агента:
make run-agent
# Packages
No description provided by the author
No description provided by the author
Package mocks is a generated GoMock package.
No description provided by the author