Для прохождения разных заданий в курсах ААА студентам должна быть выдана виртульная машина в облаке. На этой виртуальной машине уже должен быть установлены
- git
- docker
- docker-compose
- должен быть доступ с машины к github
- должны быть открыты порты 3000, 8080, 8089, 8000 и др
- есть место на жестком диске в виртуальной машине. Проверьте командой
df -h
и почистите ненужное, при необходимости.
Данная инструкция предполагает, что окружение виртуальной машины полностью настроено, все команды выполняются в настроенном окружении.
Если, вдруг, ваша машина настроена не полностью, обращайтесь в ММ за помощью.
Склонируйте репозиторий и перейдите в папку проекта, в директорию grafana-practice
git clone https://github.com/avito-tech/aaa-ml-sys-design.git
cd aaa-ml-sys-design/grafana-practice/
Мы будем запускать все сервисы как docker-контейнеры. Grafana складывает внутреннюю информацию на диск. Чтобы при рестарте контейнера не потерять эту информацию, нужно создать volume для графаны.
docker volume create --name=grafana-volume
Чтобы развернуть демонстрационный стенд Grafana, выполните.
docker-compose up -d
Команда развернет
- http://your_machine_ip:3000 - web ui графаны
- http://your_machine_ip:8080 - web ui графита. Так будут расшарено много портов для взаимодействия с графитом
- http://your_machine_ip:8000 - сервис с ML моделью. Модель предсказывает пол по имени. Поиграться и побросать запросы в него можно со странички http://your_machine_ip:8000/docs
- http://your_machine_ip:8089 - web ui locust'а - инструмента, для нагрузочного тестирования.
Принципиальная схема взаимодействия контейнеров изображена на схеме
Конфигурация поднимаемых контейнеров: docker-compose.yml. Изменять ее в стандартном сценарии не нужно.
docker ps
docker-compose down
На 8000 порту поднят сервис с ML моделью. Модель предсказывает пол по имени.
- your_ip:8000/predict_gender/ - handler (POST request), ручка для вызова сервиса из вне. Формат входа/выхода.
- Допустимые model_type:
lr
,cb
(logreg, catboost) - Поиграться и побросать запросы в него можно со странички http://your_machine_ip:8000/docs - Swagger API
Locust - это инструмент для нагрузочного тестирования.
http://your_machine_ip:8089 - web ui locust'а.
Чтобы подать нагрузку на ml сервис заполните поля следующим образом
- number of users: 10
- Spawn rate: 5
- Host: http://your_machine_ip:8000
- Нажмите
Start swarming
Внести изменения в код сервиса можно в файлике: service.py
Внести изменения в код построения запросов для locust можно в файлике: locustfile.py
Код написан таким образом, что пересобирать docker образы не нужно (если, конечно, вы не добавляете новые библиотеки).
- carbon - сервис, принимающий данные на вход
- whisper - БД для сохранения данных
- graphite-web - http://your_machine_ip:8080/ web ui
- Web UI Grafana: http://your_machine_ip:3000
- Стандартные login/pswd:
admin
/admin
- Навигация по разным страницам происходит через левую панель со значками.
- Добавляем источник данных. Перейдите на страницу
Data sources
->Graphite
- Тип: Graphite
- url: http://your_machine_ip:8080 (важно указать именно ip вашей машины, а не localhost)
- остальное не меняем
- Жмем
Save & Test
. СообщениеCannot read properties of undefined (reading 'get')
- не страшно
- Можно проверить чтение данных из graphite в режиме
Explore
. Накликайте график по CPU Usage у Сarbon в полеSeries
:carbon
->aggregator
->some-uid
->cpuUsage
- Добавляем папку для dashboard'ов: на левой панели кнопка
Dashboards
->+ New folder
- Добавляем первый dashboard:
- на левой панели кнопка
Dashboards
->+ New dashbord
- далее выбираем
Add new panel
- в поле Series можно накликать график по CPU Usage у Сarbon:
carbon
->aggregator
->some-uid
->cpuUsage
- на левой панели кнопка
Дальнейшее ознакомление с интерфейсов оставляю на личное усмотрение. На workshop'е будем продолжать изучать и настраивать grafana и графики.
Для настройки оповещения об алертах в mattermost
- зайдите в раздел Alerting (колокольчик на левой панели). URL: http://your_machine_ip:3000/alerting/list
- перейдите на вкладку "Contact points"
- нажмите кнопку "+ New contact point"
- Заполните поля следующим образом
- Name, произвольное, например Mattermost
- Type: Slack
- Recipient: ваш логин в mm, например, @vspupkin
- Webhook URL возьмите из поста в ММ пост в ММ
- В
Optional Slack settings
заполните Username, например, как "Grafana Alert" - В
Optional Slack settings
можно добавить Icon emoji, например, :harold:
- Почистить volumes можно так:
docker volume prune
- Почистить все объекты:
docker system prune --volumes