shad-go/firegod/README.md

55 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# firegod
В этой задаче вам нужно научиться пользоваться связкой prometheus+grafana для отладки собственного кода.
Вам дан код сервиса. Нужно добавить в него метрики, и потом используя графану с помощью графиков ответить на ряд вопросов.
В этой задаче нет автоматической проверки. Чтобы получить оценку, нужно закоммитить свои ответы вместе со скриншотами в репозиторий, и поменять значение константы в `Solved` в файле `main.go` на `true`.
## Окружение
В файле `docker-compose.yaml` описан тестовый стенд.
- `prometheus` - контейнер с прометеем, который собирает метрики и выполняет запросы над ними.
- `grafana` - контейнер с графаной, дающий удобный `Web UI` для работы с прометеем.
- `my_service` - 5 реплик вашего сервиса.
Чтобы запустит тестовый стенд, выполните команду `docker compose up --build`. Чтобы перезапустить стенд, остановите `docker compose` нажав `Ctrl+C` и перезапустите команду.
После запуска стенда, проверьте что:
- [targets](http://localhost:9090/targets) показывает правильный список процессов. Один прометей в состоянии `up` и 5 копий вашего сервиса в состоянии `down` с ошибкой `server returned HTTP status 404 Not Found`.
- [grafana](http://localhost:3000/explore) пускает вас в интерфейс с логином `admin` и паролем `grafana`, а на странице Explore видно какие-то метрики (например `up`).
## Сервис
В пакете `dontlook` находится код сервиса. В него смотреть *нельзя*.
Вам нужно дописать код сбора и экспорта метрик в файл `main.go`.
1. Сделайте так, чтобы метрики экспортировались по запросу `GET /metrics`.
2. Включите экспорт метрик go рантайма и процесса (если они уже не экспортируются по дефолту).
3. Добавьте middleware записывающий метрики из http хендлеров.
## Вопросы
1. Сколько процессов каких сервисов подключено к прометею? (пример)
**Ответ**: 1 прометей и 5 моих сервисов.
![](screenshots/up.png)
2. Какой процесс постоянно перезапускается?
3. В каком процесс есть утечка файловых дескрипторов?
4. В каком процессе есть утечка памяти?
5. В каком процессе утекают горутины?
6. Какой хендлер пятисотит больше всех?
7. Сколько всего запросов в секунду приходит в сервис?
8. Какой хендлер медленнее всех отвечает, если сравнивать по 90-ой перцентиле времени ответа?
9. Какой хендлер генерирует больше всего трафика?