56 lines
3.6 KiB
Markdown
56 lines
3.6 KiB
Markdown
|
# 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. Какой хендлер генерирует больше всего трафика?
|