create_monitor
Create Datadog monitors for anomaly detection, APM, logs, metrics, SLOs, and other alert types using customizable query parameters and threshold settings.
Instructions
Create a monitor using the specified options.
Monitor Types
The type of monitor chosen from:
- anomaly: - query alert
- APM: - query alertor- trace-analytics alert
- composite: - composite
- custom: - service check
- forecast: - query alert
- host: - service check
- integration: - query alertor- service check
- live process: - process alert
- logs: - log alert
- metric: - query alert
- network: - service check
- outlier: - query alert
- process: - service check
- rum: - rum alert
- SLO: - slo alert
- watchdog: - event-v2 alert
- event-v2: - event-v2 alert
- audit: - audit alert
- error-tracking: - error-tracking alert
- database-monitoring: - database-monitoring alert
- network-performance: - network-performance alert
- cloud cost: - cost alert
Notes:
- Synthetic monitors are created through the Synthetics API. See the Synthetics API documentation for more information. 
- Log monitors require an unscoped App Key. 
Query Types
Metric Alert Query
Example: time_aggr(time_window):space_aggr:metric{tags} [by {key}] operator #
- time_aggr: avg, sum, max, min, change, or pct_change
- time_window:- last_#m(with- #between 1 and 10080 depending on the monitor type) or- last_#h(with- #between 1 and 168 depending on the monitor type) or- last_1d, or- last_1w
- space_aggr: avg, sum, min, or max
- tags: one or more tags (comma-separated), or *
- key: a 'key' in key:value tag syntax; defines a separate alert for each tag in the group (multi-alert)
- operator: <, <=, >, >=, ==, or !=
- #: an integer or decimal number used to set the threshold
If you are using the _change_ or _pct_change_ time aggregator, instead use change_aggr(time_aggr(time_window),
timeshift):space_aggr:metric{tags} [by {key}] operator # with:
- change_aggrchange, pct_change
- time_aggravg, sum, max, min Learn more
- time_windowlast_#m (between 1 and 2880 depending on the monitor type), last_#h (between 1 and 48 depending on the monitor type), or last_#d (1 or 2)
- timeshift#m_ago (5, 10, 15, or 30), #h_ago (1, 2, or 4), or 1d_ago
Use this to create an outlier monitor using the following query:
avg(last_30m):outliers(avg:system.cpu.user{role:es-events-data} by {host}, 'dbscan', 7) > 0
Service Check Query
Example: "check".over(tags).last(count).by(group).count_by_status()
- checkname of the check, for example- datadog.agent.up
- tagsone or more quoted tags (comma-separated), or "*". for example:- .over("env:prod", "role:db");- overcannot be blank.
- countmust be at greater than or equal to your max threshold (defined in the- options). It is limited to 100. For example, if you've specified to notify on 1 critical, 3 ok, and 2 warn statuses,- countshould be at least 3.
- groupmust be specified for check monitors. Per-check grouping is already explicitly known for some service checks. For example, Postgres integration monitors are tagged by- db,- host, and- port, and Network monitors by- host,- instance, and- url. See Service Checks documentation for more information.
Event Alert Query
Note: The Event Alert Query has been replaced by the Event V2 Alert Query. For more information, see the Event Migration guide.
Event V2 Alert Query
Example: events(query).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- rollup_methodThe stats roll-up method - supports- count,- avgand- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
Process Alert Query
Example: processes(search).over(tags).rollup('count').last(timeframe) operator #
- searchfree text search string for querying processes. Matching processes match results on the Live Processes page.
- tagsone or more tags (comma-separated)
- timeframethe timeframe to roll up the counts. Examples: 10m, 4h. Supported timeframes: s, m, h and d
- operator<, <=, >, >=, ==, or !=
- #an integer or decimal number used to set the threshold
Logs Alert Query
Example: logs(query).index(index_name).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- index_nameFor multi-index organizations, the log index in which the request is performed.
- rollup_methodThe stats roll-up method - supports- count,- avgand- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
Composite Query
Example: 12345 && 67890, where 12345 and 67890 are the IDs of non-composite monitors
- name[required, default = dynamic, based on query]: The name of the alert.
- message[required, default = dynamic, based on query]: A message to include with notifications for this monitor. Email notifications can be sent to specific users by using the same '@username' notation as events.
- tags[optional, default = empty list]: A list of tags to associate with your monitor. When getting all monitor details via the API, use the- monitor_tagsargument to filter results by these tags. It is only available via the API and isn't visible or editable in the Datadog UI.
SLO Alert Query
Example: error_budget("slo_id").over("time_window") operator #
- slo_id: The alphanumeric SLO ID of the SLO you are configuring the alert for.
- time_window: The time window of the SLO target you wish to alert on. Valid options:- 7d,- 30d,- 90d.
- operator:- >=or- >
Audit Alert Query
Example: audits(query).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- rollup_methodThe stats roll-up method - supports- count,- avgand- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
CI Pipelines Alert Query
Example: ci-pipelines(query).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- rollup_methodThe stats roll-up method - supports- count,- avg, and- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
CI Tests Alert Query
Example: ci-tests(query).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- rollup_methodThe stats roll-up method - supports- count,- avg, and- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
Error Tracking Alert Query
"New issue" example: error-tracking(query).source(issue_source).new().rollup(rollup_method[, measure]).by(group_by).last(time_window) operator #
"High impact issue" example: error-tracking(query).source(issue_source).impact().rollup(rollup_method[, measure]).by(group_by).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- issue_sourceThe issue source - supports- all,- browser,- mobileand- backendand defaults to- allif omitted.
- rollup_methodThe stats roll-up method - supports- count,- avg, and- cardinalityand defaults to- countif omitted.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- group byComma-separated list of attributes to group by - should contain at least- issue.id.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
Database Monitoring Alert Query
Example: database-monitoring(query).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- rollup_methodThe stats roll-up method - supports- count,- avg, and- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
Network Performance Alert Query
Example: network-performance(query).rollup(rollup_method[, measure]).last(time_window) operator #
- queryThe search query - following the Log search syntax.
- rollup_methodThe stats roll-up method - supports- count,- avg, and- cardinality.
- measureFor- avgand cardinality- rollup_method- specify the measure or the facet name you want to use.
- time_window#m (between 1 and 2880), #h (between 1 and 48).
- operator- <,- <=,- >,- >=,- ==, or- !=.
- #an integer or decimal number used to set the threshold.
Cost Alert Query
Example: formula(query).timeframe_type(time_window).function(parameter) operator #
- queryThe search query - following the Log search syntax.
- timeframe_typeThe timeframe type to evaluate the cost - for- forecastsupports- current- for- change,- anomaly,- thresholdsupports- last
- time_window- supports daily roll-up e.g.- 7d
- function- [optional, defaults to- thresholdmonitor if omitted] supports- change,- anomaly,- forecast
- parameterSpecify the parameter of the type- for - change:- supports - relative,- absolute
- [optional] supports - #, where- #is an integer or decimal number used to set the threshold
 
- for - anomaly:- supports - direction=both,- direction=above,- direction=below
- [optional] supports - threshold=#, where- #is an integer or decimal number used to set the threshold
 
 
- operator- for - thresholdsupports- <,- <=,- >,- >=,- ==, or- !=
- for - changesupports- >,- <
- for - anomalysupports- >=
- for - forecastsupports- >
 
- #an integer or decimal number used to set the threshold.
Input Schema
| Name | Required | Description | Default | 
|---|---|---|---|
| No arguments | |||