From 62fa823e3ef22062a9a155d4a89b807393550248 Mon Sep 17 00:00:00 2001 From: Frederic Branczyk <fbranczyk@gmail.com> Date: Thu, 7 Jun 2018 11:08:12 +0200 Subject: [PATCH] kube-prometheus: Add docs on how to set Alertmanager configuration --- README.md | 44 +++++++++++++++++++ examples/alertmanager-config-external.jsonnet | 7 +++ examples/alertmanager-config.jsonnet | 22 ++++++++++ examples/alertmanager-config.yaml | 15 +++++++ .../alertmanager/alertmanager.libsonnet | 19 ++++++-- manifests/alertmanager-secret.yaml | 2 +- 6 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 examples/alertmanager-config-external.jsonnet create mode 100644 examples/alertmanager-config.jsonnet create mode 100644 examples/alertmanager-config.yaml diff --git a/README.md b/README.md index 0ff7e201..89686cf4 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ This stack is meant for cluster monitoring, so it is pre-configured to collect m * [Compiling](#compiling) * [Configuration](#configuration) * [Customization](#customization) + * [Alertmanager configuration](#alertmanager-configuration) * [Customizing Prometheus alerting/recording rules and Grafana dashboards](#customizing-prometheus-alertingrecording-rules-and-grafana-dashboards) * [Exposing Prometheus/Alermanager/Grafana via Ingress](#exposing-prometheusalermanagergrafana-via-ingress) * [Minikube Example](#minikube-example) @@ -242,6 +243,49 @@ local daemonset = k.apps.v1beta2.daemonSet; }).nodeExporter.daemonset ``` +### Alertmanager configuration + +The Alertmanager configuration is located in the `_config.alertmanager.config` configuration field. In order to set a custom Alertmanager configuration simply set this field. + +[embedmd]:# (examples/alertmanager-config.jsonnet) +```jsonnet +((import 'kube-prometheus/kube-prometheus.libsonnet') + { + _config+:: { + alertmanager+: { + config: ||| + global: + resolve_timeout: 10m + route: + group_by: ['job'] + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: 'null' + routes: + - match: + alertname: DeadMansSwitch + receiver: 'null' + receivers: + - name: 'null' + |||, + }, + }, + }).alertmanager.secret +``` + +In the above example the configuration has been inlined, but can just as well be an external file imported in jsonnet via the `importstr` function. + +[embedmd]:# (examples/alertmanager-config-external.jsonnet) +```jsonnet +((import 'kube-prometheus/kube-prometheus.libsonnet') + { + _config+:: { + alertmanager+: { + config: importstr 'alertmanager-config.yaml', + }, + }, + }).alertmanager.secret +``` + ### Customizing Prometheus alerting/recording rules and Grafana dashboards See [developing Prometheus rules and Grafana dashboards](docs/developing-prometheus-rules-and-grafana-dashboards.md) guide. diff --git a/examples/alertmanager-config-external.jsonnet b/examples/alertmanager-config-external.jsonnet new file mode 100644 index 00000000..c2b34cca --- /dev/null +++ b/examples/alertmanager-config-external.jsonnet @@ -0,0 +1,7 @@ +((import 'kube-prometheus/kube-prometheus.libsonnet') + { + _config+:: { + alertmanager+: { + config: importstr 'alertmanager-config.yaml', + }, + }, + }).alertmanager.secret diff --git a/examples/alertmanager-config.jsonnet b/examples/alertmanager-config.jsonnet new file mode 100644 index 00000000..162104d7 --- /dev/null +++ b/examples/alertmanager-config.jsonnet @@ -0,0 +1,22 @@ +((import 'kube-prometheus/kube-prometheus.libsonnet') + { + _config+:: { + alertmanager+: { + config: ||| + global: + resolve_timeout: 10m + route: + group_by: ['job'] + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: 'null' + routes: + - match: + alertname: DeadMansSwitch + receiver: 'null' + receivers: + - name: 'null' + |||, + }, + }, + }).alertmanager.secret diff --git a/examples/alertmanager-config.yaml b/examples/alertmanager-config.yaml new file mode 100644 index 00000000..78c65b64 --- /dev/null +++ b/examples/alertmanager-config.yaml @@ -0,0 +1,15 @@ +# external alertmanager yaml +global: + resolve_timeout: 10m +route: + group_by: ['job'] + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: 'null' + routes: + - match: + alertname: DeadMansSwitch + receiver: 'null' +receivers: +- name: 'null' diff --git a/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet b/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet index 473f89d3..27bc2398 100644 --- a/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet +++ b/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet @@ -1,7 +1,5 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet'; -local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by: ['job']\n group_wait: 30s\n group_interval: 5m\n repeat_interval: 12h\n receiver: 'null'\n routes:\n - match:\n alertname: DeadMansSwitch\n receiver: 'null'\nreceivers:\n- name: 'null'\n"; - { _config+:: { namespace: 'default', @@ -16,7 +14,22 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by alertmanager+:: { name: $._config.alertmanager.name, - config: alertmanagerConfig, + config: ||| + global: + resolve_timeout: 5m + route: + group_by: ['job'] + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: 'null' + routes: + - match: + alertname: DeadMansSwitch + receiver: 'null' + receivers: + - name: 'null' + |||, replicas: 3, }, }, diff --git a/manifests/alertmanager-secret.yaml b/manifests/alertmanager-secret.yaml index 07155d97..4a143fbb 100644 --- a/manifests/alertmanager-secret.yaml +++ b/manifests/alertmanager-secret.yaml @@ -1,6 +1,6 @@ apiVersion: v1 data: - alertmanager.yaml: Cmdsb2JhbDoKICByZXNvbHZlX3RpbWVvdXQ6IDVtCnJvdXRlOgogIGdyb3VwX2J5OiBbJ2pvYiddCiAgZ3JvdXBfd2FpdDogMzBzCiAgZ3JvdXBfaW50ZXJ2YWw6IDVtCiAgcmVwZWF0X2ludGVydmFsOiAxMmgKICByZWNlaXZlcjogJ251bGwnCiAgcm91dGVzOgogIC0gbWF0Y2g6CiAgICAgIGFsZXJ0bmFtZTogRGVhZE1hbnNTd2l0Y2gKICAgIHJlY2VpdmVyOiAnbnVsbCcKcmVjZWl2ZXJzOgotIG5hbWU6ICdudWxsJwo= + alertmanager.yaml: Z2xvYmFsOgogIHJlc29sdmVfdGltZW91dDogNW0Kcm91dGU6CiAgZ3JvdXBfYnk6IFsnam9iJ10KICBncm91cF93YWl0OiAzMHMKICBncm91cF9pbnRlcnZhbDogNW0KICByZXBlYXRfaW50ZXJ2YWw6IDEyaAogIHJlY2VpdmVyOiAnbnVsbCcKICByb3V0ZXM6CiAgLSBtYXRjaDoKICAgICAgYWxlcnRuYW1lOiBEZWFkTWFuc1N3aXRjaAogICAgcmVjZWl2ZXI6ICdudWxsJwpyZWNlaXZlcnM6Ci0gbmFtZTogJ251bGwnCg== kind: Secret metadata: name: alertmanager-main -- GitLab