From d4ca837790f1fa2c96da9bb4299e8dcb09e3cf25 Mon Sep 17 00:00:00 2001
From: paulfantom <pawel@krupa.net.pl>
Date: Fri, 4 Dec 2020 10:10:55 +0100
Subject: [PATCH] use alertmanager-mixin instead of alerts baked in
 kube-prometheus

---
 .../alerts/alertmanager.libsonnet             | 57 -------------------
 .../kube-prometheus/alerts/alerts.libsonnet   |  1 -
 jsonnet/kube-prometheus/jsonnetfile.json      | 10 ++++
 .../kube-prometheus/kube-prometheus.libsonnet |  3 +
 4 files changed, 13 insertions(+), 58 deletions(-)
 delete mode 100644 jsonnet/kube-prometheus/alerts/alertmanager.libsonnet

diff --git a/jsonnet/kube-prometheus/alerts/alertmanager.libsonnet b/jsonnet/kube-prometheus/alerts/alertmanager.libsonnet
deleted file mode 100644
index bcabf4d9..00000000
--- a/jsonnet/kube-prometheus/alerts/alertmanager.libsonnet
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  prometheusAlerts+:: {
-    groups+: [
-      {
-        name: 'alertmanager.rules',
-        rules: [
-          {
-            alert: 'AlertmanagerConfigInconsistent',
-            annotations: {
-              message: |||
-                The configuration of the instances of the Alertmanager cluster `{{ $labels.namespace }}/{{ $labels.service }}` are out of sync.
-                {{ range printf "alertmanager_config_hash{namespace=\"%s\",service=\"%s\"}" $labels.namespace $labels.service | query }}
-                Configuration hash for pod {{ .Labels.pod }} is "{{ printf "%.f" .Value }}"
-                {{ end }}
-              |||,
-            },
-            expr: |||
-              count by(namespace,service) (count_values by(namespace,service) ("config_hash", alertmanager_config_hash{%(alertmanagerSelector)s})) != 1
-            ||| % $._config,
-            'for': '5m',
-            labels: {
-              severity: 'critical',
-            },
-          },
-          {
-            alert: 'AlertmanagerFailedReload',
-            annotations: {
-              message: "Reloading Alertmanager's configuration has failed for {{ $labels.namespace }}/{{ $labels.pod}}.",
-            },
-            expr: |||
-              alertmanager_config_last_reload_successful{%(alertmanagerSelector)s} == 0
-            ||| % $._config,
-            'for': '10m',
-            labels: {
-              severity: 'warning',
-            },
-          },
-          {
-            alert: 'AlertmanagerMembersInconsistent',
-            annotations: {
-              message: 'Alertmanager has not found all other members of the cluster.',
-            },
-            expr: |||
-              alertmanager_cluster_members{%(alertmanagerSelector)s}
-                != on (service) GROUP_LEFT()
-              count by (service) (alertmanager_cluster_members{%(alertmanagerSelector)s})
-            ||| % $._config,
-            'for': '5m',
-            labels: {
-              severity: 'critical',
-            },
-          },
-        ],
-      },
-    ],
-  },
-}
diff --git a/jsonnet/kube-prometheus/alerts/alerts.libsonnet b/jsonnet/kube-prometheus/alerts/alerts.libsonnet
index adc46130..8733ae44 100644
--- a/jsonnet/kube-prometheus/alerts/alerts.libsonnet
+++ b/jsonnet/kube-prometheus/alerts/alerts.libsonnet
@@ -1,3 +1,2 @@
-(import 'alertmanager.libsonnet') +
 (import 'general.libsonnet') +
 (import 'node.libsonnet')
diff --git a/jsonnet/kube-prometheus/jsonnetfile.json b/jsonnet/kube-prometheus/jsonnetfile.json
index b74b034d..9663febd 100644
--- a/jsonnet/kube-prometheus/jsonnetfile.json
+++ b/jsonnet/kube-prometheus/jsonnetfile.json
@@ -83,6 +83,16 @@
       "version": "release-2.22",
       "name": "prometheus"
     },
+    {
+      "source": {
+        "git": {
+          "remote": "https://github.com/prometheus/alertmanager",
+          "subdir": "doc/alertmanager-mixin"
+        }
+      },
+      "version": "master",
+      "name": "alertmanager"
+    },
     {
       "source": {
         "git": {
diff --git a/jsonnet/kube-prometheus/kube-prometheus.libsonnet b/jsonnet/kube-prometheus/kube-prometheus.libsonnet
index 26943f12..dc4c4153 100644
--- a/jsonnet/kube-prometheus/kube-prometheus.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus.libsonnet
@@ -6,6 +6,7 @@ local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet';
 (import './node-exporter/node-exporter.libsonnet') +
 (import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') +
 (import './alertmanager/alertmanager.libsonnet') +
+(import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') +
 (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') +
 (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') +
 (import './prometheus/prometheus.libsonnet') +
@@ -160,6 +161,8 @@ local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet';
     coreDNSSelector: 'job="kube-dns"',
     podLabel: 'pod',
 
+    alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
+    alertmanagerClusterLabels: 'namespace,service',
     alertmanagerSelector: 'job="alertmanager-' + $._config.alertmanager.name + '",namespace="' + $._config.namespace + '"',
     prometheusSelector: 'job="prometheus-' + $._config.prometheus.name + '",namespace="' + $._config.namespace + '"',
     prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',
-- 
GitLab