<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Explore Alerting on Grafana Labs</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/</link><description>Recent content in Explore Alerting on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v9.4/alerting/fundamentals/index.xml" rel="self" type="application/rss+xml"/><item><title>Data sources</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/data-source-alerting/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/data-source-alerting/</guid><content><![CDATA[&lt;h1 id=&#34;data-sources&#34;&gt;Data sources&lt;/h1&gt;
&lt;p&gt;There are a number of data sources that are compatible with Grafana Alerting. Each data source is supported by a plugin. You can use one of the built-in data sources listed below, use &lt;a href=&#34;/grafana/plugins/?type=datasource&#34;&gt;external data source plugins&lt;/a&gt;, or create your own data source plugin.&lt;/p&gt;
&lt;p&gt;If you are creating your own data source plugin, make sure it is a backend plugin as Grafana Alerting requires this in order to be able to evaluate rules using the data source. Frontend data sources are not supported, because the evaluation engine runs on the backend.&lt;/p&gt;
&lt;p&gt;Specifying { &amp;ldquo;alerting&amp;rdquo;: true, “backend”: true } in the plugin.json file indicates that the data source plugin is compatible with Grafana Alerting and includes the backend data-fetching code. For more information, refer to &lt;a href=&#34;/tutorials/build-a-data-source-backend-plugin/&#34;&gt;Build a data source backend plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These are the data sources that are compatible with and supported by Grafana Alerting.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/aws-cloudwatch/&#34;&gt;AWS CloudWatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/azuremonitor/&#34;&gt;Azure Monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/elasticsearch/&#34;&gt;Elasticsearch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/google-cloud-monitoring/&#34;&gt;Google Cloud Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/graphite/&#34;&gt;Graphite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/influxdb/&#34;&gt;InfluxDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/loki/&#34;&gt;Loki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/mssql/&#34;&gt;Microsoft SQL Server MSSQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/mysql/&#34;&gt;MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/opentsdb/&#34;&gt;Open TSDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/postgres/&#34;&gt;PostgreSQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/prometheus/&#34;&gt;Prometheus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/jaeger/&#34;&gt;Jaeger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/zipkin/&#34;&gt;Zipkin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/tempo/&#34;&gt;Tempo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/testdata/&#34;&gt;Testdata&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;useful-links&#34;&gt;Useful links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/&#34;&gt;Grafana data sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/datasources/add-a-data-source/&#34;&gt;Add a data source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="data-sources">Data sources&lt;/h1>
&lt;p>There are a number of data sources that are compatible with Grafana Alerting. Each data source is supported by a plugin. You can use one of the built-in data sources listed below, use &lt;a href="/grafana/plugins/?type=datasource">external data source plugins&lt;/a>, or create your own data source plugin.&lt;/p></description></item><item><title>Alert rules</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/alert-rules/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/alert-rules/</guid><content><![CDATA[&lt;h1 id=&#34;about-alert-rules&#34;&gt;About alert rules&lt;/h1&gt;
&lt;p&gt;An alerting rule is a set of evaluation criteria that determines whether an alert instance will fire. The rule consists of one or more queries and expressions, a condition, the frequency of evaluation, and optionally, the duration over which the condition is met.&lt;/p&gt;
&lt;p&gt;While queries and expressions select the data set to evaluate, a condition sets the threshold that an alert must meet or exceed to create an alert.&lt;/p&gt;
&lt;p&gt;An interval specifies how frequently an alerting rule is evaluated. Duration, when configured, indicates how long a condition must be met. The alert rules can also define alerting behavior in the absence of data.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;alert-rule-types/&#34;&gt;Alert rule types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;alert-instances/&#34;&gt;Alert instances&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;organising-alerts/&#34;&gt;Organising alert rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../annotation-label/&#34;&gt;Annotation and labels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="about-alert-rules">About alert rules&lt;/h1>
&lt;p>An alerting rule is a set of evaluation criteria that determines whether an alert instance will fire. The rule consists of one or more queries and expressions, a condition, the frequency of evaluation, and optionally, the duration over which the condition is met.&lt;/p></description></item><item><title>Alerting on numeric data</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/evaluate-grafana-alerts/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/evaluate-grafana-alerts/</guid><content><![CDATA[&lt;h1 id=&#34;alerting-on-numeric-data&#34;&gt;Alerting on numeric data&lt;/h1&gt;
&lt;p&gt;This topic describes how Grafana managed alerts are evaluated by the backend engine as well as how Grafana handles alerting on numeric rather than time series data.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#alerting-on-numeric-data&#34;&gt;Alerting on numeric data&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#alert-evaluation&#34;&gt;Alert evaluation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#metrics-from-the-alerting-engine&#34;&gt;Metrics from the alerting engine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#alerting-on-numeric-data-1&#34;&gt;Alerting on numeric data&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#tabular-data&#34;&gt;Tabular Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#example&#34;&gt;Example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;alert-evaluation&#34;&gt;Alert evaluation&lt;/h2&gt;
&lt;p&gt;Grafana managed alerts query the following backend data sources that have alerting enabled:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;built-in data sources or those developed and maintained by Grafana: &lt;code&gt;Graphite&lt;/code&gt;, &lt;code&gt;Prometheus&lt;/code&gt;, &lt;code&gt;Loki&lt;/code&gt;, &lt;code&gt;InfluxDB&lt;/code&gt;, &lt;code&gt;Elasticsearch&lt;/code&gt;,
&lt;code&gt;Google Cloud Monitoring&lt;/code&gt;, &lt;code&gt;Cloudwatch&lt;/code&gt;, &lt;code&gt;Azure Monitor&lt;/code&gt;, &lt;code&gt;MySQL&lt;/code&gt;, &lt;code&gt;PostgreSQL&lt;/code&gt;, &lt;code&gt;MSSQL&lt;/code&gt;, &lt;code&gt;OpenTSDB&lt;/code&gt;, &lt;code&gt;Oracle&lt;/code&gt;, and &lt;code&gt;Azure Monitor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;community developed backend data sources with alerting enabled (&lt;code&gt;backend&lt;/code&gt; and &lt;code&gt;alerting&lt;/code&gt; properties are set in the &lt;a href=&#34;/developers/plugin-tools/reference-plugin-json&#34;&gt;plugin.json&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;metrics-from-the-alerting-engine&#34;&gt;Metrics from the alerting engine&lt;/h3&gt;
&lt;p&gt;The alerting engine publishes some internal metrics about itself. You can read more about how Grafana publishes &lt;a href=&#34;/docs/grafana/latest/setup-grafana/set-up-grafana-monitoring/&#34;&gt;internal metrics&lt;/a&gt;.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Metric Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_alerts&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;gauge&lt;/td&gt;
              &lt;td&gt;How many alerts by state&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_request_duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;histogram&lt;/td&gt;
              &lt;td&gt;Histogram of requests to the Alerting API&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_active_configurations&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;gauge&lt;/td&gt;
              &lt;td&gt;The number of active, non default Alertmanager configurations for grafana managed alerts&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_rule_evaluations_total&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;counter&lt;/td&gt;
              &lt;td&gt;The total number of rule evaluations&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_rule_evaluation_failures_total&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;counter&lt;/td&gt;
              &lt;td&gt;The total number of rule evaluation failures&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_rule_evaluation_duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;summary&lt;/td&gt;
              &lt;td&gt;The duration for a rule to execute&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafana_alerting_rule_group_rules&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;gauge&lt;/td&gt;
              &lt;td&gt;The number of rules&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;alerting-on-numeric-data-1&#34;&gt;Alerting on numeric data&lt;/h2&gt;
&lt;p&gt;Among certain data sources numeric data that is not time series can be directly alerted on, or passed into Server Side Expressions (SSE). This allows for more processing and resulting efficiency within the data source, and it can also simplify alert rules.
When alerting on numeric data instead of time series data, there is no need to reduce each labeled time series into a single number. Instead labeled numbers are returned to Grafana instead.&lt;/p&gt;
&lt;h3 id=&#34;tabular-data&#34;&gt;Tabular Data&lt;/h3&gt;
&lt;p&gt;This feature is supported with backend data sources that query tabular data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL data sources such as MySQL, Postgres, MSSQL, and Oracle.&lt;/li&gt;
&lt;li&gt;The Azure Kusto based services: Azure Monitor (Logs), Azure Monitor (Azure Resource Graph), and Azure Data Explorer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A query with Grafana managed alerts or SSE is considered numeric with these data sources, if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &amp;ldquo;Format AS&amp;rdquo; option is set to &amp;ldquo;Table&amp;rdquo; in the data source query.&lt;/li&gt;
&lt;li&gt;The table response returned to Grafana from the query includes only one numeric (e.g. int, double, float) column, and optionally additional string columns.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If there are string columns then those columns become labels. The name of column becomes the label name, and the value for each row becomes the value of the corresponding label. If multiple rows are returned, then each row should be uniquely identified their labels.&lt;/p&gt;
&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;
&lt;p&gt;For a MySQL table called &amp;ldquo;DiskSpace&amp;rdquo;:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Host&lt;/th&gt;
              &lt;th&gt;Disk&lt;/th&gt;
              &lt;th&gt;PercentFree&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2021-June-7&lt;/td&gt;
              &lt;td&gt;web1&lt;/td&gt;
              &lt;td&gt;/etc&lt;/td&gt;
              &lt;td&gt;3&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2021-June-7&lt;/td&gt;
              &lt;td&gt;web2&lt;/td&gt;
              &lt;td&gt;/var&lt;/td&gt;
              &lt;td&gt;4&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2021-June-7&lt;/td&gt;
              &lt;td&gt;web3&lt;/td&gt;
              &lt;td&gt;/var&lt;/td&gt;
              &lt;td&gt;8&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&amp;hellip;&lt;/td&gt;
              &lt;td&gt;&amp;hellip;&lt;/td&gt;
              &lt;td&gt;&amp;hellip;&lt;/td&gt;
              &lt;td&gt;&amp;hellip;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;You can query the data filtering on time, but without returning the time series to Grafana. For example, an alert that would trigger per Host, Disk when there is less than 5% free space:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;SQL&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-sql&#34;&gt;SELECT Host, Disk, CASE WHEN PercentFree &amp;lt; 5.0 THEN PercentFree ELSE 0 END FROM (
  SELECT
      Host,
      Disk,
      Avg(PercentFree)
  FROM DiskSpace
  Group By
    Host,
    Disk
  Where __timeFilter(Time)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This query returns the following Table response to Grafana:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Host&lt;/th&gt;
              &lt;th&gt;Disk&lt;/th&gt;
              &lt;th&gt;PercentFree&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;web1&lt;/td&gt;
              &lt;td&gt;/etc&lt;/td&gt;
              &lt;td&gt;3&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;web2&lt;/td&gt;
              &lt;td&gt;/var&lt;/td&gt;
              &lt;td&gt;4&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;web3&lt;/td&gt;
              &lt;td&gt;/var&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;When this query is used as the &lt;strong&gt;condition&lt;/strong&gt; in an alert rule, then the non-zero will be alerting. As a result, three alert instances are produced:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Labels&lt;/th&gt;
              &lt;th&gt;Status&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;{Host=web1,disk=/etc}&lt;/td&gt;
              &lt;td&gt;Alerting&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;{Host=web2,disk=/var}&lt;/td&gt;
              &lt;td&gt;Alerting&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;{Host=web3,disk=/var}&lt;/td&gt;
              &lt;td&gt;Normal&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="alerting-on-numeric-data">Alerting on numeric data&lt;/h1>
&lt;p>This topic describes how Grafana managed alerts are evaluated by the backend engine as well as how Grafana handles alerting on numeric rather than time series data.&lt;/p></description></item><item><title>Labels and annotations</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/annotation-label/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/annotation-label/</guid><content><![CDATA[&lt;h1 id=&#34;labels-and-annotations&#34;&gt;Labels and annotations&lt;/h1&gt;
&lt;p&gt;Labels and annotations contain information about an alert. Both labels and annotations have the same structure: a set of named values; however their intended uses are different. An example of label, or the equivalent annotation, might be &lt;code&gt;alertname=&amp;quot;test&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The main difference between a label and an annotation is that labels are used to differentiate an alert from all other alerts, while annotations are used to add additional information to an existing alert.&lt;/p&gt;
&lt;p&gt;For example, consider two high CPU alerts: one for &lt;code&gt;server1&lt;/code&gt; and another for &lt;code&gt;server2&lt;/code&gt;. In such an example we might have a label called &lt;code&gt;server&lt;/code&gt; where the first alert has the label &lt;code&gt;server=&amp;quot;server1&amp;quot;&lt;/code&gt; and the second alert has the label &lt;code&gt;server=&amp;quot;server2&amp;quot;&lt;/code&gt;. However, we might also want to add a description to each alert such as &lt;code&gt;&amp;quot;The CPU usage for server1 is above 75%.&amp;quot;&lt;/code&gt;, where &lt;code&gt;server1&lt;/code&gt; and &lt;code&gt;75%&lt;/code&gt; are replaced with the name and CPU usage of the server (please refer to the documentation on &lt;a href=&#34;variables-label-annotation/&#34;&gt;templating labels and annotations&lt;/a&gt; for how to do this). This kind of description would be more suitable as an annotation.&lt;/p&gt;
&lt;h2 id=&#34;labels&#34;&gt;Labels&lt;/h2&gt;
&lt;p&gt;Labels contain information that identifies an alert. An example of a label might be &lt;code&gt;server=server1&lt;/code&gt;. Each alert can have more than one label, and the complete set of labels for an alert is called its label set. It is this label set that identifies the alert.&lt;/p&gt;
&lt;p&gt;For example, an alert might have the label set &lt;code&gt;{alertname=&amp;quot;High CPU usage&amp;quot;,server=&amp;quot;server1&amp;quot;}&lt;/code&gt; while another alert might have the label set &lt;code&gt;{alertname=&amp;quot;High CPU usage&amp;quot;,server=&amp;quot;server2&amp;quot;}&lt;/code&gt;. These are two separate alerts because although their &lt;code&gt;alertname&lt;/code&gt; labels are the same, their &lt;code&gt;server&lt;/code&gt; labels are different.&lt;/p&gt;
&lt;p&gt;The label set for an alert is a combination of the labels from the datasource, custom labels from the alert rule, and a number of reserved labels such as &lt;code&gt;alertname&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;custom-labels&#34;&gt;Custom Labels&lt;/h3&gt;
&lt;p&gt;Custom labels are additional labels from the alert rule. Like annotations, custom labels must have a name, and their value can contain a combination of text and template code that is evaluated when an alert is fired. Documentation on how to template custom labels can be found &lt;a href=&#34;variables-label-annotation/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When using custom labels with templates it is important to make sure that the label value does not change between consecutive evaluations of the alert rule as this will end up creating large numbers of distinct alerts. However, it is OK for the template to produce different label values for different alerts. For example, do not put the value of the query in a custom label as this will end up creating a new set of alerts each time the value changes. Instead use annotations.&lt;/p&gt;
&lt;p&gt;It is also important to make sure that the label set for an alert does not have two or more labels with the same name. If a custom label has the same name as a label from the datasource then it will replace that label. However, should a custom label have the same name as a reserved label then the custom label will be omitted from the alert.&lt;/p&gt;
&lt;h2 id=&#34;annotations&#34;&gt;Annotations&lt;/h2&gt;
&lt;p&gt;Annotations are named pairs that add additional information to existing alerts. There are a number of suggested annotations in Grafana such as &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;runbook_url&lt;/code&gt;, &lt;code&gt;dashboardUId&lt;/code&gt; and &lt;code&gt;panelId&lt;/code&gt;. Like custom labels, annotations must have a name, and their value can contain a combination of text and template code that is evaluated when an alert is fired. If an annotation contains template code, the template is evaluated once when the alert is fired. It is not re-evaluated, even when the alert is resolved. Documentation on how to template annotations can be found &lt;a href=&#34;variables-label-annotation/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="labels-and-annotations">Labels and annotations&lt;/h1>
&lt;p>Labels and annotations contain information about an alert. Both labels and annotations have the same structure: a set of named values; however their intended uses are different. An example of label, or the equivalent annotation, might be &lt;code>alertname=&amp;quot;test&amp;quot;&lt;/code>.&lt;/p></description></item><item><title>State and health of alerting rules</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/state-and-health/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/state-and-health/</guid><content><![CDATA[&lt;h1 id=&#34;state-and-health-of-alerting-rules&#34;&gt;State and health of alerting rules&lt;/h1&gt;
&lt;p&gt;The state and health of alerting rules help you understand several key status indicators about your alerts.&lt;/p&gt;
&lt;p&gt;There are three key components: &lt;a href=&#34;#alert-rule-state&#34;&gt;alert rule state&lt;/a&gt;, &lt;a href=&#34;#alert-instance-state&#34;&gt;alert instance state&lt;/a&gt;, and &lt;a href=&#34;#alert-rule-health&#34;&gt;alert rule health&lt;/a&gt;. Although related, each component conveys subtly different information.&lt;/p&gt;
&lt;h2 id=&#34;alert-rule-state&#34;&gt;Alert rule state&lt;/h2&gt;
&lt;p&gt;An alert rule can be in either of the following states:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;State&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;None of the time series returned by the evaluation engine is in a &lt;code&gt;Pending&lt;/code&gt; or &lt;code&gt;Firing&lt;/code&gt; state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Pending&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;At least one time series returned by the evaluation engine is &lt;code&gt;Pending&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Firing&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;At least one time series returned by the evaluation engine is &lt;code&gt;Firing&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Alerts will transition first to &lt;code&gt;pending&lt;/code&gt; and then &lt;code&gt;firing&lt;/code&gt;, thus it will take at least two evaluation cycles before an alert is fired.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;alert-instance-state&#34;&gt;Alert instance state&lt;/h2&gt;
&lt;p&gt;An alert instance can be in either of the following states:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;State&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The state of an alert that is neither firing nor pending, everything is working correctly.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Pending&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The state of an alert that has been active for less than the configured threshold duration.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Alerting&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The state of an alert that has been active for longer than the configured threshold duration.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;NoData&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;No data has been received for the configured time window.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Error&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The error that occurred when attempting to evaluate an alerting rule.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;alert-rule-health&#34;&gt;Alert rule health&lt;/h2&gt;
&lt;p&gt;An alert rule can have one the following health statuses:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;State&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Ok&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;No error when evaluating an alerting rule.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Error&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;An error occurred when evaluating an alerting rule.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;NoData&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The absence of data in at least one time series returned during a rule evaluation.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;special-alerts-for-nodata-and-error&#34;&gt;Special alerts for &lt;code&gt;NoData&lt;/code&gt; and &lt;code&gt;Error&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;When evaluation of an alerting rule produces state &lt;code&gt;NoData&lt;/code&gt; or &lt;code&gt;Error&lt;/code&gt;, Grafana Alerting will generate alert instances that have the following additional labels:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Label&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;alertname&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Either &lt;code&gt;DatasourceNoData&lt;/code&gt; or &lt;code&gt;DatasourceError&lt;/code&gt; depending on the state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;datasource_uid&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The UID of the data source that caused the state.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;You can handle these alerts the same way as regular alerts by adding a silence, route to a contact point, and so on.&lt;/p&gt;
]]></content><description>&lt;h1 id="state-and-health-of-alerting-rules">State and health of alerting rules&lt;/h1>
&lt;p>The state and health of alerting rules help you understand several key status indicators about your alerts.&lt;/p>
&lt;p>There are three key components: &lt;a href="#alert-rule-state">alert rule state&lt;/a>, &lt;a href="#alert-instance-state">alert instance state&lt;/a>, and &lt;a href="#alert-rule-health">alert rule health&lt;/a>. Although related, each component conveys subtly different information.&lt;/p></description></item><item><title>Contact points</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/contact-points/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/contact-points/</guid><content><![CDATA[&lt;h1 id=&#34;contact-points&#34;&gt;Contact points&lt;/h1&gt;
&lt;p&gt;Use contact points to define how your contacts are notified when an alert rule fires. A contact point can have one or more contact point types, for example, email, slack, webhook, and so on. When an alert rule fires, a notification is sent to all contact point types listed for a contact point. Contact points can be configured for the Grafana Alertmanager as well as external alertmanagers.&lt;/p&gt;
&lt;p&gt;You can also use notification templating to customize notification messages for contact point types.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve created an OnCall contact point in the Grafana OnCall application, you can view it in the Alerting application.&lt;/p&gt;
&lt;h2 id=&#34;supported-contact-point-integrations&#34;&gt;Supported contact point integrations&lt;/h2&gt;
&lt;p&gt;The following table lists the contact point integrations supported by Grafana.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Grafana Alertmanager&lt;/th&gt;
              &lt;th&gt;Other Alertmanagers&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://www.dingtalk.com/en&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;DingDing&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;dingding&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://discord.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Discord&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;discord&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#email&#34;&gt;Email&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;email&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://hangouts.google.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Google Hangouts&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;googlechat&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://kafka.apache.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Kafka&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;kafka&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://line.me/en/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Line&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;line&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://teams.microsoft.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Microsoft Teams&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://atlassian.com/opsgenie/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Opsgenie&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;opsgenie&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://www.pagerduty.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pagerduty&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;pagerduty&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://prometheus.io&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus Alertmanager&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;prometheus-alertmanager&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://pushover.net/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pushover&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;pushover&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://docs.sensu.io/sensu-go/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Sensu Go&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;sensugo&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://slack.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Slack&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;slack&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://telegram.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Telegram&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;telegram&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://threema.ch/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Threema&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;threema&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://help.victorops.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;VictorOps&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;victorops&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#webhook&#34;&gt;Webhook&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported (&lt;a href=&#34;https://prometheus.io/docs/alerting/latest/configuration/#webhook_config&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;different format&lt;/a&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#webex&#34;&gt;Cisco Webex Teams&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;webex&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#wecom&#34;&gt;WeCom&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;wecom&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://www.zenduty.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Zenduty&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;useful-links&#34;&gt;Useful links&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;/docs/grafana/latest/alerting/manage-notifications/create-contact-point/&#34;&gt;Manage contact points&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/docs/grafana/latest/alerting/manage-notifications/template-notifications/create-notification-templates/&#34;&gt;Create and edit notification templates&lt;/a&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="contact-points">Contact points&lt;/h1>
&lt;p>Use contact points to define how your contacts are notified when an alert rule fires. A contact point can have one or more contact point types, for example, email, slack, webhook, and so on. When an alert rule fires, a notification is sent to all contact point types listed for a contact point. Contact points can be configured for the Grafana Alertmanager as well as external alertmanagers.&lt;/p></description></item><item><title>Notifications</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/notifications/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/notifications/</guid><content><![CDATA[&lt;h1 id=&#34;notifications&#34;&gt;Notifications&lt;/h1&gt;
&lt;p&gt;Grafana uses Alertmanagers to send notifications for firing and resolved alerts. Grafana has its own Alertmanager, referred to as &amp;ldquo;Grafana&amp;rdquo; in the user interface, but also supports sending notifications from other Alertmanagers too, such as the &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/alertmanager/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus Alertmanager&lt;/a&gt;. The Grafana Alertmanager uses notification policies and contact points to configure how and where a notification is sent; how often a notification should be sent; and whether alerts should all be sent in the same notification, sent in grouped notifications based on a set of labels, or as separate notifications.&lt;/p&gt;
&lt;h2 id=&#34;notification-policies&#34;&gt;Notification policies&lt;/h2&gt;
&lt;p&gt;Notification policies control when and where notifications are sent. A notification policy can choose to send all alerts together in the same notification, send alerts in grouped notifications based on a set of labels, or send alerts as separate notifications. You can configure each notification policy to control how often notifications should be sent as well as having one or more mute timings to inhibit notifications at certain times of the day and on certain days of the week.&lt;/p&gt;
&lt;p&gt;Notification policies are organized in a tree structure where at the root of the tree there is a notification policy called the root policy. There can be only one root policy and the root policy cannot be deleted.&lt;/p&gt;
&lt;p&gt;Specific routing policies are children of the root policy and can be used to match either all alerts or a subset of alerts based on a set of matching labels. A notification policy matches an alert when its matching labels match the labels in the alert.&lt;/p&gt;
&lt;p&gt;A specific routing policy can have its own child policies, called nested policies, which allow for additional matching of alerts. An example of a specific routing policy could be sending infrastructure alerts to the Ops team; while a child policy might send high priority alerts to Pagerduty and low priority alerts as emails.&lt;/p&gt;
&lt;p&gt;All alerts, irrespective of their labels, match the root policy. However, when the root policy receives an alert it looks at each specific routing policy and sends the alert to the first specific routing policy that matches the alert. If the specific routing policy has further child policies, then it can attempt to the match the alert against one of its nested policies. If no nested policies match the alert then the specific routing policy is the matching policy. If there are no specific routing policies, or no specific routing policies match the alert, then the root policy is the matching policy.&lt;/p&gt;
&lt;h2 id=&#34;contact-points&#34;&gt;Contact points&lt;/h2&gt;
&lt;p&gt;Contact points contain the configuration for sending notifications. A contact point is a list of integrations, each of which sends a notification to a particular email address, service or URL. Contact points can have multiple integrations of the same kind, or a combination of integrations of different kinds. For example, a contact point could contain a Pagerduty integration; an email and Slack integration; or a Pagerduty integration, a Slack integration, and two email integrations. You can also configure a contact point with no integrations; in which case no notifications are sent.&lt;/p&gt;
&lt;p&gt;A contact point cannot send notifications until it has been added to a notification policy. A notification policy can only send alerts to one contact point, but a contact point can be added to a number of notification policies at the same time. When an alert matches a notification policy, the alert is sent to the contact point in that notification policy, which then sends a notification to each integration in its configuration.&lt;/p&gt;
&lt;h3 id=&#34;supported-integrations&#34;&gt;Supported integrations&lt;/h3&gt;
&lt;p&gt;The following table contains the integrations supported in Grafana:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Grafana Alertmanager&lt;/th&gt;
              &lt;th&gt;Other Alertmanagers&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://www.dingtalk.com/en&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;DingDing&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;dingding&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://discord.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Discord&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;discord&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#email&#34;&gt;Email&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;email&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://hangouts.google.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Google Hangouts&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;googlechat&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://kafka.apache.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Kafka&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;kafka&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://line.me/en/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Line&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;line&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://teams.microsoft.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Microsoft Teams&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://atlassian.com/opsgenie/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Opsgenie&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;opsgenie&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://www.pagerduty.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pagerduty&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;pagerduty&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://prometheus.io&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus Alertmanager&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;prometheus-alertmanager&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://pushover.net/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pushover&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;pushover&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://docs.sensu.io/sensu-go/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Sensu Go&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;sensugo&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://slack.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Slack&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;slack&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://telegram.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Telegram&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;telegram&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://threema.ch/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Threema&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;threema&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://help.victorops.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;VictorOps&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;victorops&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#webhook&#34;&gt;Webhook&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported (&lt;a href=&#34;https://prometheus.io/docs/alerting/latest/configuration/#webhook_config&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;different format&lt;/a&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#webex&#34;&gt;Cisco Webex Teams&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;webex&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#wecom&#34;&gt;WeCom&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;wecom&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;https://www.zenduty.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Zenduty&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Supported&lt;/td&gt;
              &lt;td&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;templating-notifications&#34;&gt;Templating notifications&lt;/h2&gt;
&lt;p&gt;You can customize notifications with templates. For example, templates can be used to change the subject and message of an email, or the title and message of notifications sent to Slack.&lt;/p&gt;
&lt;p&gt;Templates are not limited to an individual integration or contact point, but instead can be used in a number of integrations in the same contact point and even integrations across different contact points. For example, a Grafana user can create a template called &lt;code&gt;custom_subject_or_title&lt;/code&gt; and use it for both templating subjects in emails and titles of Slack messages without having to create two separate templates.&lt;/p&gt;
&lt;p&gt;All notifications templates are written in &lt;a href=&#34;https://pkg.go.dev/text/template&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Go&amp;rsquo;s templating language&lt;/a&gt;, and are in the Contact points tab on the Alerting page.&lt;/p&gt;
&lt;h2 id=&#34;silences&#34;&gt;Silences&lt;/h2&gt;
&lt;p&gt;You can use silences to mute notifications from one or more firing rules. Silences do not stop alerts from firing or being resolved, or hide firing alerts in the user interface. A silence lasts as long as its duration which can be configured in minutes, hours, days, months or years.&lt;/p&gt;
]]></content><description>&lt;h1 id="notifications">Notifications&lt;/h1>
&lt;p>Grafana uses Alertmanagers to send notifications for firing and resolved alerts. Grafana has its own Alertmanager, referred to as &amp;ldquo;Grafana&amp;rdquo; in the user interface, but also supports sending notifications from other Alertmanagers too, such as the &lt;a href="https://prometheus.io/docs/alerting/latest/alertmanager/" target="_blank" rel="noopener noreferrer">Prometheus Alertmanager&lt;/a>. The Grafana Alertmanager uses notification policies and contact points to configure how and where a notification is sent; how often a notification should be sent; and whether alerts should all be sent in the same notification, sent in grouped notifications based on a set of labels, or as separate notifications.&lt;/p></description></item><item><title>Alerting high availability</title><link>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/high-availability/</link><pubDate>Tue, 10 Mar 2026 13:40:23 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.4/alerting/fundamentals/high-availability/</guid><content><![CDATA[&lt;h1 id=&#34;alerting-high-availability&#34;&gt;Alerting high availability&lt;/h1&gt;
&lt;p&gt;The Grafana Alerting system has two main components: a &lt;code&gt;Scheduler&lt;/code&gt; and an internal &lt;code&gt;Alertmanager&lt;/code&gt;. The &lt;code&gt;Scheduler&lt;/code&gt; evaluates your alert rules, while the internal Alertmanager manages &lt;strong&gt;routing&lt;/strong&gt; and &lt;strong&gt;grouping&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When running Grafana Alerting in high availability, the operational mode of the scheduler remains unaffected, and each Grafana instance evaluates all alerts. The operational change happens in the Alertmanager when it deduplicates alert notifications across Grafana instances.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 750px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link captioned&#34;
        href=&#34;/static/img/docs/alerting/unified/high-availability-ua.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload mb-0&#34;
          data-src=&#34;/static/img/docs/alerting/unified/high-availability-ua.png&#34;data-srcset=&#34;/static/img/docs/alerting/unified/high-availability-ua.png?w=320 320w, /static/img/docs/alerting/unified/high-availability-ua.png?w=550 550w, /static/img/docs/alerting/unified/high-availability-ua.png?w=750 750w, /static/img/docs/alerting/unified/high-availability-ua.png?w=900 900w, /static/img/docs/alerting/unified/high-availability-ua.png?w=1040 1040w, /static/img/docs/alerting/unified/high-availability-ua.png?w=1240 1240w, /static/img/docs/alerting/unified/high-availability-ua.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;High availability&#34;width=&#34;828&#34;height=&#34;262&#34;title=&#34;High availability&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/alerting/unified/high-availability-ua.png&#34;
            alt=&#34;High availability&#34;width=&#34;828&#34;height=&#34;262&#34;title=&#34;High availability&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;figcaption class=&#34;w-100p caption text-gray-13  &#34;&gt;High availability&lt;/figcaption&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The coordination between Grafana instances happens via &lt;a href=&#34;https://en.wikipedia.org/wiki/Gossip_protocol&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;a Gossip protocol&lt;/a&gt;. Alerts are not gossiped between instances and each scheduler delivers the same volume of alerts to each Alertmanager.&lt;/p&gt;
&lt;p&gt;The two types of messages gossiped between Grafana instances are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notification logs: Who (which instance) notified what (which alert).&lt;/li&gt;
&lt;li&gt;Silences: If an alert should fire or not.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The notification logs and silences are persisted in the database periodically and during a graceful Grafana shut down.&lt;/p&gt;
&lt;h2 id=&#34;useful-links&#34;&gt;Useful links&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;/docs/grafana/next/alerting/set-up/configure-high-availability/&#34;&gt;Configure alerting high availability&lt;/a&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="alerting-high-availability">Alerting high availability&lt;/h1>
&lt;p>The Grafana Alerting system has two main components: a &lt;code>Scheduler&lt;/code> and an internal &lt;code>Alertmanager&lt;/code>. The &lt;code>Scheduler&lt;/code> evaluates your alert rules, while the internal Alertmanager manages &lt;strong>routing&lt;/strong> and &lt;strong>grouping&lt;/strong>.&lt;/p></description></item></channel></rss>