2023-03-24 23:08:06 +00:00
|
|
|
|
# httpgauge
|
|
|
|
|
|
|
|
|
|
Напишите middleware, считающий метрики числа запросов. Обычно, метрики измеряют
|
|
|
|
|
с помощью библиотеки [prometheus](https://github.com/prometheus/client_golang).
|
|
|
|
|
|
|
|
|
|
Но мы будем писать упрошённую версию, которая будет хранить метрики в `map[string]int`.
|
|
|
|
|
|
|
|
|
|
Ключём в такой `map` можно было бы сделать `Path` запроса, но это не очень хорошее решение.
|
|
|
|
|
В пути часто встречаются изменяемые параметры. Например `/user/0`, `/user/1`, etc. В этом случае,
|
|
|
|
|
мы не хотим отдельно измерять, что пришло 5 запросов к `/user/0` и 10 запросов к `/user/1`.
|
2023-03-26 08:57:22 +00:00
|
|
|
|
Для мониторинга за сервером нам нужно знать, что пришло 15 запросов к пути `/user/{userID}`.
|
2023-03-24 23:08:06 +00:00
|
|
|
|
|
|
|
|
|
Чтобы получить такой паттерн (`/user/{userID}`) вместо полного пути, нужно использовать библиотеку-роутер.
|
2023-03-26 08:57:22 +00:00
|
|
|
|
Стандартная библиотека такого не умеет. В этой задаче мы будем использовать библиотеку [chi](https://github.com/go-chi/chi).
|
2023-03-24 23:08:06 +00:00
|
|
|
|
|
2023-03-26 08:57:22 +00:00
|
|
|
|
Как получить такой паттерн из библиотеки `chi` - найдите сами)
|