TP1 para 7574 - Distribuidos I.
Referirse a informe/informe.pdf
.
El proyecto fue empaquetado con poetry para manejar dependencias cómodamente. Puede seguir la guía de instalación para instalar la herramienta.
Teniendo poetry
instalado, el siguiente comando creará un nuevo entorno para poder ejecutar el proyecto:
poetry install --no-dev
En el root del proyecto se provee un archivo sample_settings.ini
con los posibles valores de configuración. Sin embargo, el archivo esperado se llama settings.ini
. Por motivos obvios de seguridad, este archivo es ignorado en el sistema de versionado con .gitignore
.
Puede copiar el archivo de prueba provisto, renombrarlo y modificar los valores según necesidad.
Cada posible configuración se puede sobreescribir con variables de entorno con la nomenclatura<Seccion>_<Clave>
. Por ejemplo SERVER_HOST
.
Revisar el mensaje de ayuda del servidor:
poetry run metrics_server --help
Revisar el mensaje de ayuda del cliente:
poetry run metrics_client --help
Para ver el mensaje de ayuda de cada uno de los subcomandos:
poetry run metrics_client <command> --help
Desde la carpeta docker
, ejecutar:
docker-compose up --build
El anterior comando crea un contenedor que ejecuta el servidor, dos contenedores que ejecutan un cliente que envía métricas y un contenedor que monitorea las notificaciones.
Para probar distintos escenarios, se provee un archivo Makefile
con comandos para ejecutar los siguientes escenarios durante la demo:
Para cada escenario:
make docker-compose-scenario<nro>
make docker-compose-scenario<nro>-down
Recordar ver stats de cada container con docker stats
.
En este escenario:
- Se envía una métrica
foo
durante 120 segundos, 2 veces por segundo - Se envía una métrica
bar
durante 120 segundos, 2 veces por segundo - Se monitorea la métrica
foo
por un promedio mayor a 10 en un período de 15 segundo- Debería suceder alrededor del segundo 15
- Se monitorea la métrica
bar
por un valor máximo mayor a 10 en un período de 15 segundo- Debería suceder alrededor del segundo 15
En este escenario:
- Se envía una métrica
foo
durante 20 segundos, 5 veces por segundo - Se hace una query para la métrica
foo
sin intervalo agregando cada 0 segundos, por máximo- Debería devolver una lista con los valores de 1 a 100
En este escenario:
- Se envía una métrica
foo
durante 20 segundos, 5 veces por segundo - Se hace una query para la métrica
bar
sin intervalo agregando cada 0 segundos, por máximo- Debería registrar que no existe la métrica
bar
- Debería registrar que no existe la métrica
En este escenario:
- Se envía una métrica
foo
durante 60 segundos, con crecimiento lineal de cantidad de métricas por segundo, arrancando en 1 y finalizando en 150 - Se envía una métrica
bar
durante 60 segundos, con crecimiento lineal de cantidad de métricas por segundo, arrancando en 1 y finalizando en 150 - Se monitora la métrica
foo
agregando por count mayor a 100 en un período de 1 segundo