SELECTSELECT

SELECT

Controla los costos con Snowflake Resource Monitors

By Ian WhitestoneMar 17, 20235 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Los resource monitors son una funcionalidad de Snowflake que ayuda a los clientes a controlar su gasto. En este post te contamos todo lo que necesitas saber para configurarlos y aprovecharlos al máximo en tu cuenta. Para arrancar, veamos por qué conviene usarlos.

¿Para qué sirven los resource monitors de Snowflake?

El modelo de precios por consumo de Snowflake y su facilidad para escalar permiten que los clientes paguen solo por los recursos que usan y, a la vez, crezcan rápido según la demanda. La contraparte es que los costos pueden dispararse de forma inesperada si no se monitorean ni existen los controles adecuados. Los resource monitors te ayudan a monitorear y controlar costos enviando notificaciones al alcanzar ciertos umbrales de gasto. También se pueden configurar para evitar una renovación anticipada del contrato, conteniendo el consumo inesperado de créditos.

¿Qué hacen los resource monitors de Snowflake?

Los resource monitors permiten definir un límite de créditos de Snowflake para un recurso y un periodo determinados. Por ejemplo, se le puede asignar a un warehouse o a un grupo de warehouses un límite diario de 50 créditos. Cuando se alcanza el porcentaje definido de ese límite dentro del periodo, los resource monitors pueden disparar distintas acciones. Las tres acciones posibles son:

  1. Notificar al usuario por correo electrónico
  2. Suspender el o los warehouses una vez que terminen de ejecutarse todas las consultas en curso
  3. Suspender de inmediato el o los warehouses y abortar cualquier consulta en ejecución

Además de los warehouses, los resource monitors se pueden configurar para toda una cuenta.

La siguiente captura muestra un ejemplo de notificación por correo enviada por un resource monitor.

Notificación por correo de un resource monitor de Snowflake

¿Cómo se crea un resource monitor en Snowflake?

Los resource monitors se pueden crear desde la interfaz de Snowflake o de forma programática con SQL. Veamos cada enfoque.

Crear un resource monitor en la interfaz

Para crear un nuevo resource monitor desde la interfaz de Snowflake, ve a Admin > Resource Monitors. Al hacer clic en el botón "+ Resource Monitor" de la esquina superior derecha, se te pedirá completar los siguientes datos:

Crear un resource monitor en Snowflake

  1. Nombre: Puedes ponerle el que quieras, pero recuerda que no se permiten espacios
  2. Credit Quota: La cantidad de créditos que quieres asignar al monitor
  3. Tipo de monitor: Puede ser "Account" o "Warehouse". Si eliges "Account", la cuota de créditos aplica a toda la cuenta. Si eliges "Warehouse", la cuota aplica solo a los warehouses que especifiques.
  • Warehouse(s): Si elegiste "Warehouse" como tipo de monitor, se te pedirá seleccionar uno o más warehouses para asociarlos al monitor.
  1. Schedule: Aquí se configura la hora de inicio y (opcionalmente) la hora de fin durante las que opera el resource monitor. También se puede definir la frecuencia con la que el monitor reinicia el conteo de créditos. Las opciones disponibles son: diaria, mensual, anual o nunca.
  2. Acciones: Se debe configurar al menos una acción para poder crear el monitor.

Crear un resource monitor con SQL

A continuación se muestra un ejemplo de comando para crear un resource monitor con SQL:

1create or replace resource monitor compute_warehouse_monitor with credit_quota=5 frequency=daily start_timestamp=immediately triggers on 75 percent do notify on 100 percent do suspend on 110 percent do suspend_immediate ;

Para asignar el monitor al warehouse COMPUTE, ejecuta lo siguiente:

alter warehouse compute set resource_monitor = compute_warehouse_monitor

La sintaxis completa de este comando está en la documentación de Snowflake.

¿Qué resource monitors te conviene crear?

Considera crear un resource monitor a nivel de cuenta basado en el monto de tu contrato de Snowflake. Esto te ayuda a no agotar el presupuesto del contrato antes de lo previsto.

Por ejemplo, si el saldo restante del contrato de Snowflake es de $240,000 para los próximos 6 meses, podrías configurar un resource monitor mensual a nivel de cuenta con una cuota de 16,000 créditos (asumiendo un precio de $2.5 por crédito). Podrías optar por recibir una notificación por correo si el uso de créditos de la cuenta supera el 100% de esa cuota.

Otra recomendación es crear un resource monitor que te avise sobre picos en el uso de créditos. Para lograrlo, puedes configurar un resource monitor que envíe una alerta cada vez que el gasto diario supere 1.5x el promedio diario. Te recomendamos ajustar este multiplicador según sea necesario para no recibir alertas con demasiada frecuencia.

No alt text provided

¿Cómo se visualizan los resource monitors?

Los resource monitors se pueden visualizar en la interfaz de Snowflake en Admin -> Resource Monitors:

No alt text provided

También puedes ejecutar show resource monitors como sentencia SQL:

No alt text provided

¿Quién puede crear o acceder a los resource monitors?

Los resource monitors solo pueden crearlos los administradores de la cuenta. Una vez creado un resource monitor, se les puede otorgar a los roles acceso para ver o modificar el monitor. El acceso se otorga de forma individual a cada resource monitor.

Cualquier usuario de Snowflake puede recibir notificaciones por correo de los resource monitors. Esto se configura con SQL, definiendo el parámetro NOTIFY USERS en el resource monitor. Para más detalles, consulta la documentación de Snowflake.

¿Cuáles son las desventajas de los resource monitors de Snowflake?

Si bien los resource monitors son un excelente punto de partida para controlar el uso de créditos de Snowflake y evitar cargos inesperados, hoy presentan algunas limitaciones.

En primer lugar, solo se pueden configurar a nivel de cuenta o de warehouse. Las funcionalidades serverless, como el clustering automático o las vistas materializadas, también pueden generar cargos repentinos, pero los resource monitors no las contemplan.

Además, solo admiten notificaciones por correo electrónico. La mayoría de los equipos prefiere recibirlas directamente en Slack o Teams, junto con el resto de sus alertas y comunicaciones internas.

Por otro lado, como se ve en la captura anterior, los correos de notificación traen muy poca información sobre qué provocó que se superara la cuota de créditos. Entonces, los usuarios tienen que rastrear los datos de uso de la cuenta para averiguar la causa del pico.

Si buscas una experiencia más completa, te recomendamos usar SELECT, que ofrece estas funcionalidades avanzadas listas para usar y con una configuración mínima.

No me llegan correos del resource monitor: cómo solucionarlo

Si no estás recibiendo correos de un resource monitor, puede que las notificaciones no estén habilitadas para el administrador de Snowflake. Consulta esta página con las instrucciones para activarlas.

Ian Whitestone·Co-founder & CEO de SELECT

Ian es Co-founder & CEO de SELECT, una plataforma SaaS para la gestión y optimización de costos de Snowflake. Antes de fundar SELECT, dedicó 6 años a liderar equipos full stack de data science e ingeniería en Shopify y Capital One. En Shopify, encabezó los esfuerzos para optimizar el data warehouse y mejorar la visibilidad de costos.