CertSafari
    Snowflake SnowPro Advanced: Administrator (ADA-C02)· Lessons

    Domain 4 · Lesson 18/24

    Snowflake Resource Monitors and Cost Dashboards

    Given a scenario, implement resource monitors.

    19 min read
    4% of exam
    6 sources
    Published 5 Oct 2026
    Docs as of 4 Oct 2026

    What you will be able to do

    • Create a resource monitor with a credit quota, schedule and triggers that meet a stated business requirement
    • Choose between an account-level monitor and warehouse-level monitors, and predict which limit suspends a warehouse first
    • Modify an existing resource monitor and know which changes need ACCOUNTADMIN
    • Use the Snowsight Cost management pages and the usage views to build a cost dashboard

    Key concept

    Resource monitor — A first-class Snowflake object that counts the credits used by the warehouses assigned to it, plus the cloud services that support them, over a time interval. When usage crosses a percentage of its credit quota, it sends notifications and/or suspends those warehouses.

    1.What a resource monitor does and does not watch

    A virtual warehouse consumes credits while it runs, and the number of credits depends on its size and how long it runs. A resource monitor sets a ceiling on that consumption. It tracks the credits used by every warehouse assigned to it within an interval. When usage reaches thresholds you define, it can send alert notifications, suspend standard warehouses, or disable Adaptive Warehouses.

    The scope is narrow, and the exam tests it. Resource monitors work for warehouses only. They cannot track spending on serverless features or AI services. Snowflake's guidance for those features is to use a budget instead. Only the ACCOUNTADMIN role can create a resource monitor, but an account administrator can grant other roles privileges to view and modify one.

    Within that scope, the quota counts more than warehouse compute alone. The credit quota covers credits consumed by user-managed warehouses *and* by the cloud services that support them. With a 1000-credit limit, 700 warehouse credits plus 300 cloud services credits in the same interval triggers the alert. The quota also ignores the daily 10% cloud services adjustment on your bill. Snowflake uses all cloud services consumption to decide whether a limit has been reached, even consumption that is never billed. As a result, a monitor can hit its limit before your bill would suggest it should.

    Checkpoint 1 of 9· Check yourself

    A monitor has CREDIT_QUOTA = 1000. In the current interval, its warehouses have used 700 credits and cloud services have used 300 credits. Part of the cloud services usage falls within the daily 10% adjustment and won't be billed. What happens?

    Sources1

    2.Credit quota and schedule

    Two properties decide *how much* and *over what period*. CREDIT_QUOTA is the number of credits allocated per interval, and any number can be specified. If you leave it unset, the monitor has no quota and will never reach 100% usage. Snowflake tracks used credits across all assigned warehouses and resets that number to 0 at the end of each interval.

    The default schedule starts monitoring immediately and resets used credits at the beginning of each calendar month, which is the start of the standard Snowflake billing cycle. You can customize the schedule with three properties:

    - FREQUENCY: MONTHLY, DAILY, WEEKLY, YEARLY or NEVER. With NEVER, used credits never reset, so warehouses keep using credits until the quota is reached. - START_TIMESTAMP: a future timestamp, or IMMEDIATELY. If you give a date without a time, Snowflake uses the current time. If you give a time without a time zone, it defaults to UTC. - END_TIMESTAMP: the date and time when Snowflake suspends the assigned warehouses.

    FREQUENCY and START_TIMESTAMP must be set together. You cannot set one without the other.

    With a custom schedule, the frequency is relative to the start date rather than the calendar month. The reset still happens at 12:00 AM UTC, whatever time the start timestamp names. A WEEKLY monitor that starts on a Monday resets every Monday. If the start date is the last day of a month, Snowflake resets on the last day of every following month. A start of January 31 gives resets on February 28 (or 29), March 31, April 30 and so on.

    END_TIMESTAMP is rarely used, and its behaviour can be a surprise. At the end date, all assigned warehouses are suspended even if the quota hasn't been reached. The notification that is sent reports a suspend immediate action at whatever percentage had been used, which may not be one of your thresholds.

    Account-level monitor: starts now, resets monthly, suspends at 100% of 1000 creditssql
    USE ROLE ACCOUNTADMIN; CREATE OR REPLACE RESOURCE MONITOR limit1 WITH CREDIT_QUOTA=1000 FREQUENCY = MONTHLY START_TIMESTAMP = IMMEDIATELY TRIGGERS ON 100 PERCENT DO SUSPEND; ALTER WAREHOUSE wh1 SET RESOURCE_MONITOR = limit1;

    Checkpoint 2 of 9· Fill the gap

    This monitor should start counting credits from the moment it is created. Which value completes START_TIMESTAMP?

    USE ROLE ACCOUNTADMIN; CREATE OR REPLACE RESOURCE MONITOR limit1 WITH CREDIT_QUOTA=1000 FREQUENCY = MONTHLY START_TIMESTAMP =  ?  TRIGGERS ON 100 PERCENT DO SUSPEND;

    Sources12

    3.Triggers: notify, suspend, or suspend immediately

    The quota on its own does nothing. Actions, also called triggers, say what happens at each threshold. Each trigger is a percentage of the quota paired with an action, and thresholds above 100 are allowed. A monitor with no actions defined does nothing when used credits reach a threshold. Each monitor can have one Suspend action, one Suspend Immediate action and up to five Notify actions.

    Trigger grammar from CREATE RESOURCE MONITORsql
    triggerDefinition ::= ON <threshold> PERCENT DO { SUSPEND | SUSPEND_IMMEDIATE | NOTIFY }
    The three resource monitor actions compared
    ActionEffect on standard warehousesRunning statementsAdaptive WarehousesAllowed per monitor
    NOTIFYNo action takenUnaffectedNo action takenUp to five
    SUSPENDSuspendedAllowed to complete firstDisabled after running statements completeOne
    SUSPEND_IMMEDIATESuspended at onceCancelledDisabled immediatelyOne

    SUSPEND has a detail that matters in a scenario question. After it fires, the warehouses cannot run new queries until the monitor's credit quota is increased. A common pattern escalates in stages, as in the example below. A Suspend at 80% lets running work finish, and a Suspend Immediate at 100% is the hard stop that cancels anything still running.

    Notifications go to all account administrators who have notifications enabled. For warehouse monitors, you can also email up to five non-administrator users through NOTIFY_USERS. Each of those users needs a verified email address, or the statement fails. Non-administrators get email only and can't see the notifications in Snowsight. They cannot receive notifications from account monitors.

    Weekly monitor on two warehouses: SUSPEND at 80%, SUSPEND_IMMEDIATE at 100%sql
    USE ROLE ACCOUNTADMIN; CREATE OR REPLACE RESOURCE MONITOR limit1 WITH CREDIT_QUOTA=2000 FREQUENCY = WEEKLY START_TIMESTAMP = '2019-03-04 00:00 PST' TRIGGERS ON 80 PERCENT DO SUSPEND ON 100 PERCENT DO SUSPEND_IMMEDIATE; ALTER WAREHOUSE wh1 SET RESOURCE_MONITOR = limit1; ALTER WAREHOUSE wh2 SET RESOURCE_MONITOR = limit1;
    Adding non-administrator email recipients to a warehouse monitorsql
    ALTER RESOURCE MONITOR my_warehouse_rm
      SET NOTIFY_USERS = (USER1, USER2);

    Checkpoint 3 of 9· Match them up

    Match each trigger action to what it does when its threshold is reached

    Tap a term, then the definition that fits it.

    Checkpoint 4 of 9· Exam question

    A finance team gives the ANALYTICS_WH warehouse a monthly budget of 1,000 credits. Administrators want an email at 80%, running queries allowed to finish when 100% is reached, and every running query cancelled if usage hits 110%. Which trigger set on the resource monitor meets this?

    Sources12

    4.Account-level vs warehouse-level monitors

    A monitor's type decides which warehouses it controls. A monitor that is neither set on the account nor assigned to any warehouse monitors nothing. It simply remains dormant.

    The two monitor types
    AspectAccount monitorWarehouse monitor
    WatchesAll warehouses in the accountOnly the warehouses assigned to it
    How manyOne per accountMany per account
    Assigned withALTER ACCOUNT SET RESOURCE_MONITORALTER WAREHOUSE ... SET RESOURCE_MONITOR
    Non-admin email via NOTIFY_USERSNoYes, up to five users

    A warehouse monitor can cover one or more warehouses, but each warehouse can be assigned to only one warehouse monitor. A warehouse can sit under its own monitor and the account monitor at the same time. The account monitor does not override the warehouse assignment: the warehouse is suspended when either limit is reached.

    Take the documented example. The account monitor has 5000 credits per interval. Warehouse 3 has its own 1000-credit monitor, and Warehouses 4 and 5 share a 2500-credit monitor. Warehouses 3, 4 and 5 may stop below their own quotas if the account's 5000 is reached first.

    The type also affects cloud services. A warehouse-level monitor can count cloud services usage but cannot suspend it. After a warehouse is suspended, queries against it can still incur cloud services costs. An account monitor controls only the warehouses you create. It does not control the Snowflake-provided compute behind serverless features such as Snowpipe, Automatic Clustering and materialized views.

    Creating a monitor and setting it as the account monitor (ACCOUNTADMIN only)sql
    USE ROLE ACCOUNTADMIN; CREATE RESOURCE MONITOR my_account_rm WITH CREDIT_QUOTA=10000 TRIGGERS ON 100 PERCENT DO SUSPEND; ALTER ACCOUNT SET RESOURCE_MONITOR = my_account_rm;

    To check whether an account monitor exists, run SHOW RESOURCE MONITORS. The LEVEL column shows whether each monitor is set for the account or for individual warehouses. To find gaps, the query below lists warehouses with no warehouse-specific monitor. It doesn't check for an account-level monitor, so a listed warehouse may still be under the account's limit.

    Find warehouses that have no warehouse-level resource monitorsql
    SHOW WAREHOUSES
      ->> SELECT "name" AS WAREHOUSE_NAME,
                 "size" AS WAREHOUSE_SIZE
            FROM $1
            WHERE "resource_monitor" = 'null';

    Checkpoint 5 of 9· Check yourself

    The account monitor (5000 credits, SUSPEND at 100%) has reached its quota. Warehouse 3's own monitor (1000 credits, SUSPEND at 100%) has recorded 600 credits. What happens to Warehouse 3?

    Checkpoint 6 of 9· Exam question

    Account-level resource monitor RM_ACCOUNT has a 5,000-credit monthly quota. The ETL_WH warehouse also has its own monitor, RM_ETL, with a 300-credit monthly quota that suspends at 100 percent. ETL_WH reaches 300 credits while the account total is 2,000. What happens?

    Sources1

    5.Modifying monitors and who may do it

    Business requirements change, and most monitor properties can change with them. You can raise or lower the quota, customize the schedule, add or remove actions, and change thresholds. You can also convert an account monitor to a warehouse monitor and back, and add or remove warehouses. In Snowsight, go to Admin » Cost management » Resource Monitors, select the monitor, and choose Edit from the More menu. In SQL, use ALTER RESOURCE MONITOR.

    Two rules limit what you can change. First, changes do not affect the used credits counted so far. They apply only to usage after the change is saved. Second, a customized schedule cannot be set back to the default. To return to the default, you must drop the monitor and create a new one.

    Raising the quota of an existing monitorsql
    ALTER RESOURCE MONITOR limit1 SET CREDIT_QUOTA=3000;
    Privilege needed for each kind of change
    ChangeRequired
    Credit quota, schedule or actionsA role with MODIFY on the resource monitor
    Monitor type (warehouse ↔ account)ACCOUNTADMIN role
    List of warehouses on a warehouse monitorACCOUNTADMIN role
    Creating a resource monitorACCOUNTADMIN role

    You can't convert a warehouse monitor to an account monitor with ALTER RESOURCE MONITOR. Instead, you detach it from its warehouses and then attach it to the account. First, run SHOW WAREHOUSES and find the warehouses whose resource_monitor column names the monitor. Then unset the monitor on each of those warehouses. Finally, set the monitor on the account.

    Detaching my_rm from its warehouses, then setting it on the accountsql
    ALTER WAREHOUSE my_wh2 UNSET RESOURCE_MONITOR; ALTER WAREHOUSE my_wh3 UNSET RESOURCE_MONITOR;
    Final step of the conversionsql
    ALTER ACCOUNT my_account SET RESOURCE_MONITOR = my_rm;

    Checkpoint 7 of 9· Put it in order

    Put the steps for converting warehouse monitor my_rm into the account monitor in order

    1. 1.Run ALTER WAREHOUSE ... UNSET RESOURCE_MONITOR on each of those warehouses
    2. 2.Run ALTER ACCOUNT ... SET RESOURCE_MONITOR = my_rm
    3. 3.Run SHOW WAREHOUSES and find warehouses whose resource_monitor column is MY_RM

    Sources1

    6.Setting up a dashboard to monitor Snowflake costs

    A resource monitor enforces a limit, but it doesn't show where the money goes. For that, Snowflake offers two routes. Snowsight provides ready-made visual dashboards of cost. Queries against the ACCOUNT_USAGE and ORGANIZATION_USAGE views let you drill down and build custom reports and dashboards. The Snowsight pages are under Admin » Cost management. Snowflake recommends selecting an X-Small warehouse to view the usage data.

    Two caveats apply to every Snowsight cost page. Cost information can take up to 72 hours to appear, and it is shown in UTC rather than your local time zone.

    Where to look for cost, by need
    NeedUse
    Contract balance and spend per account across the organizationOrganization Overview (organization account or ORGADMIN-enabled account; capacity contracts only)
    High-level account spend, spikes and savings recommendationsAccount Overview
    Drill into compute, storage and data transfer by day, week or monthConsumption page, filtered by All Usage Types
    Custom reports and dashboardsQueries on ORGANIZATION_USAGE (all accounts) or ACCOUNT_USAGE (one account)

    Account Overview is the account's starting point for cost. Two filters at the top control every tile. *Date range* defaults to This month, and *Currency* defaults to credits; switching to a currency such as USD needs extra privileges. The tiles fall into three groups:

    - Summary cards: total cost against the previous period, budget used, an anomaly count, and estimated savings. The budget card works only if a monthly budget is configured for the account. - Cost breakdown: a spend-over-time chart grouped by Services or by Usage type (Compute, Storage, Data transfer, AI inference). It also has a Cost attribution tile and a top-spenders list of warehouses, queries, databases or tags. - Alerts and recommendations: an anomalies table with the expected range for each day, plus optimization insights.

    The Cost attribution tile handles chargeback. A cost attribution tag is any tag applied to a warehouse for chargeback. If you group the tile by a tag such as COST_CENTER, it splits spend by that tag's values. A Without selected tag row collects warehouses that are missing that tag.

    The Consumption page has one access limit to know. To use all its features, the account administrator must also have ORGADMIN. An ACCOUNTADMIN without ORGADMIN sees only the current account.

    Checkpoint 8 of 9· Check yourself

    A user with ACCOUNTADMIN but not ORGADMIN opens the Consumption page to compare spend across the organization's accounts. What do they see?

    For a custom dashboard, query the usage views directly. ORGANIZATION_USAGE covers every account in the organization, and ACCOUNT_USAGE gives similar data for a single account. The query below totals the last month's spend in currency for each account. It is the kind of query that would back a dashboard tile.

    The Snowsight dashboards documentation in these sources carries a deprecation notice. It says Legacy Dashboards will be removed from Snowflake on June 22, 2026. These sources don't describe the replacement. Check current documentation before relying on Projects » Dashboards to host such a chart.

    Organization spend in currency over the last month, per accountsql
    SELECT account_name, ROUND(SUM(usage_in_currency), 2) as usage_in_currency FROM snowflake.organization_usage.usage_in_currency_daily WHERE usage_date > DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 desc;

    Checkpoint 9 of 9· Exam question

    A data engineering lead asks for a resource monitor to cap monthly credits consumed by serverless tasks, automatic clustering and Snowpipe loads. Which approach is MOST appropriate?

    Sources345

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.A warehouse with its own resource monitor is exempt from the account-level monitor, because the more specific monitor wins.Why is that wrong?

      Both monitors apply at the same time. If either one reaches a suspend threshold, the warehouse is suspended.

      Covered in Account-level vs warehouse-level monitors

    2. 2.An account-level resource monitor caps all credit spend in the account, including Snowpipe, automatic clustering and materialized views.Why is that wrong?

      Resource monitors control only warehouses you create. Serverless features and AI services need a budget instead.

      Covered in What a resource monitor does and does not watch

    3. 3.The quota counts only billed cloud services credits, after the daily 10% adjustment.Why is that wrong?

      The monitor counts all cloud services consumption, including the part that is never billed. It can reach its limit sooner than the bill suggests.

      Covered in What a resource monitor does and does not watch

    4. 4.Trigger thresholds must be between 1 and 100 percent of the quota.Why is that wrong?

      Thresholds above 100 are supported, so a monitor can notify or suspend after the quota has been exceeded.

      Covered in Triggers: notify, suspend, or suspend immediately

    5. 5.An ALTER RESOURCE MONITOR can return a customized schedule to the default calendar-month reset.Why is that wrong?

      A customized schedule cannot be set back to the default. You must drop the monitor and create a new one.

      Covered in Modifying monitors and who may do it

    Practise it for real

    Put a weekly credit limit on a warehouse with staged suspension, then raise the limit

    1. 1.As ACCOUNTADMIN, run CREATE OR REPLACE RESOURCE MONITOR limit1 WITH CREDIT_QUOTA=2000 FREQUENCY = WEEKLY START_TIMESTAMP = IMMEDIATELY TRIGGERS ON 80 PERCENT DO SUSPEND ON 100 PERCENT DO SUSPEND_IMMEDIATE;

      Why: Only ACCOUNTADMIN can create monitors. FREQUENCY and START_TIMESTAMP must be set together.

      You should see: The monitor exists but stays dormant, because nothing is assigned to it yet.

    2. 2.Run ALTER WAREHOUSE wh1 SET RESOURCE_MONITOR = limit1;

      Why: Assigning a warehouse makes this a warehouse-level monitor.

      You should see: wh1 can now be suspended at 80% and 100% of 2000 credits.

    3. 3.Run SHOW RESOURCE MONITORS and check the LEVEL column for limit1

      Why: The LEVEL column shows whether a monitor applies to the account or to individual warehouses.

      You should see: limit1 is shown as a warehouse-level monitor.

    4. 4.Run ALTER RESOURCE MONITOR limit1 SET CREDIT_QUOTA=3000;

      Why: Changing the quota needs MODIFY on the monitor, not ACCOUNTADMIN.

      You should see: The new quota applies from now on, and credits already used this week are unchanged.

    Stuck? Get a nudge

    If the CREATE fails, check that you set FREQUENCY and START_TIMESTAMP together.

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “To monitor credit consumption by these features, use a budget instead.”
      ↩︎ What a resource monitor does and does not watch
      “Only users with the ACCOUNTADMIN role can create a resource monitor, but an account administrator can grant privileges to other roles”
      ↩︎ What a resource monitor does and does not watch
      “Credit quota accounts for credits consumed by both user-managed virtual warehouses and virtual warehouses used by cloud services.”
      ↩︎ What a resource monitor does and does not watch
      “the used credits reset to 0 at the beginning of each calendar month (i.e. the start of the standard Snowflake billing cycle).”
      ↩︎ Credit quota and schedule
      “regardless of the time specified in the start date and time, resource monitors reset at 12:00 AM UTC.”
      ↩︎ Credit quota and schedule
      “all assigned warehouses are suspended on that date and time even if the credit quota has not been reached.”
      ↩︎ Credit quota and schedule
      “if no actions have been defined, nothing happens when the used credits reach the threshold.”
      ↩︎ Triggers: notify, suspend, or suspend immediately
      “You can add up to five non-administrator users to a warehouse monitor”
      ↩︎ Triggers: notify, suspend, or suspend immediately
      “A warehouse monitor can have one or more warehouses assigned to it, but each warehouse can only be assigned to one resource monitor.”
      ↩︎ Account-level vs warehouse-level monitors
      “may be less than their quotas if the quota for the account is reached first.”
      ↩︎ Account-level vs warehouse-level monitors
      “A warehouse-level resource monitor can monitor, but cannot suspend, credit usage by cloud services.”
      ↩︎ Account-level vs warehouse-level monitors
      “The LEVEL column for a resource monitor displays whether it is set for your account or individual warehouses.”
      ↩︎ Account-level vs warehouse-level monitors
      “Changing any of these properties does not affect the used credits to-date for the monitor.”
      ↩︎ Modifying monitors and who may do it
      “a user must use a role with the MODIFY privilege on the resource monitor.”
      ↩︎ Modifying monitors and who may do it
      “To modify the list of warehouses for a warehouse-level resource monitor, a user must use the ACCOUNTADMIN role.”
      ↩︎ Modifying monitors and who may do it
      “You can use a resource monitor to monitor credit usage by virtual warehouses and the cloud services needed to support those warehouses.”
      ↩︎ Key concept
      “An account-level resource monitor does not override resource monitor assignment for individual warehouses.”
      ↩︎ Exam trap 1
      “Resource monitors work for warehouses only. You can’t use a resource monitor to track spending associated with serverless features and AI services.”
      ↩︎ Exam trap 2
      “Resource monitor limits do not take into account the daily 10% adjustment for cloud services.”
      ↩︎ Exam trap 3
      “Note that actions support thresholds greater than 100.”
      ↩︎ Exam trap 4
      “You cannot change the customized schedule for a resource monitor back to the default. You must drop the monitor and create a new monitor.”
      ↩︎ Exam trap 5
      “If your warehouse consumes 700 credits, and cloud services consume 300 credits within a specified interval or date range, an alert will be triggered.”
      ↩︎ Checkpoint
      “Frequency = Monthly: Used credits reset at 12:00 AM UTC on the 15th of each following month.”
      ↩︎ Prediction
      “Find all the warehouses the resource monitor my_rm is monitoring. Check the resource_monitor column for my_rm:”
      ↩︎ Checkpoint
    2. 2.
      “If you set a frequency for a resource monitor, you must also set START_TIMESTAMP.”
      ↩︎ Credit quota and schedule
      “the monitor has no quota and will never reach 100% usage within the specified interval.”
      ↩︎ Credit quota and schedule
      “No new queries can be executed by the warehouses until the credit quota for the resource monitor is increased.”
      ↩︎ Triggers: notify, suspend, or suspend immediately
      “Non-administrator users are notified by email but can’t see notifications in Snowsight.”
      ↩︎ Triggers: notify, suspend, or suspend immediately
      “SUSPEND_IMMEDIATE: Suspend all assigned warehouses immediately and cancel any currently running queries or statements using the warehouses.”
      ↩︎ Checkpoint
    3. 3.
      “Queries against the usage views allow you to drill down into cost data and can help generate custom reports and dashboards.”
      ↩︎ Setting up a dashboard to monitor Snowflake costs
      “It can take up to 72 hours for cost information to become available in Snowsight.”
      ↩︎ Setting up a dashboard to monitor Snowflake costs
      “Information is shown in the UTC time zone, not your local time zone.”
      ↩︎ Setting up a dashboard to monitor Snowflake costs
      “The ORGANIZATION_USAGE schema provides cost information for all of the accounts in the organization”
      ↩︎ Setting up a dashboard to monitor Snowflake costs
      “if a user has the ACCOUNTADMIN role, but does not have the ORGADMIN role, they can only view costs for the current account.”
      ↩︎ Checkpoint
    4. 4.
      “A cost attribution tag is any tag applied to a warehouse for the purpose of chargeback.”
      ↩︎ Setting up a dashboard to monitor Snowflake costs
      “A monthly budget must be configured for the account.”
      ↩︎ Setting up a dashboard to monitor Snowflake costs
    5. 5.
      “Legacy Dashboards will be removed from Snowflake on June 22, 2026.”
      ↩︎ Setting up a dashboard to monitor Snowflake costs

    Also cited

    Ready to test yourself?

    Practise the 14 questions on this subdomain.

    Spotted a mistake, or was something unclear? Tell us.