88 lines
2.6 KiB
Bash
88 lines
2.6 KiB
Bash
#!/bin/bash
|
|||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
PROMETHEUS_VERSION="2.53.0"
|
||
|
|
TAILSCALE_IP="100.108.1.124"
|
||
|
|
PROMETHEUS_DIR="/etc/prometheus"
|
||
|
|
PROMETHEUS_DATA_DIR="/var/lib/prometheus"
|
||
|
|
|
||
|
|
echo "Creating prometheus user and group..."
|
||
|
|
if ! getent group prometheus >/dev/null; then
|
||
|
|
groupadd --system prometheus
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! getent passwd prometheus >/dev/null; then
|
||
|
|
useradd --system -g prometheus --no-create-home --shell /usr/sbin/nologin prometheus
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Creating directories..."
|
||
|
|
mkdir -p "$PROMETHEUS_DIR" "$PROMETHEUS_DATA_DIR"
|
||
|
|
chown prometheus:prometheus "$PROMETHEUS_DIR" "$PROMETHEUS_DATA_DIR"
|
||
|
|
|
||
|
|
echo "Downloading Prometheus v${PROMETHEUS_VERSION}..."
|
||
|
|
cd /tmp
|
||
|
|
wget -qO prometheus.tar.gz "https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz"
|
||
|
|
|
||
|
|
echo "Extracting Prometheus..."
|
||
|
|
tar -xf prometheus.tar.gz
|
||
|
|
cd "prometheus-${PROMETHEUS_VERSION}.linux-amd64"
|
||
|
|
|
||
|
|
echo "Installing binaries..."
|
||
|
|
install -m 0755 -o prometheus -g prometheus prometheus promtool /usr/local/bin/
|
||
|
|
|
||
|
|
echo "Installing consoles and libraries..."
|
||
|
|
cp -a consoles console_libraries "$PROMETHEUS_DIR/"
|
||
|
|
chown -R prometheus:prometheus "$PROMETHEUS_DIR/consoles" "$PROMETHEUS_DIR/console_libraries"
|
||
|
|
|
||
|
|
echo "Creating configuration file..."
|
||
|
|
cat <<EOF > "${PROMETHEUS_DIR}/prometheus.yml"
|
||
|
|
global:
|
||
|
|
scrape_interval: 15s
|
||
|
|
evaluation_interval: 15s
|
||
|
|
|
||
|
|
scrape_configs:
|
||
|
|
- job_name: "prometheus"
|
||
|
|
static_configs:
|
||
|
|
- targets: ["${TAILSCALE_IP}:9090"]
|
||
|
|
EOF
|
||
|
|
chown prometheus:prometheus "${PROMETHEUS_DIR}/prometheus.yml"
|
||
|
|
chmod 0644 "${PROMETHEUS_DIR}/prometheus.yml"
|
||
|
|
|
||
|
|
echo "Creating systemd unit file..."
|
||
|
|
cat <<EOF > /etc/systemd/system/prometheus.service
|
||
|
|
[Unit]
|
||
|
|
Description=Prometheus Time Series Collection and Processing Server
|
||
|
|
Wants=network-online.target
|
||
|
|
After=network-online.target
|
||
|
|
|
||
|
|
[Service]
|
||
|
|
User=prometheus
|
||
|
|
Group=prometheus
|
||
|
|
Type=simple
|
||
|
|
ExecStart=/usr/local/bin/prometheus \\
|
||
|
|
--config.file=${PROMETHEUS_DIR}/prometheus.yml \\
|
||
|
|
--storage.tsdb.path=${PROMETHEUS_DATA_DIR} \\
|
||
|
|
--web.console.templates=${PROMETHEUS_DIR}/consoles \\
|
||
|
|
--web.console.libraries=${PROMETHEUS_DIR}/console_libraries \\
|
||
|
|
--web.listen-address=${TAILSCALE_IP}:9090 \\
|
||
|
|
--web.external-url=http://${TAILSCALE_IP}:9090/
|
||
|
|
ExecReload=/bin/kill -HUP \$MAINPID
|
||
|
|
Restart=on-failure
|
||
|
|
RestartSec=5s
|
||
|
|
LimitNOFILE=65536
|
||
|
|
|
||
|
|
[Install]
|
||
|
|
WantedBy=multi-user.target
|
||
|
|
EOF
|
||
|
|
chmod 0644 /etc/systemd/system/prometheus.service
|
||
|
|
|
||
|
|
echo "Reloading systemd, enabling and starting prometheus..."
|
||
|
|
systemctl daemon-reload
|
||
|
|
systemctl enable prometheus
|
||
|
|
systemctl restart prometheus
|
||
|
|
|
||
|
|
echo "Checking Prometheus status..."
|
||
|
|
systemctl status prometheus --no-pager || true
|
||
|
|
|
||
|
|
echo "Prometheus setup completed successfully!"
|