67 lines
1.6 KiB
Bash
67 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# This script adds a new node to the Prometheus configuration file
|
|
# Supports optional Basic Authentication (username/password)
|
|
# Use: sudo ./add_node.sh <SERVER_IP> [USERNAME] [PASSWORD]
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "--- Prometheus Node Adder ---"
|
|
read -p "Enter Target IP/Hostname: " SERVER_IP
|
|
if [ -z "$SERVER_IP" ]; then
|
|
echo "Error: Target IP is required."
|
|
exit 1
|
|
fi
|
|
|
|
read -p "Enable Basic Authentication? [y/N]: " ENABLE_AUTH
|
|
if [[ "$ENABLE_AUTH" =~ ^[Yy]$ ]]; then
|
|
read -p "Enter Username: " USER_NAME
|
|
read -s -p "Enter Password: " PASSWORD
|
|
echo "" # New line
|
|
fi
|
|
else
|
|
SERVER_IP=$1
|
|
USER_NAME=$2
|
|
PASSWORD=$3
|
|
fi
|
|
|
|
CONFIG_FILE="/etc/prometheus/prometheus.yml"
|
|
|
|
# Ensure the script is run with sudo
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Please run this script with sudo."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo "Prometheus configuration file not found at $CONFIG_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Adding node $SERVER_IP to $CONFIG_FILE..."
|
|
|
|
# Build the configuration block
|
|
JOB_BLOCK="
|
|
- job_name: 'nodes_$SERVER_IP'
|
|
static_configs:
|
|
- targets: ['$SERVER_IP:9100']"
|
|
|
|
if [ -n "$USER_NAME" ] && [ -n "$PASSWORD" ]; then
|
|
echo "Applying basic authentication for user: $USER_NAME"
|
|
JOB_BLOCK="$JOB_BLOCK
|
|
basic_auth:
|
|
username: '$USER_NAME'
|
|
password: '$PASSWORD'"
|
|
fi
|
|
|
|
# Append the new job configuration
|
|
echo "$JOB_BLOCK" >> "$CONFIG_FILE"
|
|
|
|
# Restart Prometheus to apply changes
|
|
if [ -x "/usr/bin/restart_prometheus" ]; then
|
|
/usr/bin/restart_prometheus
|
|
else
|
|
systemctl restart prometheus
|
|
fi
|
|
|
|
echo "Done. node $SERVER_IP added. Prometheus restarted."
|