https://github.com/v1tbrah/practicum-metrics
🎓Learning project. Implements service that store and process runtime metrics.
https://github.com/v1tbrah/practicum-metrics
golang metrics postgres resty
Last synced: about 2 months ago
JSON representation
🎓Learning project. Implements service that store and process runtime metrics.
- Host: GitHub
- URL: https://github.com/v1tbrah/practicum-metrics
- Owner: v1tbrah
- Created: 2022-07-03T12:42:02.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-15T18:54:48.000Z (over 2 years ago)
- Last Synced: 2025-03-17T19:44:28.115Z (2 months ago)
- Topics: golang, metrics, postgres, resty
- Language: Go
- Homepage:
- Size: 221 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Структура проекта
```
├── cmd
│ ├── agent Точка запуска агента
│ └── server Точка запуска сервера
│
├── internal
│ ├── agent
│ │ ├── config Конфиг агента
│ │ ├── memory Функциональность работы с метриками агента: создание, обновление, считывание
│ │ └── service Функционал агента
│ │ ├── interfaces.go Интерфейсы, которыми пользуется агент
│ │ ├── mocks Mock'и интерфейсов (используются для тестов)
│ │ ├── request.go Реализация http-запросов
│ │ ├── request_test.go Юнит-тесты http-запросов
│ │ └── service.go Реализация создания, запуска агента
│ └── server
│ ├── api
│ │ ├── api.go Реализация API сервера
│ │ ├── compress.go Middleware'ы архивации/деархивации тел запросов/ответов
│ │ ├── errors.go Возможные ошибки
│ │ ├── handlerMetric.go Обработчики чтения, обновления метрик
│ │ ├── handlerMetricPathParams.go Обработчики чтения, обновления метрик (тело запроса в URL)
│ │ ├── handlerMetric_test.go Юнит-тесты http-запросов
│ │ ├── handlerPage.go Обработчик открытия стартовой страницы
│ │ ├── handlerPing.go Обработчик-пинг хранилища данных
│ │ ├── interfaces.go Интерфейсы, которыми пользуется API
│ │ ├── mocks Mock'и интерфейсов (используются для тестов)
│ │ ├── page.go Внутренняя реализации чтения стартовой страницы
│ ├── config Конфиг сервера
│ ├── model Модели работы со списком метрик
│ ├── service Слой приложения
│ └── storage Слой хранилища
│ ├── interfaces.go Интерфейсы, которыми пользуется хранилище
│ ├── memory in-memory хранилище
│ ├── pg postgres хранилище
│ └── storage.go Конструктор хранилища и определение интерфейса хранилища
├── pkg
│ └── metric Реализация единицы метрики
```# Блок-схема работы агента
```mermaid
graph TD;
A[Agent start] -->|goroutine upd additional metrics| C{upd}
A[Agent start] -->|goroutine upd basic metrics| B{upd}
A[Agent start] -->|goroutine report metrics| D{report}C -->|repeat| C
C -->|shutdown| ENDB -->|repeat| B
B -->|shutdown| ENDD -->|repeat| D
D -->|shutdown| END
```# Блок-схема работы сервера
```mermaid
flowchart TB
SERVER[Server]subgraph API
Handlers --> HCRUD([CRUD metrics])
Handlers --> HPAGE([page])
Handlers --> HPING([ping db conn])
endsubgraph SERVICE
SCRUD([CRUD metrics])
SHUTDOWN(Shutdown)
endSERVER --> API
API <--> SERVICE
SERVICE <--> STORAGE[(Storage)]
```# Обновление шаблона
Чтобы получать обновления автотестов и других частей шаблона, выполните следующую команду:
```
git remote add -m main template https://github.com/yandex-praktikum/go-musthave-devops-tpl.git
```Для обновления кода автотестов выполните команду:
```
git fetch template && git checkout template/main .github
```Затем добавьте полученные изменения в свой репозиторий.