<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Set up Alerting on Grafana Labs</title><link>https://grafana.com/docs/grafana/v9.5/alerting/set-up/</link><description>Recent content in Set up Alerting on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v9.5/alerting/set-up/index.xml" rel="self" type="application/rss+xml"/><item><title>Add an external Alertmanager</title><link>https://grafana.com/docs/grafana/v9.5/alerting/set-up/configure-alertmanager/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/alerting/set-up/configure-alertmanager/</guid><content><![CDATA[&lt;h1 id=&#34;add-an-external-alertmanager&#34;&gt;Add an external Alertmanager&lt;/h1&gt;
&lt;p&gt;Set up Grafana to use an external Alertmanager as a single Alertmanager to receive all of your alerts. This external Alertmanager can then be configured and administered from within Grafana itself.&lt;/p&gt;
&lt;p&gt;Once you have added the Alertmanager, you can use the Grafana Alerting UI to manage silences, contact points, and notification policies. A drop-down option in these pages allows you to switch between alertmanagers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;
Starting with Grafana 9.2, the URL configuration of external alertmanagers from the Admin tab on the Alerting page is deprecated. It will be removed in a future release.&lt;/p&gt;
&lt;p&gt;External alertmanagers should now be configured as data sources using Grafana Configuration from the main Grafana navigation menu. This enables you to manage the contact points and notification policies of external alertmanagers from within Grafana and also encrypts HTTP basic authentication credentials that were previously visible when configuring external alertmanagers by URL.&lt;/p&gt;
&lt;p&gt;To add an external Alertmanager, complete the following steps.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Connections&lt;/strong&gt; in the left-side menu.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the Connections page, search for &lt;code&gt;Alertmanager&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;strong&gt;Create a new data source&lt;/strong&gt; button.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t see this button, you may need to install the plugin, relaunch your Cloud instance, and then repeat steps 1 and 2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fill out the fields on the page, as required.&lt;/p&gt;
&lt;p&gt;If you are provisioning your data source, set the flag &lt;code&gt;handleGrafanaManagedAlerts&lt;/code&gt; in the &lt;code&gt;jsonData&lt;/code&gt; field to &lt;code&gt;true&lt;/code&gt; to send Grafana-managed alerts to this Alertmanager.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;: Prometheus, Grafana Mimir, and Cortex implementations of Alertmanager are supported. For Prometheus, contact points and notification policies are read-only in the Grafana Alerting UI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="add-an-external-alertmanager">Add an external Alertmanager&lt;/h1>
&lt;p>Set up Grafana to use an external Alertmanager as a single Alertmanager to receive all of your alerts. This external Alertmanager can then be configured and administered from within Grafana itself.&lt;/p></description></item><item><title>Provision Grafana Alerting resources</title><link>https://grafana.com/docs/grafana/v9.5/alerting/set-up/provision-alerting-resources/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/alerting/set-up/provision-alerting-resources/</guid><content><![CDATA[&lt;h1 id=&#34;provision-grafana-alerting-resources&#34;&gt;Provision Grafana Alerting resources&lt;/h1&gt;
&lt;p&gt;Alerting infrastructure is often complex, with many pieces of the pipeline that often live in different places. Scaling this across multiple teams and organizations is an especially challenging task. Grafana Alerting provisioning makes this process easier by enabling you to create, manage, and maintain your alerting data in a way that best suits your organization.&lt;/p&gt;
&lt;p&gt;There are three options to choose from:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Use file provisioning to provision your Grafana Alerting resources, such as alert rules and contact points, through files on disk.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provision your alerting resources using the Alerting Provisioning HTTP API.&lt;/p&gt;
&lt;p&gt;For more information on the Alerting Provisioning HTTP API, refer to &lt;a href=&#34;/docs/grafana/latest/developers/http_api/alerting_provisioning/&#34;&gt;Alerting provisioning API&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provision your alerting resources using Terraform.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Currently, provisioning for Grafana Alerting supports alert rules, contact points, mute timings, and templates. Provisioned alerting resources using file provisioning or Terraform can only be edited in the source that created them and not from within Grafana or any other source. For example, if you provision your alerting resources using files from disk, you cannot edit the data in Terraform or from within Grafana.&lt;/p&gt;
&lt;p&gt;To allow editing of provisioned resources in the Grafana UI, add the &lt;code&gt;X-Disable-Provenance&lt;/code&gt; header to the following requests in the API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POST /api/v1/provisioning/alert-rules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}&lt;/code&gt; (calling this endpoint will change provenance for all alert rules within the alert group)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/v1/provisioning/contact-points&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/v1/provisioning/mute-timings&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /api/v1/provisioning/policies&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /api/v1/provisioning/templates/{name}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Useful Links:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/docs/grafana/latest/administration/provisioning/&#34;&gt;Grafana provisioning&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/docs/grafana-cloud/infrastructure-as-code/terraform/&#34;&gt;Grafana Cloud provisioning&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/docs/grafana/latest/developers/http_api/alerting_provisioning/&#34;&gt;Grafana Alerting provisioning API&lt;/a&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="provision-grafana-alerting-resources">Provision Grafana Alerting resources&lt;/h1>
&lt;p>Alerting infrastructure is often complex, with many pieces of the pipeline that often live in different places. Scaling this across multiple teams and organizations is an especially challenging task. Grafana Alerting provisioning makes this process easier by enabling you to create, manage, and maintain your alerting data in a way that best suits your organization.&lt;/p></description></item><item><title>Enable alerting high availability</title><link>https://grafana.com/docs/grafana/v9.5/alerting/set-up/configure-high-availability/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/alerting/set-up/configure-high-availability/</guid><content><![CDATA[&lt;h1 id=&#34;enable-alerting-high-availability&#34;&gt;Enable alerting high availability&lt;/h1&gt;
&lt;p&gt;You can enable alerting high availability support by updating the Grafana configuration file. If you run Grafana in a Kubernetes cluster, additional steps are required. Both options are described below.
Please note that the deduplication is done for the notification, but the alert will still be evaluated on every Grafana instance. This means that events in alerting state history will be duplicated by the number of Grafana instances running.&lt;/p&gt;
&lt;h2 id=&#34;enable-alerting-high-availability-in-grafana&#34;&gt;Enable alerting high availability in Grafana&lt;/h2&gt;
&lt;h3 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h3&gt;
&lt;p&gt;Since gossiping of notifications and silences uses both TCP and UDP port &lt;code&gt;9094&lt;/code&gt;, ensure that each Grafana instance is able to accept incoming connections on these ports.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To enable high availability support:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In your custom configuration file ($WORKING_DIR/conf/custom.ini), go to the &lt;code&gt;[unified_alerting]&lt;/code&gt; section.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;[ha_peers]&lt;/code&gt; to the number of hosts for each Grafana instance in the cluster (using a format of host:port), for example, &lt;code&gt;ha_peers=10.0.0.5:9094,10.0.0.6:9094,10.0.0.7:9094&lt;/code&gt;.
You must have at least one (1) Grafana instance added to the &lt;code&gt;ha_peers&lt;/code&gt; section.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;[ha_listen_address]&lt;/code&gt; to the instance IP address using a format of &lt;code&gt;host:port&lt;/code&gt; (or the &lt;a href=&#34;https://kubernetes.io/docs/concepts/workloads/pods/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pod&amp;rsquo;s&lt;/a&gt; IP in the case of using Kubernetes).
By default, it is set to listen to all interfaces (&lt;code&gt;0.0.0.0&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;enable-alerting-high-availability-using-kubernetes&#34;&gt;Enable alerting high availability using Kubernetes&lt;/h2&gt;
&lt;p&gt;If you are using Kubernetes, you can expose the pod IP &lt;a href=&#34;https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;through an environment variable&lt;/a&gt; via the container definition.&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;Bash&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-bash&#34;&gt;env:
- name: POD_IP
  valueFrom:
    fieldRef:
      fieldPath: status.podIP&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Add the port 9094 to the Grafana deployment:&lt;/li&gt;
&lt;/ol&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;YAML&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-yaml&#34;&gt;ports:
  - containerPort: 3000
    name: http-grafana
    protocol: TCP
  - containerPort: 9094
    name: grafana-alert
    protocol: TCP&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Add the environment variables to the Grafana deployment:&lt;/li&gt;
&lt;/ol&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;YAML&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-yaml&#34;&gt;env:
  - name: POD_IP
    valueFrom:
      fieldRef:
        fieldPath: status.podIP&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Create a headless service that returns the pod IP instead of the service IP, which is what the &lt;code&gt;ha_peers&lt;/code&gt; need:&lt;/li&gt;
&lt;/ol&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;YAML&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-yaml&#34;&gt;apiVersion: v1
kind: Service
metadata:
  name: grafana-alerting
  namespace: grafana
  labels:
    app.kubernetes.io/name: grafana-alerting
    app.kubernetes.io/part-of: grafana
spec:
  type: ClusterIP
  clusterIP: &amp;#39;None&amp;#39;
  ports:
    - port: 9094
  selector:
    app: grafana&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;
&lt;p&gt;Make sure your grafana deployment has the label matching the selector, e.g. &lt;code&gt;app:grafana&lt;/code&gt;:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add in the grafana.ini:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&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;Bash&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-bash&#34;&gt;[unified_alerting]
enabled = true
ha_listen_address = &amp;#34;${POD_IP}:9094&amp;#34;
ha_peers = &amp;#34;grafana-alerting.grafana:9094&amp;#34;
ha_advertise_address = &amp;#34;${POD_IP}:9094&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="enable-alerting-high-availability">Enable alerting high availability&lt;/h1>
&lt;p>You can enable alerting high availability support by updating the Grafana configuration file. If you run Grafana in a Kubernetes cluster, additional steps are required. Both options are described below.
Please note that the deduplication is done for the notification, but the alert will still be evaluated on every Grafana instance. This means that events in alerting state history will be duplicated by the number of Grafana instances running.&lt;/p></description></item></channel></rss>