Categorygithub.com/Stern-Ritter/metrics-and-alerting-service
module
0.0.0-20240811132321-117025e1dd22
Repository: https://github.com/stern-ritter/metrics-and-alerting-service.git
Documentation: pkg.go.dev

# README

Сервис сбора метрик и алертинга

Описание проекта

Сервис сбора метрик и алертинга — Сервер для сбора runtime метрик, который собирает репорты от агентов по протоколу HTTP.

Функциональность

  1. Разработан сервер для сбора рантайм-метрик, который будет собирать репорты от агентов по протоколу HTTP.
  2. Разработан агент (HTTP-клиент) для сбора рантайм-метрик и их последующей отправки на сервер по протоколу HTTP.
  3. Сервер переписан с использованием chi. Агент переписан с использованием gentleman.
  4. Доработаны сервер и агент, чтобы они могли изменять свои параметры запуска по умолчанию через флаги и переменные окружения.
  5. Реализовано логирование сведений о запросах и ответах на сервере через middleware.
  6. Добавлена поддержка gzip в код сервера и агента через middleware.
  7. Доработан код сервера, чтобы он мог с заданной периодичностью сохранять текущие значения метрик на диск в указанный файл, а на старте — опционально загружать сохранённые ранее значения. При штатном завершении сервера все накопленные данные сохраняются.
  8. Переписан сервер для сбора метрик таким образом, чтобы СУБД PostgreSQL стала основным хранилищем метрик вместо реализации с файлом.
  9. Добавлена обработка retriable-ошибок, например: ошибки связи с сервером при отправке запроса, ошибки чтения данных из сети или БД из-за проблем соединения, ошибки доступа к файлу, который был заблокирован другим процессом.
  10. Реализован механизм подписи передаваемых данных по алгоритму SHA256. Для этого подсчитывается hash от всего тела запроса и размещается в HTTP-заголовке HashSHA256.
  11. Перепланирована архитектура агента таким образом, чтобы сбор метрик (опрос runtime) и их отправка осуществлялись в разных горутинах с использованием паттерна worker pool, при этом количество одновременно исходящих запросов на сервер ограничено.
  12. Добавлены бенчмарки, измеряющие скорость выполнения компонентов сервиса, выполнен анализ использования памяти проектом, используя профилировщик pprof, проведен рефакторинг и оптимизация кода.
  13. Добавлена 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