Información general

La nueva integración de Snowflake reemplaza la integración de Snowflake basada en el Agent de Datadog y ofrece funciones adicionales. Después de configurar la nueva integración de Snowflake, se recomienda desinstalar la integración de Snowflake basada en el Agent para reducir el volumen de llamadas a la API para Snowflake.

Puede resultar difícil monitorizar y optimizar eficazmente la infraestructura y la recuperación de datos de Snowflake. Surgen problemas que pueden derivar en una utilización ineficiente de los recursos, mayores costes y una experiencia del cliente degradada.

Con la integración Snowflake de Datadog, puedes detectar consultas de larga duración para mejorar el rendimiento y reducir los costes, identificar amenazas de seguridad en tiempo real y monitorizar tus cargas de trabajo de Snowpark.

Después de analizar los datos de Snowflake, Datadog completa el dashboard de información general listo para usar con información sobre todos los recursos recopilados. También ofrece monitores recomendados para ayudarte a comenzar a generar alertas sobre ejecuciones fallidas de Snowpark o una cantidad anormal de intentos de inicio de sesión.

Nota: Las métricas se recopilan mediante consultas a Snowflake. Las consultas realizadas mediante la integración de Datadog se facturan a través de Snowflake.

Configuración

Instalación

No se requiere ningún paso de instalación.

Configuración

Nota: Las cuentas de Snowflake conectadas a través de PrivateLink no son compatibles actualmente con la integración Snowflake. Se recomienda la integración del Snowflake original con el Agent para configuraciones de PrivateLink.

Conecta tu cuenta de Snowflake

  1. Busca la URL de tu cuenta de Snowflake.

Menú de la cuenta con la opción de copiar URL de la cuenta seleccionada en la interfaz de Snowflake

  1. En el cuadro de la integración de Snowflake, ingresa la URL de la cuenta de Snowflake en el campo URL de la cuenta.

  2. En la pestaña Recopilación de recursos, activa los recursos que quieres recopilar:

Métricas de uso de cuentas y organizaciones

En la siguiente tabla se describen los tipos de métricas recopiladas y sus prefijos de métricas asociados.

TipoDescripciónPrefijos de métricas recopilados
Uso de la cuentaUso de almacenamiento, consumo de crédito y métricas de consulta a nivel de cuenta.
Recopilados por hora.
snowflake.auto_recluster
snowflake.billing
snowflake.data_transfer
snowflake.logins
snowflake.pipe
snowflake.query
snowflake.replication
snowflake.storage
snowflake.storage.database
snowflake.storage.table
Uso de la organizaciónConsumo de crédito, historial de transferencia de datos y métricas de presupuesto a nivel de organización.
Recopilados por día.
snowflake.organization

Estas métricas pueden recopilarse en uno de dos periodos:

  • Últimas 24 horas: Recopila las métricas agregadas por las últimas 24 horas. Ejemplo: 1-01-25 04:00:00 a 1-02-25 04:00:00.
  • Día actual: Recopila las métricas agregadas por el día actual. Ejemplo: 1-02-25 00:00:00 a 1-02-25 04:00:00.
Logs

La siguiente tabla describe los tipos de logs recopilados y qué tablas de Snowflake están incluidas.

TipoDescripciónTablas necesarias
Historial de consultasHistorial de ejecuciones de consultas. Los logs del historial de consultas se pueden enriquecer con logs del historial de acceso para brindar más información sobre cómo se utilizan los datos a través de las consultas y su linaje.SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
SeguridadUtiliza estos logs con Cloud SIEM para detectar y responder mejor a las amenazas de seguridad en tu entorno.SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
SNOWFLAKE.ACCOUNT_USAGE.SESSIONS
SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_USERS
SNOWFLAKE.ACCOUNT_USAGE.DATA_TRANSFER_HISTORY
SNOWFLAKE.ACCOUNT_USAGE.STAGES
Tabla de eventosDatos de mensajes y eventos generados por tus funciones y procedimientos. Requiere privilegios GRANT adicionales.Tu tabla de eventos personalizada

Estos logs pueden recopilarse en varios periodos en función del caso de uso. Pueden configurarse en el cuadro de la integración Snowflake.

Cloud Cost Management

Activa Cloud Cost Management para recibir las métricas de costes de Snowflake agregadas desde la tabla SNOWFLAKE.ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY. Puedes utilizar estas métricas con Cloud Cost Management para obtener información adicional sobre tus costes y tu uso.

  1. Crea un rol y un usuario específicos de Datadog para monitorizar Snowflake. Ejecuta la serie de comandos que se indican a continuación en tu entorno de Snowflake para crear un usuario al que Datadog pueda acceder.

Configuración de almacén recomendada

  • Crea un almacén XS con un tiempo de suspensión automática de 30 segundos.
  • Opcionalmente, utilizar un almacén XS existente que suela estar activo a lo largo del día puede ser la opción más rentable. Nota: Las consultas realizadas desde esta integración pueden afectar potencialmente al rendimiento de un almacén existente. No se recomienda ejecutar la integración en un almacén donde el rendimiento de las consultas es crítica.
-- Crea un nuevo rol destinado a monitorizar el uso de Snowflake. El nombre del rol es personalizable.
create role DATADOG;

-- Concede privilegios en la base de datos SNOWFLAKE al nuevo rol.
grant imported privileges on database SNOWFLAKE to role DATADOG;

-- Concede el uso de tu almacén predeterminado al rol DATADOG.
grant usage on warehouse <WAREHOUSE> to role DATADOG;

-- Concede las siguientes vistas ACCOUNT_USAGE al nuevo rol. Haz esto si deseas recopilar logs y métricas de uso de la cuenta de Snowflake.
grant database role SNOWFLAKE.OBJECT_VIEWER to role DATADOG;
grant database role SNOWFLAKE.USAGE_VIEWER to role DATADOG;
grant database role SNOWFLAKE.GOVERNANCE_VIEWER to role DATADOG;
grant database role SNOWFLAKE.SECURITY_VIEWER to role DATADOG;

-- Concede ORGANIZATION_USAGE_VIEWER al nuevo rol. Haz esto si deseas recopilar métricas de uso de la organización de Snowflake.
grant database role SNOWFLAKE.ORGANIZATION_USAGE_VIEWER to role DATADOG;

-- Concede ORGANIZATION_BILLING_VIEWER al nuevo rol. Haz esto si deseas recopilar datos de costes de Snowflake.
grant database role SNOWFLAKE.ORGANIZATION_BILLING_VIEWER to role DATADOG;

-- Conceder uso en la base de datos, esquema y tabla de la tabla del evento.
conceder uso en la base de datos <EVENT_TABLE_DATABASE> al rol de Datadog;
conceder uso en el esquema <EVENT_TABLE_DATABASE>.<EVENT_TABLE_SCHEMA> al rol de Datadog;
conceder selección en la tabla <EVENT_TABLE_DATABASE>.<EVENT_TABLE_SCHEMA>.<EVENT_TABLE_NAME> al rol de Datadog;
conceder rol de aplicación SNOWFLAKE.EVENTS_VIEWER al rol de DATADOG;
conceder rol de aplicación SNOWFLAKE.EVENTS_ADMIN al rol de DATADOG;

-- Concede el uso de la base de datos, del esquema y de la tabla de tus tablas para la recopilación de métricas de tus consultas personalizadas.
grant usage on database <CUSTOM_QUERY_DATABASE> to role DATADOG;
grant usage on schema <CUSTOM_QUERY_DATABASE>.<CUSTOM_QUERY_SCHEMA> to role DATADOG;
grant select on table <CUSTOM_QUERY_DATABASE>.<CUSTOM_QUERY_SCHEMA>.<CUSTOM_QUERY_TABLE> to role DATADOG;

-- Crea un usuario.
create user <USERNAME>
LOGIN_NAME = <USERNAME>
password = '<PASSWORD>'
default_warehouse =<WAREHOUSE>
default_role = DATADOG;

-- Concede el rol de monitor al usuario.
grant role DATADOG to user <USERNAME>
  1. Configura la autenticación por par de claves. La clave pública se asigna al usuario creado anteriormente y la clave privada se carga en Datadog, lo que permite que Datadog se conecte a tu cuenta de Snowflake. a. Crea y carga una clave privada siguiendo las instrucciones de Snowflake. Actualmente, Datadog solo admite claves privadas sin cifrar. b. Crea una clave pública siguiendo las instrucciones de Snowflake. c. Asigna la clave pública al usuario creado anteriormente siguiendo las instrucciones de Snowflake.
Ciertos prefijos de direcciones IP deben estar en la lista de permitidos para que Datadog recopile datos de tu cuenta de Snowflake. La lista de prefijos de IP que pertenecen a Datadog se puede encontrar en la página de rangos IP y el rango permitido se puede encontrar en Webhooks.

Métricas personalizadas

La integración Snowflake admite consultas personalizadas para recopilar métricas personalizadas. Los usuarios pueden escribir consultas SQL personalizadas para extraer datos específicos y verlos como métricas y etiquetas (tags) de métricas en Datadog. Las consultas con varias líneas deben tener cada consulta en su propia línea.

Por defecto, la integración se conecta a la base de datos compartida SNOWFLAKE y al esquema ACCOUNT_USAGE. Si estás consultando una tabla fuera del esquema ACCOUNT_USAGE, asegúrate de que tu rol configurado tenga los permisos apropiados para acceder a la tabla.

La tabla siguiente describe los campos utilizados para definir métricas personalizadas.

CampoDescripciónObligatorio
Custom Metric IdentifierSe trata de un identificador para la métrica personalizada, que se utiliza para vincular diferentes métricas personalizadas a sus respectivas consultas personalizadas en cada cuenta.
ConsultaEsta es la consulta SQL que se debe ejecutar. Puede ser una sentencia simple o un script de varias líneas. Se evalúan todas las filas de los resultados.
Columnas de metadatosSe trata de una lista que representa cada columna ordenada secuencialmente de izquierda a derecha. Hay dos campos obligatorios para cada columna:
- Nombre de columna personalizado:
este es el sufijo que se añade a metric_prefix para formar el nombre completo de la métrica. Por ejemplo, my_custom_metric.count da como resultado el nombre completo de la métrica snowflake.my_custom_metric.count. Si el tipo se especifica como Tag Key, la columna se aplica como una etiqueta a cada métrica recopilada por esta consulta.
- Tipo de metadatos:
este es el método de envío (por ejemplo, gauge, recuento o tasa). También se puede establecer para etiquetar cada métrica de la fila con el nombre y el valor (<NAME>:<ROW_VALUE>) del elemento de esta columna.

Notas:

  • Al menos un elemento en las columnas definidas debe ser un tipo de métrica (gauge, count, tasa, distribución).
  • El número de elementos en las columnas debe ser igual a la cantidad de columnas devueltas en la consulta.
  • El orden en que se definen los elementos en las columnas debe ser el mismo orden en que se devuelven en la consulta.

Ejemplo:

Pestaña Métricas personalizadas en el cuadro de la integración Snowflake

Validación

Para verificar el resultado, busca las métricas utilizando el resumen de métricas:

Métricas de Snowflake en la página Resumen de métricas

Tablas de referencia

Las tablas de referencia te permiten enriquecer y unir automáticamente tu telemetría con campos adicionales de tus tablas de Snowflake. Al asignar campos de valor a una clave primaria, puedes añadir automáticamente estos campos a logs o eventos que contengan esa clave.

Activar la ingesta de tablas de referencia

  1. Ve a tu espacio de trabajo de Snowflake.

  2. Identifica el nombre de la tabla de Snowflake que se utilizará en Datadog.

  3. Concede a Datadog permisos de lectura de la tabla ejecutando el siguiente comando en tu espacio de trabajo.

    GRANT USAGE ON DATABASE <REFERENCE_TABLE_DATABASE> TO ROLE DATADOG;
    GRANT USAGE ON SCHEMA <REFERENCE_TABLE_DATABASE>.<REFERENCE_TABLE_SCHEMA> TO ROLE DATADOG;
    GRANT SELECT ON TABLE <REFERENCE_TABLE_DATABASE>.<REFERENCE_TABLE_SCHEMA>.<REFERENCE_TABLE_NAME> TO ROLE DATADOG;
    
    • Si te encuentras con el error Insufficient Privileges (Privilegios insuficientes), ponte en contacto con el administrador de Snowflake de tu organización para que te conceda estos permisos. Datadog no podrá ingerir tu tabla de Snowflake en tablas de referencia sin los permisos anteriores concedidos en tu tabla de Snowflake.
  4. Copia el nombre de la tabla y la clave principal para utilizarlos en la configuración de la tabla de referencia en el paso 6.

  5. En Datadog, ve al cuadro de Snowflake y haz clic en la pestaña Tablas de referencia de la cuenta de la que quieres ingerir tablas. Si no tienes ninguna cuenta configurada, sigue las instrucciones de la sección Configuración.

  6. Haz clic en el botón Add New Reference Table (Añadir nueva tabla de referencia). Cuando se abra el formulario, rellena los siguientes campos:

  • Nombre de la tabla de Datadog, para identificar la tabla en el producto Tablas de referencia de Datadog. El nombre de tu tabla de Datadog debe contener caracteres y guiones bajos para separar varias palabras (por ejemplo, my_reference_table). Asegúrate de que el nombre de tu tabla de referencia de Datadog es único en tu organización.
  • Nombre de la tabla de Snowflake que quieres ingerir, copiada del paso 4.
  • Clave primaria de la tabla de Snowflake copiada del paso 4.
  1. Haz clic en Save (Guardar).
  2. Puedes esperar ver datos de servicio rellenados en Datadog, varios minutos después de las ejecuciones programadas de tus consultas. Cualquier error de ingesta se notificará mediante eventos visibles en tu Explorador de eventos, buscando source:snowflake.
  3. Ve a Tablas de referencia y busca la tabla que acabas de crear, utilizando el nombre de la tabla de Datadog.
  4. Revisa el estado de tu tabla de Snowflake que se encuentra en la sección Archivo. Si aparece algún error, resuélvelo en Snowflake.

Prácticas recomendadas para la ingesta de tablas de Snowflake en tablas de referencia de Datadog

Al integrar datos de Snowflake en Datadog, es importante estructurar las tablas de forma eficiente para optimizar el rendimiento y los costes. Esta sección te ofrece recomendaciones sobre cómo preparar tus tablas de Snowflake para la ingesta.

Cómo Datadog ingiere tus datos

Datadog ejecuta la siguiente consulta cada hora en la tabla de Snowflake especificada:

SELECT * FROM your_table;

Dado que esta operación recupera todas las columnas y filas, Datadog recomienda especialmente crear una vista que incluya sólo los campos necesarios requeridos para la monitorización en Datadog. Esto ayuda a reducir la transferencia innecesaria de datos y los costes de procesamiento.

Utilizar una vista para limitar los datos

En lugar de exponer una tabla completa, crea una vista que seleccione sólo las columnas necesarias:

CREATE VIEW my_datadog_view AS
SELECT my_column_1, my_column_2
FROM my_raw_table;

Para obtener más información, consulta la documentación de las vistas de Snowflake.

Consideraciones relativas al rendimiento y los costes

En algunos casos, una vista estándar puede no ser la opción más eficaz, sobre todo si:

  • La consulta es compleja (por ejemplo, implica uniones, agregaciones o subconsultas).
  • El tiempo de ejecución de SELECT * es de varios minutos o más.
  • La frecuencia de ingesta se traduce en elevados costes de computación. Para monitorizar tus costes de Snowflake, te recomendamos utilizar Snowflake Cloud Cost Management.

Para mejorar la eficiencia, considera alternativas como vistas materializadas, tablas dinámicas o tablas precalculadas.

Elegir la estructura de tabla adecuada

OpciónCuándo utilizarloCompensaciones
Vista materializadaLa consulta es costosa desde el punto de vista informático y el rendimiento es crítico.Mejora la velocidad de consulta, pero aumenta los costes de almacenamiento y requiere una lógica de actualización.
Tabla dinámicaLa relevancia de los datos es importante, y se necesitan actualizaciones automáticas.Snowflake gestiona las actualizaciones, pero los costes dependen de la frecuencia de las actualizaciones.
Tabla precalculada (mediante DBT, ETL, etc.).Se requiere un control total sobre las actualizaciones de datos y el rendimiento.Proporciona la máxima eficacia, pero añade complejidad a la gestión de datos.

Utilizar una vista materializada

Una vista materializada precalcula y almacena los resultados de las consultas, lo que agiliza considerablemente la recuperación de datos.

CREATE MATERIALIZED VIEW my_fast_view AS
SELECT important_column_1, important_column_2
FROM my_raw_table;

Las vistas materializadas consumen almacenamiento adicional y deben actualizarse para mantener los datos al día. Puedes encontrar más información en la documentación de las vistas materializadas.

Utilizar una tabla dinámica

Si los datos cambian con frecuencia y las actualizaciones completas son demasiado lentas, una tabla dinámica permite a Snowflake gestionar las actualizaciones incrementales:

CREATE DYNAMIC TABLE my_dynamic_table
TARGET_LAG = '10 MINUTES'
WAREHOUSE = my_warehouse
AS SELECT important_column_1, important_column_2 FROM my_raw_table;

Snowflake gestiona automáticamente las actualizaciones incrementales en función de la configuración de TARGET_LAG. Puedes encontrar más información en la documentación de las tablas dinámicas.

Principales conclusiones

  • Utilizar una vista para restringir los datos enviados a Datadog y optimizar el rendimiento de las consultas.
  • Para consultas lentas, considerar el uso de una vista materializada, tabla dinámica o tabla precalculada para mejorar la eficiencia.
  • Evaluar las compensaciones de costes y rendimiento antes de elegir una estrategia.

Siguiendo estas prácticas recomendadas, puedes garantizar una integración eficiente y rentable entre Snowflake y Datadog. Si necesitas ayuda para determinar la mejor opción para tu organización, ponte en contacto con el servicio de asistencia de Snowflake.

Solucionar problemas en tablas de referencia de Snowflake

  • Los nombres de las tablas de referencia deben ser únicos en Datadog.
  • Datadog no valida los nombres de tablas de Snowflake. Si tu tabla no aparece en Tablas de referencia, asegúrate de haber ingresado correctamente el nombre de la tabla de Snowflake.
  • Si tu tabla sigue sin aparecer, revisa la sección Limitaciones de la documentación de la tabla de referencia para asegurarte de que tu tabla no corresponde a ninguna de esas categorías.
  • En caso de problemas con la ingesta de Datadog, ponte en contacto con el servicio de asistencia de Datadog. Si tienes problemas con tu tabla de Snowflake, ponte en contacto con el servicio de asistencia de Snowflake.

Datos recopilados

Métricas

snowflake.storage.storage_bytes.total
(gauge)
The average number of bytes of table storage used including bytes for data currently in Time Travel.
Shown as byte
snowflake.storage.stage_bytes.total
(gauge)
The average number of bytes of stage storage used by files in all internal stages.
Shown as byte
snowflake.storage.failsafe_bytes.total
(gauge)
The average number of bytes of data in Fail-safe.
Shown as byte
snowflake.storage.database.storage_bytes
(gauge)
The average number of bytes of database storage used.
Shown as byte
snowflake.storage.database.failsafe_bytes
(gauge)
The average number of bytes of Fail-safe storage used.
Shown as byte
snowflake.billing.virtual_warehouse.avg
(gauge)
The average overall credits billed per hour for virtual warehouses.
Shown as unit
snowflake.billing.virtual_warehouse.sum
(gauge)
The sum of overall credits billed for virtual warehouses.
Shown as unit
snowflake.billing.cloud_service.avg
(gauge)
The average overall credits billed per hour for cloud services.
Shown as unit
snowflake.billing.cloud_service.sum
(gauge)
The total overall credits billed for cloud services.
Shown as unit
snowflake.billing.total_credit.avg
(gauge)
The average overall of credits used per hour for the account. This is the sum of snowflake.billing.cloudservice and snowflake.billing.virtualwarehouses.
Shown as unit
snowflake.billing.total_credit.sum
(gauge)
The total overall of credits used for the account. This is the sum of snowflake.billing.cloudservice and snowflake.billing.virtualwarehouses.
Shown as unit
snowflake.billing.warehouse.cloud_service.avg
(gauge)
The average credits used per hour for cloud services by warehouse.
Shown as unit
snowflake.billing.warehouse.cloud_service.sum
(gauge)
The total credits used for cloud services by warehouse.
Shown as unit
snowflake.billing.warehouse.virtual_warehouse.avg
(gauge)
The average credits used per hour by warehouse.
Shown as unit
snowflake.billing.warehouse.virtual_warehouse.sum
(gauge)
The total credits used by warehouse.
Shown as unit
snowflake.billing.warehouse.total_credit.avg
(gauge)
The average total number of credits used per hour for the warehouse. NOTE: This value does not take into account adjustments which may be higher than your actual credit consumption.
Shown as unit
snowflake.billing.warehouse.total_credit.sum
(gauge)
The total number of credits used for the warehouse. NOTE: This value does not take into account adjustments which may be higher than your actual credit consumption.
Shown as unit
snowflake.logins.fail.count
(count)
Total failed login attempts.
Shown as error
snowflake.logins.success.count
(count)
Total successful login attempts.
Shown as success
snowflake.logins.total
(count)
Total number of login attempts.
Shown as attempt
snowflake.query.executed
(gauge)
The average number of queries executed.
Shown as query
snowflake.query.queued_overload
(gauge)
Average number of queries queued because the warehouse was overloaded.
Shown as query
snowflake.query.queued_provision
(gauge)
Average number of queries queued because the warehouse was being provisioned.
Shown as query
snowflake.query.blocked
(gauge)
Average number of queries blocked by a transaction lock.
Shown as query
snowflake.query.execution_time
(gauge)
Average query execution time.
Shown as millisecond
snowflake.query.compilation_time
(gauge)
Average query compilation time.
Shown as millisecond
snowflake.query.bytes_scanned
(gauge)
Average query bytes scanned.
Shown as byte
snowflake.query.bytes_written
(gauge)
Average query bytes written.
Shown as byte
snowflake.query.bytes_deleted
(gauge)
Average query bytes deleted.
Shown as byte
snowflake.data_transfer.bytes.avg
(gauge)
Average bytes transferred.
Shown as byte
snowflake.data_transfer.bytes.sum
(gauge)
Total bytes transferred.
Shown as byte
snowflake.auto_recluster.credits_used.avg
(gauge)
Average credits billed for automatic reclustering.
Shown as unit
snowflake.auto_recluster.credits_used.sum
(gauge)
Total credits billed for automatic reclustering.
Shown as unit
snowflake.auto_recluster.bytes_reclustered.avg
(gauge)
Average bytes reclustered.
Shown as byte
snowflake.auto_recluster.bytes_reclustered.sum
(gauge)
Total bytes reclustered.
Shown as byte
snowflake.auto_recluster.rows_reclustered.avg
(gauge)
Average rows reclustered.
Shown as row
snowflake.auto_recluster.rows_reclustered.sum
(gauge)
Total rows reclustered.
Shown as row
snowflake.storage.table.active_bytes.avg
(gauge)
Average bytes owned by (and billed to) this table that are in the active state.
Shown as byte
snowflake.storage.table.time_travel_bytes.avg
(gauge)
Average bytes owned by (and billed to) this table that are in the Time Travel state.
Shown as byte
snowflake.storage.table.failsafe_bytes.avg
(gauge)
Average bytes owned by (and billed to) this table that are in the Fail-safe state.
Shown as byte
snowflake.storage.table.retained_bytes.avg
(gauge)
Average bytes owned by (and billed to) this table that are retained after deletion because they are referenced by one or more clones of this table.
Shown as byte
snowflake.pipe.credits_used.avg
(gauge)
Average number of credits billed for Snowpipe data loads.
Shown as unit
snowflake.pipe.credits_used.sum
(gauge)
Total number of credits billed for Snowpipe data loads.
Shown as unit
snowflake.pipe.bytes_inserted.avg
(gauge)
Average number of bytes loaded from Snowpipe.
Shown as byte
snowflake.pipe.bytes_inserted.sum
(gauge)
Total number of bytes loaded from Snowpipe.
Shown as byte
snowflake.pipe.files_inserted.avg
(gauge)
Average number of files loaded from Snowpipe.
Shown as file
snowflake.pipe.files_inserted.sum
(gauge)
Total number of files loaded from Snowpipe.
Shown as file
snowflake.replication.credits_used.avg
(gauge)
Average number of credits used for database replication.
Shown as unit
snowflake.replication.credits_used.sum
(gauge)
Total number of credits used for database replication.
Shown as unit
snowflake.replication.bytes_transferred.avg
(gauge)
Average number of bytes transferred for database replication.
Shown as byte
snowflake.replication.bytes_transferred.sum
(gauge)
Total number of bytes transferred for database replication.
Shown as byte
snowflake.query.bytes_spilled.local
(gauge)
Avg volume of data spilled to local disk.
Shown as byte
snowflake.query.bytes_spilled.remote
(gauge)
Avg volume of data spilled to remote disk.
Shown as byte
snowflake.organization.contract.amount
(gauge)
The average amount for the given contract
snowflake.organization.credit.virtual_warehouse.sum
(gauge)
The sum of credits used by warehouse.
snowflake.organization.credit.virtual_warehouse.avg
(gauge)
The average credits used per day by warehouse.
snowflake.organization.credit.cloud_service.sum
(gauge)
The sum of credits billed for cloud services
snowflake.organization.credit.cloud_service.avg
(gauge)
The average overall credits billed for cloud services
snowflake.organization.credit.cloud_service_adjustment.sum
(gauge)
Sum of credits adjusted for included cloud services.
snowflake.organization.credit.cloud_service_adjustment.avg
(gauge)
Average of credits adjusted for included cloud services.
snowflake.organization.credit.total_credit.sum
(gauge)
The sum of overall of credits used for the organization. This is the sum of snowflake.organization.credit.cloudservice.sum and snowflake.organization.credit.virtualwarehouse.sum.
snowflake.organization.credit.total_credit.avg
(gauge)
The average number of overall of credits used for the organization. This is the sum of snowflake.organization.credit.cloudservice.avg and snowflake.organization.credit.virtualwarehouse.avg.
snowflake.organization.credit.total_credits_billed.sum
(gauge)
The total number of credits billed for the account in the day. It is the sum of snowflake.organization.credit.cloudservice.sum, snowflake.organization.credit.virtualwarehouse.sum, and snowflakeweb.organization.credit.cloudservice_adjustment.sum.
snowflake.organization.credit.total_credits_billed.avg
(gauge)
The average number of credits billed for the account in the day. It is the sum of snowflake.organization.credit.cloudservice.avg, snowflake.organization.credit.virtualwarehouse.avg, and snowflakeweb.organization.credit.cloudservice_adjustment.avg.
snowflake.organization.currency.usage
(gauge)
Sum of the total number of credits charged per day.
snowflake.organization.currency.usage_in_currency
(gauge)
Sum of the total amount charged for the day.
snowflake.organization.warehouse.virtual_warehouse.sum
(gauge)
Sum of number of credits used for the warehouse.
snowflake.organization.warehouse.virtual_warehouse.avg
(gauge)
Average number of credits used for the warehouse.
snowflake.organization.warehouse.cloud_service.avg
(gauge)
Average number of credits used for cloud services.
snowflake.organization.warehouse.cloud_service.sum
(gauge)
Sum of credits used for cloud services.
snowflake.organization.warehouse.total_credit.sum
(gauge)
The total number of credits used by the warehouse. Sum of snowflake.organization.warehouse.cloudservice.sum and snowflake.organization.warehouse.totalcredit.sum.
snowflake.organization.warehouse.total_credit.avg
(gauge)
The average total number of credits used by the warehouse. Sum of snowflake.organization.warehouse.cloudservice.avg and snowflake.organization.warehouse.totalcredit.avg
snowflake.organization.storage.average_bytes
(gauge)
Number of bytes of database storage used, including data in Time Travel and Fail-safe.
Shown as byte
snowflake.organization.storage.credits
(gauge)
Sum of total number of credits used for all accounts in the organization. Sum of credits used for database storage and stages.
snowflake.organization.rate.effective_rate
(gauge)
The rate after applying any applicable discounts per the contract for the organization.
snowflake.organization.data_transfer.bytes_transferred
(gauge)
Number of bytes transferred during the usage date.
Shown as byte
snowflake.organization.balance.capacity
(gauge)
The amount of capacity in currency that is available for use. This is the end of day balance.
snowflake.organization.balance.on_demand_consumption
(gauge)
The amount of consumption at on demand prices that will be invoiced given that all the free usage and capacity balances have been exhausted. This is a negative value (e.g. -250) until the invoice is paid. This is the end of day balance.
snowflake.organization.balance.rollover
(gauge)
The amount of rollover balance in currency that is available for use. At the end of a contract term
snowflake.organization.balance.free_usage
(gauge)
The amount of free usage in currency that is available for use. This is the end of day balance

Eventos

La integración de Snowflake Web no incluye ningún evento.

Checks de servicio

La integración de Snowflake Web no incluye ningún check de servicio.

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.

Check del Agent: Snowflake

El check del Agent de Snowflake ya no es compatible; se recomienda cambiar a la nueva integración de Snowflake para obtener funciones adicionales y un menor volumen de llamadas a la API para Snowflake.

Agent: información general

Este check monitoriza Snowflake a través del Datadog Agent. Snowflake es un almacén de datos analíticos SaaS y se ejecuta completamente en la infraestructura de la nube. Esta integración monitoriza el uso de crédito, la facturación, el almacenamiento, las métricas de consulta y más.

Nota: Las métricas se recopilan mediante consultas a Snowflake. Las consultas realizadas mediante la integración de Datadog se facturan a través de Snowflake.

Agent: configuración

Sigue las instrucciones a continuación para instalar y configurar este check para un Agent que se ejecuta en un host.

Agent: instalación

El check de Snowflake está incluido en el paquete del Datadog Agent.

Nota: El check de Snowflake no está disponible en el Datadog Agent v6 con Python 2. Para utilizar Snowflake en el Agent v6, consulta Uso de Python 3 con el Datadog Agent v6 o actualiza al Agent v7.

Agent: configuración

Snowflake recomienda otorgar permisos a un rol alternativo como `SYSADMIN`. Lee más sobre cómo controlar el rol ACCOUNTADMIN para obtener más información.
  1. Crea un rol y un usuario específicos de Datadog para monitorizar Snowflake. En Snowflake, ejecuta lo siguiente para crear un rol personalizado con acceso al esquema ACCOUNT_USAGE.

    Nota: Por defecto, esta integración monitoriza la base de datos SNOWFLAKE y el esquema ACCOUNT_USAGE. Consulta “Recopilación de datos de la organización” para obtener información sobre cómo monitorizar el esquema ORGANIZATION_USAGE. Esta base de datos está disponible por defecto y solo la pueden ver los usuarios con el rol ACCOUNTADMIN o cualquier rol otorgado por el ACCOUNTADMIN.

    use role ACCOUNTADMIN;
    grant imported privileges on database snowflake to role SYSADMIN;
    
    use role SYSADMIN;
    

    También puedes crear un rol DATADOG personalizado con acceso a ACCOUNT_USAGE.

    -- Create a new role intended to monitor Snowflake usage.
    create role DATADOG;
    
    -- Grant privileges on the SNOWFLAKE database to the new role.
    grant imported privileges on database SNOWFLAKE to role DATADOG;
    
    -- Grant usage to your default warehouse to the role DATADOG.
    grant usage on warehouse <WAREHOUSE> to role DATADOG;
    
    -- Create a user, skip this step if you are using an existing user.
    create user DATADOG_USER
    LOGIN_NAME = DATADOG_USER
    password = '<PASSWORD>'
    default_warehouse = <WAREHOUSE>
    default_role = DATADOG
    default_namespace = SNOWFLAKE.ACCOUNT_USAGE;
    
    -- Grant the monitor role to the user.
    grant role DATADOG to user <USER>;
    
  2. Edita el archivo snowflake.d/conf.yaml, que se encuentra en la carpeta conf.d/ en la raíz del directorio de configuración del Agent, para empezar a recopilar tus datos de rendimiento de Snowflake. Para conocer todas las opciones de configuración disponibles, consulta el snowflake.d/conf.yaml de ejemplo.

    ## @param account - string - required
    ## Name of your account (provided by Snowflake), including the platform and region if applicable.
    ## For more information on Snowflake account names,
    ## see https://docs.snowflake.com/en/user-guide/connecting.html#your-snowflake-account-name
    #
    - account: <ORG_NAME>-<ACCOUNT_NAME>
    
      ## @param username - string - required
      ## Login name for the user.
      #
      username: <USER>
    
      ## @param password - string - required
      ## Password for the user
      #
      password: <PASSWORD>
    
      ## @param role - string - required
      ## Name of the role to use.
      ##
      ## By default, the SNOWFLAKE database is only accessible by the ACCOUNTADMIN role. Snowflake recommends
      ## configuring a role specific for monitoring:
      ## https://docs.snowflake.com/en/sql-reference/account-usage.html#enabling-account-usage-for-other-roles
      #
      role: <ROLE>
    
      ## @param min_collection_interval - number - optional - default: 15
      ## This changes the collection interval of the check. For more information, see:
      ## https://docs.datadoghq.com/developers/write_agent_check/#collection-interval
      ##
      ## NOTE: Most Snowflake ACCOUNT_USAGE views are populated on an hourly basis,
      ## so to minimize unnecessary queries, set the `min_collection_interval` to 1 hour.
      #
      min_collection_interval: 3600
    
      # @param disable_generic_tags - boolean - optional - default: false
      # Generic tags such as `cluster` will be replaced by <INTEGRATION_NAME>_cluster to avoid
      # getting mixed with other integration tags.
      # disable_generic_tags: true
    
    In the default `conf.yaml`, the min_collection_interval is 1 hour. Snowflake metrics are aggregated by day, you can increase the interval to reduce the number of queries.
    Note: Snowflake ACCOUNT_USAGE views have a known latency of 45 minutes to 3 hours.
  3. Reinicia el Agent.

Recopilación de datos de la organización

Por defecto, esta integración monitoriza el esquema ACCOUNT_USAGE, pero se puede configurar para monitorizar métricas a nivel de la organización.

Para recopilar métricas de la organización, cambia el campo del esquema a ORGANIZATION_USAGE y aumenta min_collection_interval a 43200 en la configuración de la integración. Esto reduce el número de consultas a Snowflake, ya que la mayoría de las consultas de la organización tienen una latencia de hasta 24 horas.

Nota: Para monitorizar las métricas de la organización, tu user debe tener el rol ORGADMIN.

- schema: ORGANIZATION_USAGE
  min_collection_interval: 43200

De forma predeterminada, solo se habilitan algunas métricas de la organización. Para recopilar todas las métricas de la organización disponibles, utiliza la opción de configuración metric_groups:

metric_groups:
  - snowflake.organization.warehouse
  - snowflake.organization.currency
  - snowflake.organization.credit
  - snowflake.organization.storage
  - snowflake.organization.contracts
  - snowflake.organization.balance
  - snowflake.organization.rate
  - snowflake.organization.data_transfer

Además, puedes monitorizar las métricas de la cuenta y de la organización al mismo tiempo:

instances:
  - account: example-inc
    username: DATADOG_ORG_ADMIN
    password: "<PASSWORD>"
    role: SYSADMIN
    schema: ORGANIZATION_USAGE
    database: SNOWFLAKE
    min_collection_interval: 43200

  - account: example-inc
    username: DATADOG_ACCOUNT_ADMIN
    password: "<PASSWORD>"
    role: DATADOG_ADMIN
    schema: ACCOUNT_USAGE
    database: SNOWFLAKE
    min_collection_interval: 3600

Recopilación de datos para múltiples entornos

Si deseas recopilar datos para varios entornos de Snowflake, añade cada entorno como una instancia en tu archivo snowflake.d/conf.yaml. Por ejemplo, si necesitas recopilar datos para dos usuarios llamados DATADOG_SYSADMIN y DATADOG_USER:

instances:
  - account: example-inc
    username: DATADOG_SYSADMIN
    password: "<PASSWORD>"
    role: SYSADMIN
    database: EXAMPLE-INC

  - account: example-inc
    username: DATADOG_USER
    password: "<PASSWORD>"
    role: DATADOG_USER
    database: EXAMPLE-INC

Configuración del proxy

Snowflake recomienda configurar variables de entorno para configuraciones de proxy.

También puedes configurar proxy_host, proxy_port, proxy_user y proxy_password bajo init_config en snowflake.d/conf.yaml.

Nota: Snowflake formatea automáticamente las configuraciones de proxy y configura variables de entorno de proxy estándar. Estas variables también afectan todas las solicitudes de integraciones, incluidos los orquestadores como Docker, ECS y Kubernetes.

Conectividad privada a la configuración de Snowflake

Si la conectividad privada (como AWS PrivateLink) está habilitada en Snowflake, puedes configurar la integración Snowflake actualizando la opción de configuración account con el siguiente formato:

- account: <ACCOUNT>.<REGION_ID>.privatelink

Consultas personalizadas de Snowflake

La integración Snowflake admite consultas personalizadas. Por defecto, la integración se conecta a la base de datos compartida SNOWFLAKE y al esquema ACCOUNT_USAGE.

Para ejecutar consultas personalizadas en un esquema o una base de datos diferentes, añade otra instancia al snowflake.d/conf.yaml de ejemplo y especifica las opciones database y schema. Asegúrate de que el usuario y el rol tienen acceso a la base de datos o al esquema especificados.

Opciones de configuración

La opción custom_queries tiene las siguientes opciones:

OpciónObligatorioDescripción
queryEste es el SQL que se va a ejecutar. Puede ser una sentencia simple o un script de varias líneas. Se evalúan todas las filas de los resultados. Utiliza la barra vertical si requieres un script de varias líneas.
columnsSe trata de una lista que representa cada columna ordenada secuencialmente de izquierda a derecha.

Hay 2 datos necesarios:
-name**: es el sufijo que se añade a metric_prefix para formar el nombre completo de la métrica. Si se especifica type como tag, la columna se aplica como una etiqueta a cada métrica recopilada por esta consulta.
- type: este es el método de envío (gauge, count, rate, etc.). También se puede definir como tag para etiquetar cada métrica de la fila con el nombre y el valor (<NAME>:<ROW_VALUE>) del elemento de esta columna.
tagsNoUna lista de etiquetas estáticas que pueden aplicarse a las métricas.
Notas:
  • Al menos uno de los elementos definidos en columns debería ser un tipo de métrica (gauge, count, rate).

  • El número de elementos en las columnas debe ser igual a la cantidad de columnas devueltas en la consulta.

  • El orden en que se definen los elementos en columns debe ser el mismo orden en que se devuelven en la consulta.

custom_queries:
  - query: select F3, F2, F1 from Table;
    columns:
      - name: f3_metric_alias
        type: gauge
      - name: f2_tagkey
        type: tag
      - name: f1_metric_alias
        type: count
    tags:
      - test:snowflake

Ejemplo

El siguiente ejemplo es una consulta que cuenta todas las consultas de la vista QUERY_HISTORY, etiquetadas por nombres de base de datos, esquema y almacén.

select count(*), DATABASE_NAME, SCHEMA_NAME, WAREHOUSE_NAME from QUERY_HISTORY group by 2, 3, 4;
Configuración de una consulta personalizada

La configuración de una consulta personalizada en instances tiene el siguiente aspecto:

custom_queries:
  - query: select count(*), DATABASE_NAME, SCHEMA_NAME, WAREHOUSE_NAME from QUERY_HISTORY group by 2, 3, 4;
    columns:
      - name: query.total
        type: gauge
      - name: database_name
        type: tag
      - name: schema_name
        type: tag
      - name: warehouse_name
        type: tag
    tags:
      - test:snowflake

Agent: validación

Ejecuta el subcomando de estado del Agent y busca snowflake en la sección Checks.

Agent: datos recopilados

Nota: Por defecto, sólo están activadas las métricas de los siguientes grupos de métricas: snowflake.query.*, snowflake.billing.*, snowflake.storage.* y snowflake.logins.*.

Si quieres recopilar métricas de otros grupos de métricas, consulta el archivo de configuración de ejemplo de esta integración.

Agent: métricas

Consulta Métricas para obtener una lista de las métricas que proporciona este check.

Agent: eventos

Snowflake no incluye ningún evento.

Agent: checks de servicio

snowflake.can_connect
Devuelve CRITICAL si el check no puede autenticar las credenciales de Snowflake. En caso contrario, devuelve OK.
Estados: ok, crítico

Agent: solucionar problemas

¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.

Referencias adicionales

Documentación útil adicional, enlaces y artículos:

PREVIEWING: seth.samuel/mysql-iam