From 4b9794b218be93c4d156449ddc379c5014e865fa Mon Sep 17 00:00:00 2001 From: Patrick Lewis <4015312+locus313@users.noreply.github.com> Date: Sat, 10 Oct 2026 17:29:25 -0700 Subject: [PATCH 1/2] feat(monitor-cpu-load): detail the RESOLVED email with the incident peak Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- monitor-cpu-load/monitor-cpu-load.sh | 84 +++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 8 deletions(-) diff --git a/monitor-cpu-load/monitor-cpu-load.sh b/monitor-cpu-load/monitor-cpu-load.sh index 3cb294c..1d46a52 100755 --- a/monitor-cpu-load/monitor-cpu-load.sh +++ b/monitor-cpu-load/monitor-cpu-load.sh @@ -295,6 +295,7 @@ SMTP_FROM="${SMTP_FROM:-}" SAMPLES_FILE="${STATE_DIR}/samples" STATE_FILE="${STATE_DIR}/state" +PEAK_DIR="${STATE_DIR}/incident_peak" PIDFILE="${STATE_DIR}/monitor.pid" HOSTNAME_SHORT="$(hostname -s 2>/dev/null || hostname)" WORK="" @@ -409,6 +410,8 @@ load_state() { INCIDENT_START=0 LAST_ALERT_TS=0 LAST_REMINDER_TS=0 + INCIDENT_PEAK_LOAD=0 + INCIDENT_PEAK_TS=0 ALERT_SENT="false" [ -f "${STATE_FILE}" ] || return 0 @@ -425,11 +428,16 @@ load_state() { ALERT_SENT="true" fi ;; - MITIGATED_SINCE|INCIDENT_START|LAST_ALERT_TS|LAST_REMINDER_TS) + MITIGATED_SINCE|INCIDENT_START|LAST_ALERT_TS|LAST_REMINDER_TS|INCIDENT_PEAK_TS) if [[ "${value}" =~ ^[0-9]+$ ]]; then printf -v "${key}" '%s' "${value}" fi ;; + INCIDENT_PEAK_LOAD) + if [[ "${value}" =~ ^[0-9]+(\.[0-9]+)?$ ]]; then + INCIDENT_PEAK_LOAD="${value}" + fi + ;; esac done < "${STATE_FILE}" return 0 @@ -442,6 +450,8 @@ save_state() { echo "INCIDENT_START=${INCIDENT_START}" echo "LAST_ALERT_TS=${LAST_ALERT_TS}" echo "LAST_REMINDER_TS=${LAST_REMINDER_TS}" + echo "INCIDENT_PEAK_LOAD=${INCIDENT_PEAK_LOAD}" + echo "INCIDENT_PEAK_TS=${INCIDENT_PEAK_TS}" echo "ALERT_SENT=${ALERT_SENT}" } > "${STATE_FILE}.tmp" mv -f "${STATE_FILE}.tmp" "${STATE_FILE}" @@ -635,23 +645,71 @@ build_html_report() { printf '
fail2ban: banned offenders account for %s%% of attack traffic (%s of %s requests); handling threshold %s%%.
\n' \ "${HANDLED_PCT}" "${BANNED_TOTAL}" "${ATTACK_TOTAL}" "${HANDLED_PERCENT}" + print_analysis_tables "${WORK}" + printf '