51 lines
1.6 KiB
Bash
51 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# ⚙️ Configuration
|
|
KUMA_URL="http://127.0.0.1:3001" # URL de ton Uptime Kuma
|
|
API_KEY="uk1_b-HORr0QCowCugxkPfnKvV_pdH9aXndCkNlKdSb2" # Ta clé API
|
|
CHECK_INTERVAL=60 # Intervalle de check en secondes
|
|
|
|
# Liste des conteneurs avec port exposé (nom:port)
|
|
containers=$(docker ps --format '{{.Names}} {{.Ports}}' | grep -oP '^\S+.*->(\d+)/tcp' | awk '{print $1 ":" $NF}' | sed 's#/tcp##' | sed 's/->/:/')
|
|
|
|
# Fonction pour créer ou mettre à jour un monitor
|
|
create_monitor() {
|
|
local name=$1
|
|
local url=$2
|
|
|
|
# Vérifier si le monitor existe déjà
|
|
monitor_id=$(curl -s -H "Authorization: Bearer $API_KEY" "$KUMA_URL/api/monitors" | jq -r ".[] | select(.name==\"$name\") | .id")
|
|
|
|
if [ -z "$monitor_id" ]; then
|
|
echo "Création du monitor: $name -> $url"
|
|
curl -s -X POST "$KUMA_URL/api/monitor" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer $API_KEY" \
|
|
-d "{
|
|
\"type\": \"http\",
|
|
\"name\": \"$name\",
|
|
\"url\": \"$url\",
|
|
\"interval\": $CHECK_INTERVAL
|
|
}"
|
|
else
|
|
echo "Monitor existant: $name, mise à jour URL -> $url"
|
|
curl -s -X PUT "$KUMA_URL/api/monitor/$monitor_id" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer $API_KEY" \
|
|
-d "{
|
|
\"url\": \"$url\",
|
|
\"interval\": $CHECK_INTERVAL
|
|
}"
|
|
fi
|
|
}
|
|
|
|
# Parcours des conteneurs et création/mise à jour des monitors
|
|
for c in $containers; do
|
|
name=$(echo $c | cut -d: -f1)
|
|
port=$(echo $c | cut -d: -f2)
|
|
url="http://127.0.0.1:$port"
|
|
create_monitor "$name" "$url"
|
|
done
|
|
|
|
echo "Synchronisation Docker → Uptime Kuma terminée."
|