Que la demanda de tus soluciones de software se dispare debería ser motivo de celebración, ¿no? Y en la mayoría de los casos lo es, pero hay un descuido habitual en el hosting de nube pública que puede frenar en seco a tu empresa, e incluso provocar una caída del servicio: los límites y las cuotas.
Que no te agarre desprevenido cuando más importa
En DoiT International acompañamos a miles de organizaciones en todo el mundo como su socio de confianza en la nube y proveedor de software FinOps. Con decenas de miles de solicitudes de clientes que nuestros cloud architects atienden cada mes, un descuido recurrente que vemos es no anticipar cuándo se van a alcanzar los límites de cuota. Esto suele desembocar en pedidos urgentes de ayuda para acelerar la aprobación del aumento de cuota por parte del proveedor de nube.

Solicitudes de aumento de cuota recibidas de nuestros clientes
Desde hace más de una década nos apasiona innovar y cumplir las verdaderas promesas de la nube: simplicidad, elasticidad y eficiencia. Para ayudar a nuestros clientes con este problema recurrente, sumamos capacidades de monitoreo y alertas de cuotas dentro de nuestra propia plataforma de software multinube, la DoiT Console.

Ejemplo: funcionalidad de monitoreo de cuotas en la DoiT Console para clientes de AWS
Por desgracia, no todas las personas que usan hosting de nube pública son clientes de DoiT (todavía), y por suerte el equipo de Google también detectó este problema y liberó como open source un proyecto llamado "Quota Monitoring Solution (QMS)".
Quota Monitoring Solution open source de Google
Si bien el repositorio de GitHub incluye instrucciones paso a paso, este artículo busca simplificarlas para que puedas ponerla en marcha rápido. Para una explicación más detallada de cada paso, te recomendamos leer la documentación del repositorio.
En menos de veinte minutos, usando comandos de gcloud y terraform en una terminal, puedes tener un dashboard como el de abajo y, después, personalizar las alertas según las necesidades de tu organización.

Dashboard en Looker Studio que muestra el uso de tus cuotas a nivel de organización, carpeta, región o proyecto
Funcionalidades
Fuente: Google
Arquitectura
Fuente: Google
En este artículo te guiaremos por:
- Cómo preparar y configurar tu entorno de QMS
- Cómo instalar QMS con Terraform
- Cómo configurar tu dashboard en Looker Studio
¡Manos a la obra!
Requisitos previos
Poder ejecutar comandos de gcloud en terminal o cloud shell
Aunque podrías configurar el servicio manualmente desde la Cloud Console, fue diseñado para instalarse y configurarse mediante comandos de terminal y shell. Puedes usar tu cliente de terminal preferido o, simplemente, el Cloud Shell integrado en la GCP Console.
Poder ejecutar Terraform
Necesitarás instalar la herramienta de línea de comandos de Terraform en tu equipo o en Cloud Shell. La configuración de la infraestructura en la nube y de las funciones serverless se automatiza con infraestructura como código (IaC).
Poder asignar permisos de roles IAM
Para continuar, necesitarás varios roles de IAM que te permitan crear un proyecto de monitoreo, una cuenta de servicio y asignarle roles a esa cuenta de servicio. Lo recomendable es que tú o alguien de tu equipo con el rol de Organization Administrator verifique que cuentas con los siguientes roles:
- Project Creator
- Service Account Creator
- [ Organization | Folder | Project ] IAM Admin
- Service Account Token Creator
1\. Prepara y configura tu entorno de QMS
Para simplificar la preparación y la configuración, armé un script que se encarga de lo siguiente por ti:
- Crea el proyecto de monitoreo, la cuenta de servicio y el IAM de la cuenta de servicio
- Configura el IAM del destino (organización o carpeta)
- Genera la configuración y las instrucciones de Terraform
Ejecuta el siguiente comando en tu terminal o cloud shell para iniciar la configuración.
Tips
- Solo presiona ENTER para aceptar los [valores por defecto] en cada prompt
- Ten a mano tu billing ID (xxxxxx-xxxxxx-xxxxxx) para copiar y pegar
bash <(curl -L https://bit.ly/gcp-qms-setup)
Puedes ver el código fuente aquí: https://bit.ly/gcp-qms-setup

Ejemplo de los prompts en la terminal al ejecutar el script de instalación
2\. Instala QMS con Terraform
Cuando el script termine la configuración inicial, te pedirá que te autentiques y ejecutes terraform por tu cuenta, así puedes revisar el plan antes de aplicarlo (y reintentar si aparece algún error).

Ejemplo del prompt en la terminal después del script de configuración, con los comandos finales para ejecutar terraform
Comandos de instalación (reemplaza <your-…> por los valores correctos)
PROJECT_ID=<your-project-id>
SA_EMAIL=<your-sa-email-address>
REGION=<your-region>
# configurar gcloud sdk
gcloud config set core/project $PROJECT_ID
# generar token oauth de corta duración
gcloud config set auth/impersonate_service_account $SA_EMAIL
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
# ejecutar terraform (vuelve a correr `terraform plan` y `terraform apply` si hay errores)
cd quota-monitoring-solution/terraform/example
terraform init
terraform plan
terraform apply
# desactivar la suplantación de la cuenta de servicio
gcloud config unset auth/impersonate_service_account
# volver al directorio del proyecto
cd ../../../
# iniciar los jobs de cloud scheduler para empezar a monitorear las cuotas
gcloud scheduler jobs run quota-monitoring-cron-job --location $REGION
gcloud scheduler jobs run quota-monitoring-app-alert-config --location $REGION
3\. Configura tu dashboard en Looker Studio
Una vez que ejecutaste la configuración e instalaste la app con terraform, configura tu dashboard siguiendo los pasos de abajo (el orden importa, lo descubrí en el camino)
Abre la plantilla de Looker Studio
Haz clic en el menú "…" (3 puntos) cerca de la parte superior derecha y elige "Make a copy"

Cuando te pida la fuente de datos, deja la selección por defecto

Ahora deberías ver una copia de la plantilla del dashboard de Looker Studio en otra pestaña del navegador. El siguiente paso es conectarla al dataset que se creó antes en tu proyecto.
Conectar tu dataset
Esta parte me resultó caprichosa y el orden importa, pero si no funciona al primer intento, vuelve a intentarlo.

Aparecerá un panel en la parte inferior con una consulta SQL; tendrás que editarla y reemplazar tu [project ID].[dataset].[table].
A la izquierda se listan los proyectos y puede que el tuyo no aparezca. Intenta buscarlo y, si no se autocompleta con tu proyecto, haz clic en la pestaña "Recent Projects" y selecciona tu proyecto -> dataset -> tabla.

Vuelve a la pestaña de prueba de la consulta y verifica que tu project ID siga en la consulta (y no haya regresado al valor por defecto de la plantilla).

Ejemplo: confirma que tu PROJECT ID aparezca en ambos lugares
Haz clic en el botón "Reconnect" en la esquina superior derecha de ese panel. Cuando te lo pida, confirma el cambio de fuente de datos y presiona "Apply"

¡Felicitaciones!
Deberías ver cómo se cargan los datos en el dashboard. Si no es así, repite los pasos anteriores: puede ponerse "quisquilloso" y normalmente se resuelve con un par de intentos.
Solo haz clic en "Done" para cerrar el panel y, si quieres, en "View" para ver tu dashboard.
Configurar el monitoreo y las alertas
La documentación de Google describe personalizaciones y configuraciones opcionales que puedes aplicar a las alertas.
Listo: ahora puedes mantenerte al tanto y detectar posibles problemas de cuotas antes de que deriven en una caída del servicio.