From 0e72e3d79e4f4c19c7f8c23ab6a8ccc07a3db9c7 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Sun, 5 Jan 2025 21:38:17 +0100 Subject: [PATCH 01/10] New Script: Prometheus Alertmanager --- ct/prometheus-alertmanager.sh | 68 ++++++++++++++++++++++ install/prometheus-alertmanager-install.sh | 62 ++++++++++++++++++++ json/prometheus-alertmanager.json | 34 +++++++++++ 3 files changed, 164 insertions(+) create mode 100644 ct/prometheus-alertmanager.sh create mode 100644 install/prometheus-alertmanager-install.sh create mode 100644 json/prometheus-alertmanager.json diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh new file mode 100644 index 00000000..5ac9f7a5 --- /dev/null +++ b/ct/prometheus-alertmanager.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 tteck +# Author: Andy Grunwald (andygrunwald) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://prometheus.io/ + +# App Default Values +APP="Prometheus-Alertmanager" +var_tags="monitoring,alerting" +var_cpu="1" +var_ram="1024" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/prometheus-alertmanager.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop prometheus-alertmanager + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to ${RELEASE}" + wget -q https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz + tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz + cd alertmanager-${RELEASE}.linux-amd64 + cp -rf alertmanager amtool /usr/local/bin/ + cd ~ + rm -rf alertmanager-${RELEASE}.linux-amd64 alertmanager-${RELEASE}.linux-amd64.tar.gz + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" + + msg_info "Starting ${APP}" + systemctl start prometheus-alertmanager + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9093${CL}" \ No newline at end of file diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh new file mode 100644 index 00000000..e6b5c700 --- /dev/null +++ b/install/prometheus-alertmanager-install.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 tteck +# Author: Andy Grunwald (andygrunwald) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y curl +$STD apt-get install -y sudo +msg_ok "Installed Dependencies" + +msg_info "Installing Prometheus Alertmanager" +RELEASE=$(curl -s https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +mkdir -p /etc/alertmanager +mkdir -p /var/lib/alertmanager +wget -q https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz +tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz +cd alertmanager-${RELEASE}.linux-amd64 +mv alertmanager amtool /usr/local/bin/ +mv alertmanager.yml /etc/alertmanager/alertmanager.yml +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Prometheus Alertmanager" + +msg_info "Creating Service" +service_path="/etc/systemd/system/prometheus-alertmanager.service" +echo "[Unit] +Description=Prometheus Alertmanager +Wants=network-online.target +After=network-online.target + +[Service] +User=root +Restart=always +Type=simple +ExecStart=/usr/local/bin/alertmanager \ + --config.file=/etc/alertmanager/alertmanager.yml \ + --storage.path=/var/lib/alertmanager/ \ + --web.listen-address=0.0.0.0:9093 +ExecReload=/bin/kill -HUP \$MAINPID + +[Install] +WantedBy=multi-user.target" >$service_path +systemctl enable -q --now prometheus-alertmanager +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +rm -rf ../alertmanager-${RELEASE}.linux-amd64 ../alertmanager-${RELEASE}.linux-amd64.tar.gz +msg_ok "Cleaned" diff --git a/json/prometheus-alertmanager.json b/json/prometheus-alertmanager.json new file mode 100644 index 00000000..e132741f --- /dev/null +++ b/json/prometheus-alertmanager.json @@ -0,0 +1,34 @@ +{ + "name": "Prometheus Alertmanager", + "slug": "prometheus-alertmanager", + "categories": [ + 7 + ], + "date_created": "2025-01-05", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9093, + "documentation": "https://prometheus.io/docs/alerting/latest/overview/", + "website": "https://prometheus.io/", + "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/prometheus.svg", + "description": "Alerting with Prometheus is separated into two parts. Alerting rules in Prometheus servers send alerts to an Alertmanager. The Alertmanager then manages those alerts, including silencing, inhibition, aggregation and sending out notifications via methods such as email, on-call notification systems, and chat platforms.", + "install_methods": [ + { + "type": "default", + "script": "ct/prometheus-alertmanager.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 2, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From 17ed51797234f5ef33bdaf80007bc9f6e2e34869 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 07:44:00 +0100 Subject: [PATCH 02/10] Alertmanager: Append v before Release-Version --- ct/prometheus-alertmanager.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh index 5ac9f7a5..a09f5458 100644 --- a/ct/prometheus-alertmanager.sh +++ b/ct/prometheus-alertmanager.sh @@ -38,7 +38,7 @@ function update_script() { systemctl stop prometheus-alertmanager msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to v${RELEASE}" wget -q https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz cd alertmanager-${RELEASE}.linux-amd64 From ef7c9d108771f9fa70d24d3c2166c9bd6585f893 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 07:46:36 +0100 Subject: [PATCH 03/10] Alertmanager: Switch to `/opt` before updating release --- ct/prometheus-alertmanager.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh index a09f5458..3407ed5a 100644 --- a/ct/prometheus-alertmanager.sh +++ b/ct/prometheus-alertmanager.sh @@ -39,11 +39,11 @@ function update_script() { msg_ok "Stopped ${APP}" msg_info "Updating ${APP} to v${RELEASE}" + cd /opt wget -q https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz cd alertmanager-${RELEASE}.linux-amd64 cp -rf alertmanager amtool /usr/local/bin/ - cd ~ rm -rf alertmanager-${RELEASE}.linux-amd64 alertmanager-${RELEASE}.linux-amd64.tar.gz echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP} to ${RELEASE}" From ac87b8e207d7fa56ff21cb7f2209d832c25787d9 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 10:48:54 +0100 Subject: [PATCH 04/10] Alertmanager: Split `var_tags` by `;` --- ct/prometheus-alertmanager.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh index 3407ed5a..b8f4c5b8 100644 --- a/ct/prometheus-alertmanager.sh +++ b/ct/prometheus-alertmanager.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Prometheus-Alertmanager" -var_tags="monitoring,alerting" +var_tags="monitoring;alerting" var_cpu="1" var_ram="1024" var_disk="2" From 0b1778c1b4c6d0862a83a89f4806b838ef1758d9 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 17:04:36 +0100 Subject: [PATCH 05/10] Alertmanager: Change installation of curl, sudo and mc to a oneliner Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- install/prometheus-alertmanager-install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh index e6b5c700..1de0f4a6 100644 --- a/install/prometheus-alertmanager-install.sh +++ b/install/prometheus-alertmanager-install.sh @@ -14,8 +14,10 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo +$STD apt-get install -y \ + curl \ + sudo \ + mc msg_ok "Installed Dependencies" msg_info "Installing Prometheus Alertmanager" From 432d12e8e4282e06348599577f31a12118350101 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 17:04:02 +0100 Subject: [PATCH 06/10] Alertmanager: Set correct copyright --- ct/prometheus-alertmanager.sh | 2 +- install/prometheus-alertmanager-install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh index b8f4c5b8..90858dac 100644 --- a/ct/prometheus-alertmanager.sh +++ b/ct/prometheus-alertmanager.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2025 tteck +# Copyright (c) 2021-2025 community-scripts ORG # Author: Andy Grunwald (andygrunwald) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prometheus.io/ diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh index 1de0f4a6..824bba3d 100644 --- a/install/prometheus-alertmanager-install.sh +++ b/install/prometheus-alertmanager-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2025 tteck +# Copyright (c) 2021-2025 community-scripts ORG # Author: Andy Grunwald (andygrunwald) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE From 51a5e4362eb85d7a743da2c28d46e12fcfce59a4 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 17:07:02 +0100 Subject: [PATCH 07/10] Alertmanager: Change the way how the systemd unit file is written to disk Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- install/prometheus-alertmanager-install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh index 824bba3d..10d20c7b 100644 --- a/install/prometheus-alertmanager-install.sh +++ b/install/prometheus-alertmanager-install.sh @@ -33,7 +33,7 @@ echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Prometheus Alertmanager" msg_info "Creating Service" -service_path="/etc/systemd/system/prometheus-alertmanager.service" +cat </etc/systemd/system/prometheus-alertmanager.service echo "[Unit] Description=Prometheus Alertmanager Wants=network-online.target @@ -50,7 +50,8 @@ ExecStart=/usr/local/bin/alertmanager \ ExecReload=/bin/kill -HUP \$MAINPID [Install] -WantedBy=multi-user.target" >$service_path +WantedBy=multi-user.target" +EOF systemctl enable -q --now prometheus-alertmanager msg_ok "Created Service" From 87c4a50069848178e3f0efb2aa71517561198a17 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 17:09:41 +0100 Subject: [PATCH 08/10] Alertmanager: Changed the way on how we move and delete files --- install/prometheus-alertmanager-install.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh index 10d20c7b..524b7edb 100644 --- a/install/prometheus-alertmanager-install.sh +++ b/install/prometheus-alertmanager-install.sh @@ -26,9 +26,8 @@ mkdir -p /etc/alertmanager mkdir -p /var/lib/alertmanager wget -q https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz -cd alertmanager-${RELEASE}.linux-amd64 -mv alertmanager amtool /usr/local/bin/ -mv alertmanager.yml /etc/alertmanager/alertmanager.yml +mv alertmanager-${RELEASE}.linux-amd64/alertmanager alertmanager-${RELEASE}.linux-amd64/amtool /usr/local/bin/ +mv alertmanager-${RELEASE}.linux-amd64/alertmanager.yml /etc/alertmanager/alertmanager.yml echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Prometheus Alertmanager" @@ -61,5 +60,5 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -rm -rf ../alertmanager-${RELEASE}.linux-amd64 ../alertmanager-${RELEASE}.linux-amd64.tar.gz +rm -rf alertmanager-${RELEASE}.linux-amd64 alertmanager-${RELEASE}.linux-amd64.tar.gz msg_ok "Cleaned" From 48659bd27f008e50e74028fb5da9e1ebe2c13362 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 17:11:56 +0100 Subject: [PATCH 09/10] Alertmanager: Make files executable --- ct/prometheus-alertmanager.sh | 0 install/prometheus-alertmanager-install.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ct/prometheus-alertmanager.sh mode change 100644 => 100755 install/prometheus-alertmanager-install.sh diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh old mode 100644 new mode 100755 diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh old mode 100644 new mode 100755 From 4e8c55cbdbc3c5600d790c16c1e6f40c9a8a3fdd Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 6 Jan 2025 20:44:43 +0100 Subject: [PATCH 10/10] Alertmanager: Set correct license and source header --- install/prometheus-alertmanager-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh index 524b7edb..3ce9dc0a 100755 --- a/install/prometheus-alertmanager-install.sh +++ b/install/prometheus-alertmanager-install.sh @@ -2,8 +2,8 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: Andy Grunwald (andygrunwald) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://prometheus.io/ source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color