50 lines
1.5 KiB
Bash
Executable File
50 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REMOTE="${NGINX_EXPORTER_REMOTE:-ollama@192.168.0.188}"
|
|
COMPOSE_FILE="${NGINX_EXPORTER_COMPOSE_FILE:-/home/ollama/nginx-exporter.yml}"
|
|
STUB_STATUS_URL="${NGINX_EXPORTER_STUB_STATUS_URL:-http://127.0.0.1:8080/nginx_status}"
|
|
METRICS_URL="${NGINX_EXPORTER_METRICS_URL:-http://127.0.0.1:9113/metrics}"
|
|
|
|
MODE="check"
|
|
if [[ "${1:-}" == "--apply" ]]; then
|
|
MODE="apply"
|
|
elif [[ "${1:-}" != "" && "${1:-}" != "--check" ]]; then
|
|
echo "usage: $0 [--check|--apply]" >&2
|
|
exit 2
|
|
fi
|
|
|
|
remote_script='
|
|
set -euo pipefail
|
|
mode="$1"
|
|
compose_file="$2"
|
|
stub_status_url="$3"
|
|
metrics_url="$4"
|
|
|
|
echo "== nginx stub_status =="
|
|
curl -fsS --max-time 5 "$stub_status_url" | head -5
|
|
|
|
echo "== exporter compose =="
|
|
test -s "$compose_file"
|
|
docker compose -f "$compose_file" config >/dev/null
|
|
|
|
echo "== exporter state before =="
|
|
docker ps -a --filter name=nginx-exporter --format "{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" || true
|
|
|
|
if [[ "$mode" == "apply" ]]; then
|
|
echo "== restore nginx-exporter =="
|
|
docker compose -f "$compose_file" up -d
|
|
sleep 3
|
|
fi
|
|
|
|
echo "== exporter metrics =="
|
|
curl -fsS --max-time 5 "$metrics_url" | grep -E "^(nginx_up|nginx_connections_active|nginx_http_requests_total)" | head -10
|
|
|
|
echo "== exporter state after =="
|
|
docker ps --filter name=nginx-exporter --format "{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
|
|
'
|
|
|
|
ssh -o BatchMode=yes -o ConnectTimeout=8 "$REMOTE" \
|
|
"bash -s" -- "$MODE" "$COMPOSE_FILE" "$STUB_STATUS_URL" "$METRICS_URL" \
|
|
<<<"$remote_script"
|