Files
proxmox/scripts/deployment/phase2-observability.sh

45 lines
1.7 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Phase 2: Observability - Deploy Prometheus, Grafana, Loki, Alertmanager
# Usage: ./scripts/deployment/phase2-observability.sh [--config-only]
# --config-only: write config/monitoring/ (prometheus.yml, alertmanager.yml) and exit.
# See docs/08-monitoring/MONITORING_SUMMARY.md, OPERATIONAL_RUNBOOKS § Phase 2.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
CONFIG_DIR="${PROJECT_ROOT}/config/monitoring"
CONFIG_ONLY=false
[[ "${1:-}" == "--config-only" ]] && CONFIG_ONLY=true
mkdir -p "$CONFIG_DIR"
echo "Phase 2: Observability Runbook"
echo "=============================="
echo ""
echo "1. Prometheus (VMID 10200 or Docker) - scrape Besu 9545; config: scripts/monitoring/prometheus-besu-config.yml"
echo "2. Grafana (VMID 10201 or Docker) - dashboards; datasource: Prometheus"
echo "3. Loki - log aggregation"
echo "4. Alertmanager - alerts (email/Slack webhook); configure in config/monitoring/alertmanager.yml"
echo "5. Cloudflare Access - optional for Grafana"
echo ""
if $CONFIG_ONLY; then
# Write minimal Prometheus config (merge Besu targets from scripts/monitoring/prometheus-besu-config.yml)
cat > "$CONFIG_DIR/prometheus.yml" << 'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs: [{ targets: ['localhost:9090'] }]
EOF
cat > "$CONFIG_DIR/alertmanager.yml" << 'EOF'
route: { receiver: 'null' }
receivers: [{ name: 'null' }]
EOF
echo "[OK] Config written to $CONFIG_DIR (prometheus.yml, alertmanager.yml)"
exit 0
fi
echo "See: scripts/monitoring/ for existing configs. Run with --config-only to write config/monitoring/."