One of the reasons to ingest and store time series data is to know when data meets or doesn’t meet certain criteria. Use Chronosphere Observability Platform alerting to generate alerts and notifications from data, whether it’s about your system or about your usage of Observability Platform itself. Compare your monitor configurations to historical data to ensure your thresholds meet your needs. Observability Platform lets you designate certain monitors as your favorites, listing them on your personal home page and prioritizing them in global search results.Documentation Index
Fetch the complete documentation index at: https://docs.chronosphere.io/llms.txt
Use this file to discover all available pages before exploring further.
View available monitors
Select from the following methods to view and filter monitors. To query and get detailed information about monitors, see monitor actions.- Web
- Chronoctl
- Terraform
- API
To display a list of defined monitors, in the navigation menu, select
Alerting > Monitors.The list of monitors includes an Alert state column. Each monitor displays a
badge showing the icon for its most severe active state, with a text label listing
all active alert counts. For example, a monitor with two active critical alerts and
one active warning alert shows the critical icon with the label 2 Critical, 1 Warning.
Use the following methods to filter your monitors:
| Icon | State | Description |
|---|---|---|
| Critical | Monitor has at least one active critical alert. | |
| Warning | Monitor has at least one active warning alert, and no critical alerts. | |
| Muted | Monitor’s alerts are muted. | |
| Passing | Monitor has no active alerts. |
- Using the Search monitors search box (an OR filter).
- By team, using the Select a team dropdown.
- By owner, using the Select an owner dropdown. The icon indicates the monitor is part of a collection. The icon indicates this monitor is part of a service.
- By notification policy, using the Select a notification policy dropdown.
- By error status:
- All: Default, displays all monitors.
- Alerting: Monitors currently in alert status.
- Critical: Monitors in a critical alert status.
- Muted: Displays only muted monitors.
- To filter the table to display only your favorite monitors, enable the View only my favorites toggle.
- Include connected monitors: If you filter monitors by owner with the toggle disabled, only monitors owned by that owner are returned. When the toggle is enabled, your filter includes monitors that are connected to that owner, even if they aren’t owned by that owner. Connections are based on collections.
- Click the search bar to focus on it, or use the keyboard shortcut
Control+K(Command+Kon macOS). - Begin typing any part of the monitor’s name.
- Optional. Click the filters for all other listed resource types at the top of the search results to remove them and display only monitors.
- Click the search result you’re interested in, or use the arrow keys to select it and press enter, to go to that monitor.
Create a monitor
Most monitors alert when a value matches a specific condition, such as when an error condition defined by the query lasts longer than one minute. You can also choose to alert when a value doesn’t exist, such as when a host stops sending metrics and is likely unavailable. The Web procedure in Create monitors walks through missing data using not exists and signal not exists in Conditions. For how those choices map to configuration, signal grouping, and Prometheus, logs, or Graphite support, see Missing data conditions. To receive alerts when a host stops sending metrics, create a separate monitor for each host and scope the monitor query to that host.Prerequisites
Before creating a monitor, complete the following tasks:- Create a notifier to define where to deliver alerts and who to notify.
- Create a notification policy to determine how to route notifications to notifiers based on signals that trigger from your monitor. You select the notifier you created for the critical or warning conditions on the notification policy.
Create monitors
After completing the prerequisite tasks, use any of the following methods to create a new monitor. When creating or editing a monitor in Observability Platform, you can simulate and test alerts to see how an alert would have performed against historical data. Use backtesting to review how your alert would have performed if it had been defined in the past.Chronosphere recommends a minimum query interval of 15 seconds. There can be
a ten second delay between an alert trigger and the notifier activation.
- Web
- Chronoctl
- Terraform
- API
To add a new monitor:
-
In the navigation menu, select one of these locations:
- Alerting > Monitors.
- Platform > Collections, and then select the collection you want to create a monitor for. This can be a standard collection or a service.
-
Create the monitor:
- From the Monitors page, click Create monitor. You can also choose Duplicate monitor to copy an existing monitor.
- From the Collections page, in the Monitors panel, click Manage, then click New monitor.
- Enter the information for the monitor based on its data model.
- Select an Owner to organize and filter your monitor. You can select a collection or a service.
-
Enter a Monitor Name, which you can change after creating the monitor. Monitor
names are static strings and don’t accept label variables, such as
$labels.LABEL_NAME. - Choose a Notification Policy to determine which notification policy to use at a particular alert severity.
- Enter Labels as key/value pairs to categorize and filter monitors.
-
In the Query section, choose the type of query you want to enter:
- Prometheus: Enter a valid Prometheus query. Click Edit in Query Builder to open your query in the Query Builder, where you can construct, optimize, and debug your query before saving it. After modifying your query, click Done to return to the Add Monitor page.
- Graphite: Enter a valid Graphite query.
-
Logs: Enter a valid log query, which must include the
make-seriesoperator with a specifiedstepsize to return data. This operator uses thecount()function by default, but you can specify different operators instead. For example, the following query creates a time chart that includes the average forlatencyInSeconds. Thestepparameter defines the time step for each bucket in Prometheus time duration format:If the log query includes a field that contains a period in its name and you want to use signals to group notifications, use an alias for that field name. Otherwise, periods are converted to underscores in the generated visualization.
-
Use these options to validate and update your query:
-
Click Check Query to validate your query and preview query results. In the
query preview, use the following options to understand your query:
- Toggle Show thresholds to display the monitor’s defined thresholds.
- Select a time range up to the present in the time range selector. If your selected time period has too many alerts, or the entire graph appears to display in alerted status, reduce the selected time period. If multiple alerts would have triggered simultaneously, only one threshold marker displays. The banner shows the correct number of alerts. For example, if a critical and a warning would trigger at the same time, only one alert displays on the graph. The banner shows two alerts would have triggered.
- Click Open in Explorer to open your query in Metrics Explorer, where you can review your query for syntax errors and make necessary changes.
-
Click Check Query to validate your query and preview query results. In the
query preview, use the following options to understand your query:
-
For Prometheus queries, test monitor conditions by reviewing when a monitor would
have triggered, based on historical data. The preview reflects existing monitor
schedules, signal grouping, and overrides:
- Use the Show alert durations toggle to display the time period over which the alert would have been active.
-
Toggle Simulate alerts to backtest your condition against existing data. You
must define at least one condition for alert simulations to work.
If your selected query returns too much data, the graph displays an error. Chronosphere recommends selecting shorter time periods for testing, when possible. Alert simulation isn’t available outside the raw data retention period.Alert simulations use existing data, and can’t predict future alerts.
-
Optional. Group alerts based on the results returned from the query by choosing an
option in the Signals section.
Signals use a unique set of labels to
create groups of notifications when a monitor alert triggers or resolves.
If you select per signal (multiple alerts) to generate multiple alerts, enter a label key that differs in name and casing from the label you enter in the Key field in the Labels section. For example, if you enter
environmentin the Key field, you might useEnvironmentsas the Label Key to match on. Pinned scopes can be used as a Label Key. -
Define a condition and sustain period in the Conditions
section, and assign the resulting alert a severity (warning or critical). In
the Sustain field, enter a value followed by an abbreviated unit such as
60s. Valid units ares(seconds),m(minutes),h(hours), ord(days). The dialog also displays the notifiers associated with the monitor for reference.When Alert when value uses one of these comparisons: greater thanTo generate an alert when the entire monitor query returns no results, select not exists in the Alert when value dropdown. Select signal not exists when alerts should respect signal grouping. For example, all series in a signal must be missing, or any single series when using per-series signals. The signal not exists option requires a sustain duration between 5 minutes and 24 hours.>, greater than or equal to>=, less than<, or less than or equal to<=, set a Resolve threshold. The alert doesn’t clear until the series crosses that separate boundary. If you omit it, resolution uses the same threshold as the trigger. See Resolve threshold. -
In the Resolve field, enter a time period for the resolve window as a
value followed by an abbreviated unit such as
30s. Valid units ares(seconds),m(minutes),h(hours), ord(days). -
In the Monitor schedule section, choose when Observability Platform
evaluates the monitor and can send alerts:
- Always on: The monitor is evaluated continuously and can alert whenever conditions are met. This is the default behavior when you don’t restrict evaluation windows.
-
Scheduled: The monitor is evaluated only during the time windows you
define.
- Select Time zone for the schedule.
- For each time window, set Start and End using 24-hour times in
HH:MMform. - Under Repeat every, select the days of the week that window applies to.
- Use Add range to add more than one weekly window.
- Disabled: The monitor doesn’t send alerts. Use this mode to keep the monitor definition without active alerting.
24:00instead of23:59, see Schedule in the monitor data model. - Add notes for the monitor in the Annotations section, such as runbooks, links to related dashboards, data links to related traces, and documentation links.
- Optional. To customize the notification title and description, configure a notification template.
- Click Save.
Missing data conditions
A monitor can have different conditions that indicate missing data. See the CreateMonitor endpoint for more information. ANOT_EXISTS condition triggers only when the entire monitor query returns no time
series.
Use a SIGNAL_NOT_EXISTS condition when a missing data alert should use the same
signal grouping as the rest of the
monitor. SIGNAL_NOT_EXISTS triggers when a specific signal no longer has matching series
(for example after series for one label value drop out while others remain). That
behavior differs from NOT_EXISTS, which only considers whether the full query result
is empty. Monitors can have the following signals to group time series:
- Per monitor (no
signal_grouping, or equivalent): same asNOT_EXISTS. The alert triggers when every series from the query is missing. - Per signal (
label_names): the alert triggers when every series in a signal is missing (all series that share that signal’s label set). - Per series (
signal_per_series): the alert triggers when any individual series disappears.
sum by (cluster) (error_rate()) with signal
grouping on cluster, so each cluster is its own signal.
- While
cluster="dev"andcluster="prod"both return series, neither operator triggers a missing data alert from that condition alone. - If series for
proddisappear butdevstill returns data,SIGNAL_NOT_EXISTScan alert for theprodsignal.NOT_EXISTSdoesn’t trigger, because the query still returns results. - If
devthen disappears, the query returns no time series.SIGNAL_NOT_EXISTScan alert for thedevsignal as well, andNOT_EXISTStriggers because the entire query is empty.
SIGNAL_NOT_EXISTS alerts can resolve automatically after a period once the
missing data condition clears.
SIGNAL_NOT_EXISTS works for Prometheus monitors, not for Graphite
queries. The Sustain field is required and must be between 5 minutes and 24 hours.
Omit value (or set it to zero), the same as for EXISTS and NOT_EXISTS. Use
SIGNAL_NOT_EXISTS only on default conditions, not in
condition overrides. Resolve thresholds (resolve_value)
aren’t supported for this operator.
In Chronoctl YAML and Terraform, set op to NOT_EXISTS or SIGNAL_NOT_EXISTS on a
condition under series_conditions, with the sustain fields your format expects and
with value omitted or zero. The Chronoctl and
Terraform examples show the full monitor definition. In the Chronoctl
YAML, use the inline comments before the sample threshold conditions when replacing or
adding a missing data condition. In Terraform, use the same series_conditions layout
and the comments on op and value in the example resource as a guide.
The following examples show complete monitor definitions for each tool and query type.
Each example groups series into signals based on the source and service_environment
label keys, and includes a schedule that runs the monitor on Mondays from 7:00 to
10:10 and 15:00 to 22:30, and Thursdays from 21:15 through the end of the day. All
times are in UTC.
If you define
label_names in the signal_grouping section, enter a label name that
differs in name and casing from the label you enter in the labels section. For
example, if you enter environment as a key in the labels section, you might use
Environments in the label_names section.- Chronoctl (Prometheus)
- Chronoctl (logs)
- Terraform (Prometheus)
- Terraform (logs)
The following YAML defines a Prometheus monitor named
Disk Getting Full. The
series_conditions trigger a warning notification when the value exceeds 30 for more
than 300 seconds, and a critical notification when it exceeds 60 for more than 300
seconds.Edit a monitor
Select from the following methods to edit monitors.Users can modify Terraform-managed resources only by using Terraform.
Learn more.
- Web
- Chronoctl
- Terraform
- API
To edit a monitor:
- In the navigation menu, select Alerting > Monitors.
- Click the name of the monitor you want to edit.
- In the action menu, click the three vertical dots icon and select Edit monitor. This opens a sidebar where you can edit the monitor’s properties.
- Make your edits, and then click Save. Refer to the monitor data model for specific definitions.
Override a monitor alert
You can override the default conditions that define when an alert triggers for a monitor. This override is similar to overriding a notification policy that routes a notification to a notifier other than the specified default. On a monitor, you can specify a condition override to use a separate threshold for certain series. For example, a monitor might have a default threshold of>100 but
you specify an override threshold of >50 where the label key/value pair is
cluster=production.
You can specify any label as a matcher for a monitor condition override. If no
override matches the defined conditions, Observability Platform applies the default
conditions. Additionally:
- Overrides must specify at least one matcher, and meet every matcher condition to apply the override.
- Observability Platform evaluates overrides in the listed order. When an override matches, the remaining overrides and defaults are ignored.
- Overrides don’t inherit any properties from the default conditions. For example, if
the default policy route specifies
warnandcriticalnotifiers but the override specifies onlycriticalnotifiers, the notifier doesn’t sendwarnnotifications. - You can’t use
NOT_EXISTSorSIGNAL_NOT_EXISTSon override conditions; use them only on default conditions.
Users can modify Terraform-managed resources only by using Terraform.
Learn more.
- Web
- Terraform
- In the navigation menu, select Alerting > Monitors.
- Click the name of the monitor you want to specify an override for.
- In the action menu, click the three vertical dots icon and select Edit monitor. This opens a sidebar where you can edit the monitor’s properties.
- In the Condition Override section, click the plus icon to display the override fields.
- Select Exact or Regex as the matcher type, and enter the key/value pair to match on for the override.
- Select Critical or Warn as the override severity.
- Define the match condition and sustain duration. Optional. Set a Resolve threshold using the same rules as default conditions.
- Click Save to apply the override changes.
Delete a monitor
Select from the following methods to delete monitors.Users can modify Terraform-managed resources only by using Terraform.
Learn more.
- Web
- Chronoctl
- Terraform
- API
To delete a monitor:
- In the navigation menu, select Alerting > Monitors.
- Click the name of the monitor you want to delete.
- In the action menu, click the three vertical dots icon and select Edit monitor.
- In the Edit Monitor dialog, click the three vertical dots icon and select Delete.
Use annotations with monitors
Annotations link to dashboards, runbooks, related documents, and trace metrics, giving on-call engineers direct access to resources when diagnosing issues. Reference Prometheus Alertmanager variables in annotation values with the{{ .VARIABLE_NAME }} syntax. Annotations access monitor labels with
{{ .CommonLabels.LABEL }} and the alerting metric’s labels with
{{ .Labels.LABEL }}. In both patterns, replace LABEL with the label name.
Labels referenced in Alertmanager variables must be present in the alerting
time series. If a label is absent, the variable renders as empty in
notifications.
**text**), inline code (`code`), named links ([label](url)), and
plain HTTP URLs.
Annotation values can also span multiple lines using the multiline annotation
input. Each paragraph break renders as a new line in the monitor details view.
- Web
- Chronoctl
- Terraform
To add annotations to a monitor:
- Create a monitor.
-
In the Annotations section, add a description for your annotation in the
Key field, and text or links in the Value field. For example, you might
add the following key/value pairs as annotations:
With Markdown formatting enabled, annotation values support richer formatting. For example, a
Key Value summary Instance {{ $labels.instance }}is downdescription Container {{ $labels.namespace }}/{{ $labels.pod }}/{{ $labels.container }}terminated with{{ $labels.reason }}.runbook http://default-runbookdescriptionvalue might look like:

