Привет! Сегодня я хочу рассказать о том, как я взял готовый код сервера Фибоначчи на языке Golang с метриками и переделал его, чтобы увеличивать количество запросов в middleware Metrics. Чтобы начать, я открыл код сервера и нашел функцию `Metrics`, которая отвечает за увеличение счетчика запросов. Вместо того, чтобы увеличивать этот счетчик в каждом обработчике, я решил создать отдельный middleware, который будет добавлен к обработке всех запросов. Для этого я создал новую функцию `MetricsMiddleware`, которая принимает в качестве аргумента обработчик запроса и возвращает новый обработчик. В этой функции я добавил код, который будет увеличивать счетчик запросов и замерять время выполнения каждого запроса. Далее, я добавил этот middleware для URL ″/». Теперь он будет применяться ко всем запросам, включая обработку корневого URL. Я сделал это, передавая экземпляр функции `MetricsMiddleware` в качестве аргумента функции `http.HandlerFunc`. Таким образом, каждый раз при получении запроса по URL ″/», будет применяться middleware Metrics и будет увеличиваться счетчик запросов. Также я создал новый обработчик для URL ″/metrics». В этом обработчике я возвращаю метрику времени выполнения запросов в формате строки. Я использовал функцию `fmt.Sprintf` для форматирования строки так, чтобы она соответствовала требуемому формату. И каждый раз при получении запроса по URL ″/metrics», будет возвращаться текущая метрика времени выполнения запросов.
Теперь я могу запустить сервер и увидеть результат. Каждый раз, когда я отправляю запрос на сервер по URL ″/», счетчик запросов увеличивается, а метрика времени выполнения обновляется. При запросе по URL ″/metrics», я получаю текущую метрику в формате строки;
В итоге, я получил возможность отслеживать количество запросов и время их выполнения с помощью middleware Metrics и обработчика ″/metrics». Это очень удобно для мониторинга и анализа производительности сервера.
Я надеюсь, что мой опыт будет полезен тем, кто работает с серверами на языке Golang и хочет добавить метрики в свой код. Это действительно помогает в анализе производительности и улучшении работы сервера.