#!/bin/bash # HA Monitor cu PVE::Notify - versiune fără qdevice # Folosește sistemul nativ Proxmox cu template-uri personalizate # # TEMPLATE SYSTEM: # ================ # Acest script folosește template-uri Handlebars pentru formatarea emailurilor, # exact ca sistemul de backup Proxmox. Template-urile trebuie create în: # # /etc/pve/notification-templates/default/ # ├── ha-status-subject.txt.hbs (subject-ul emailului) # ├── ha-status-body.txt.hbs (conținutul text al emailului) # └── ha-status-body.html.hbs (opțional, versiunea HTML) # # Template-urile folosesc sintaxa Handlebars cu variabilele: # - {{ hostname }} : FQDN-ul serverului # - {{ status }} : "SUCCESSFUL" sau "FAILED" # - {{ runtime }} : timpul de execuție în secunde # - {{ details }} : detaliile verificării HA # # Pentru alte scripturi care vor să folosească sistemul de notificări Proxmox: # 1. Creați template-urile în /etc/pve/notification-templates/default/ # 2. Folosiți PVE::Notify::notify($severity, $template_name, $template_data, $fields) # 3. $template_name trebuie să corespundă cu numele fișierelor template # # PREREQUISITE: # ============= # Template-urile sunt create automat de script la prima rulare HOSTNAME=$(hostname) FQDN=$(hostname -f) DATE=$(date '+%Y-%m-%d %H:%M:%S') START_TIME=$(date +%s) # Verifică parametri înainte de execuție if [ "$1" == "--help" ] || [ "$1" == "-h" ]; then cat << 'HELP' HA Monitor Script - Proxmox High Availability Monitoring USAGE: /opt/scripts/ha-monitor.sh [OPTION] OPTIONS: (no option) Run HA check and send notification via Proxmox notification system -v, --verbose Run HA check with detailed console output --create-templates Recreate notification templates in /etc/pve/notification-templates/default/ -h, --help Display this help message DESCRIPTION: This script monitors the Proxmox HA cluster status and sends notifications using the native Proxmox notification system (PVE::Notify). It checks: - HA Services (pve-ha-lrm, pve-ha-crm) - Cluster Quorum status - Number of online cluster nodes NOTIFICATION TEMPLATES: Templates are stored in: /etc/pve/notification-templates/default/ - ha-status-subject.txt.hbs (email subject) - ha-status-body.txt.hbs (email body text) - ha-status-body.html.hbs (email body HTML) LOG FILE: /var/log/pve-ha-monitor.log EXAMPLES: # Run normal check (silent, sends notification) /opt/scripts/ha-monitor.sh # Run with verbose output /opt/scripts/ha-monitor.sh -v # Recreate email templates /opt/scripts/ha-monitor.sh --create-templates CRON SETUP: To run every 5 minutes: */5 * * * * /opt/scripts/ha-monitor.sh HELP exit 0 fi if [ "$1" == "--create-templates" ] || [ "$1" == "--templates" ]; then # Funcție pentru crearea template-urilor de notificare create_templates() { local template_dir="/etc/pve/notification-templates/default" # Creează directorul dacă nu există mkdir -p "$template_dir" echo "Creating notification templates in $template_dir..." # Template pentru subject - pentru SUCCESS cat > "$template_dir/ha-status-subject.txt.hbs" << 'EOF' {{#if (eq status "SUCCESSFUL")}}✅ HA CLUSTER OK - {{ hostname }}{{else}}🚨 HA CLUSTER ISSUES - {{ hostname }}{{/if}} EOF # Template pentru body text cat > "$template_dir/ha-status-body.txt.hbs" << 'EOF' {{#if (eq status "SUCCESSFUL")}}✅ HIGH AVAILABILITY STATUS: ALL SYSTEMS OK{{else}}🚨 HIGH AVAILABILITY CLUSTER HAS ISSUES{{/if}} Host: {{ hostname }} Check duration: {{ runtime }}s CLUSTER STATUS: {{ details }} {{#if (eq status "FAILED")}} === IMMEDIATE ACTIONS REQUIRED === 1. SSH to cluster: ssh root@{{ hostname }} 2. Check overall status: pvecm status 3. Review HA logs: journalctl -u pve-ha-lrm -u pve-ha-crm -n 20 4. Check network connectivity between nodes 5. Verify all cluster nodes are online {{else}} All HA components are functioning normally. - Cluster has proper quorum - Automatic VM migration is available - System is fully redundant {{/if}} === MANUAL SCRIPT EXECUTION === To run this HA status check manually: Basic check: /opt/scripts/ha-monitor.sh Verbose output (shows details on console): /opt/scripts/ha-monitor.sh -v Recreate email templates: /opt/scripts/ha-monitor.sh --create-templates Script location: /opt/scripts/ha-monitor.sh Log file: /var/log/pve-ha-monitor.log Total check time: {{ runtime }}s EOF # Template pentru body HTML cu font mai mare și consistent cat > "$template_dir/ha-status-body.html.hbs" << 'EOF'
Host: {{ hostname }}
Check duration: {{ runtime }}s
{{ details }}
{{#if (eq status "FAILED")}}
ssh root@{{ hostname }}pvecm statusjournalctl -u pve-ha-lrm -u pve-ha-crm -n 20Warning: Issues detected in the cluster. Immediate attention required to ensure high availability.
{{else}}All HA components are functioning normally:
To run this HA status check manually:
Basic check:
Verbose output:
Recreate templates:
Script location: /opt/scripts/ha-monitor.sh
Log file: /var/log/pve-ha-monitor.log
Total check time: {{ runtime }}s