From 01e99e110ffa506b511fb1ef5541dac45021a4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Mon, 29 Mar 2021 19:21:55 +0200 Subject: [PATCH] Add support for repeat interval and emails to alertmanager type --- .../files/alertmanager.yml.sh | 24 ++++++++++++++----- type/__prometheus_alertmanager/manifest | 18 ++++++++++++-- .../parameter/default/repeat-interval | 1 + .../parameter/optional | 3 +++ .../parameter/required | 1 - 5 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 type/__prometheus_alertmanager/parameter/default/repeat-interval create mode 100644 type/__prometheus_alertmanager/parameter/optional diff --git a/type/__prometheus_alertmanager/files/alertmanager.yml.sh b/type/__prometheus_alertmanager/files/alertmanager.yml.sh index 541d848..e056c81 100755 --- a/type/__prometheus_alertmanager/files/alertmanager.yml.sh +++ b/type/__prometheus_alertmanager/files/alertmanager.yml.sh @@ -28,10 +28,10 @@ route: # If an alert has successfully been sent, wait 'repeat_interval' to # resend them. - repeat_interval: 3h + repeat_interval: ${REPEAT_INTERVAL:?} # A default receiver - receiver: admin-mails + receiver: admins # All the above attributes are inherited by all child routes and can # overwritten on each. @@ -54,8 +54,20 @@ inhibit_rules: receivers: -- name: 'admin-mails' - email_configs: - - to: '${RECEIVER_EMAIL:?}' - +- name: 'admins' EOF + +if [ -n "$RECEIVER_EMAIL" ]; then + cat << EOF + email_configs: + - to: '$RECEIVER_EMAIL' + send_resolved: true +EOF +fi + +if [ -n "$RECEIVER_WEBHOOK" ]; then + cat << EOF + webhook_configs: + - url: ${RECEIVER_WEBHOOK:?} +EOF +fi diff --git a/type/__prometheus_alertmanager/manifest b/type/__prometheus_alertmanager/manifest index 522f085..615596a 100644 --- a/type/__prometheus_alertmanager/manifest +++ b/type/__prometheus_alertmanager/manifest @@ -25,8 +25,22 @@ SMTP_USER=$(cat "${__object:?}/parameter/smtp-user") SMTP_PASSWORD=$(cat "${__object:?}/parameter/smtp-password") export SMTP_SMARTHOST SMTP_USER SMTP_FROM SMTP_PASSWORD -RECEIVER_EMAIL=$(cat "${__object:?}/parameter/receiver") -export RECEIVER_EMAIL +if [ -f "${__object:?}/parameter/receiver-email" ]; then + RECEIVER_EMAIL=$(cat "${__object:?}/parameter/receiver-email") + export RECEIVER_EMAIL +fi +if [ -f "${__object:?}/parameter/receiver-webhook" ]; then + RECEIVER_WEBHOOK=$(cat "${__object:?}/parameter/receiver-webhook") + export RECEIVER_WEBHOOK +fi + +if [ -z "$RECEIVER_EMAIL" ] && [ -z "$RECEIVER_WEBHOOK" ]; then + echo "At least one receiver must be configured." >&2 + exit 1 +fi + +REPEAT_INTERVAL=$(cat "${__object:?}/parameter/repeat-interval") +export REPEAT_INTERVAL # Install Alertmanager. __package "$package" diff --git a/type/__prometheus_alertmanager/parameter/default/repeat-interval b/type/__prometheus_alertmanager/parameter/default/repeat-interval new file mode 100644 index 0000000..439cfe0 --- /dev/null +++ b/type/__prometheus_alertmanager/parameter/default/repeat-interval @@ -0,0 +1 @@ +3h diff --git a/type/__prometheus_alertmanager/parameter/optional b/type/__prometheus_alertmanager/parameter/optional new file mode 100644 index 0000000..3d80896 --- /dev/null +++ b/type/__prometheus_alertmanager/parameter/optional @@ -0,0 +1,3 @@ +repeat-interval +receiver-webhook +receiver-email diff --git a/type/__prometheus_alertmanager/parameter/required b/type/__prometheus_alertmanager/parameter/required index f906117..8109f35 100644 --- a/type/__prometheus_alertmanager/parameter/required +++ b/type/__prometheus_alertmanager/parameter/required @@ -2,4 +2,3 @@ smtp-smarthost smtp-from smtp-user smtp-password -receiver