#!/bin/bash # Advanced Prometheus Configuration Script # This script sets up a production-ready Prometheus configuration # including alerting rules, rule files, and Alertmanager integration. set -e CONFIG_DIR="/etc/prometheus" RULES_DIR="$CONFIG_DIR/rules" DATA_DIR="$CONFIG_DIR/prometheus_data" MAIN_CONFIG="$CONFIG_DIR/prometheus.yml" # Ensure directories exist sudo mkdir -p "$RULES_DIR" sudo mkdir -p "$DATA_DIR" echo "Configuring Advanced Prometheus Features..." # 1. Create a Sample Alert Rule File echo "Creating default alert rules in $RULES_DIR/node_alerts.yml..." sudo tee "$RULES_DIR/node_alerts.yml" > /dev/null <80%) - alert: HighCPUUsage expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "High CPU usage on {{ \$labels.instance }}" description: "CPU usage is at {{ \$value | printf \"%.2f\" }}% on {{ \$labels.instance }}." # Alert for high Memory usage (>85%) - alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85 for: 5m labels: severity: warning annotations: summary: "High Memory usage on {{ \$labels.instance }}" description: "Memory usage is at {{ \$value | printf \"%.2f\" }}% on {{ \$labels.instance }}." # Alert for high Disk usage (>90%) - alert: HighDiskUsage expr: (node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100 > 90 for: 5m labels: severity: critical annotations: summary: "High Disk usage on {{ \$labels.instance }}" description: "Disk usage on / is at {{ \$value | printf \"%.2f\" }}% on {{ \$labels.instance }}." EOF # 2. Create the Advanced Main Configuration File echo "Creating advanced prometheus.yml..." sudo tee "$MAIN_CONFIG" > /dev/null <