Última actividad 1746942171

compose.yml Sin formato
1services:
2 watchdog:
3 image: docker:cli
4 container_name: watchdog
5 restart: unless-stopped
6 volumes:
7 - /var/run/docker.sock:/var/run/docker.sock
8 - ./watchdog.sh:/watchdog.sh
9 environment:
10 - CPU_THRESHOLD=95
11 - CHECK_INTERVAL=10
12 - CONTAINER_PREFIX=hldm
13 entrypoint: [ "sh", "/watchdog.sh" ]
watchdog.sh Sin formato
1#!/bin/bash
2
3THRESHOLD="${CPU_THRESHOLD}"
4INTERVAL="${CHECK_INTERVAL}"
5TARGET_PREFIX="${CONTAINER_PREFIX}"
6
7while true; do
8 docker stats --no-stream --format "{{.Name}} {{.CPUPerc}}" | while read name cpu; do
9 cpu_val=$(echo "$cpu" | tr -d '%')
10 if [[ "$name" == $TARGET_PREFIX* && $(echo "$cpu_val > $THRESHOLD" | bc) -eq 1 ]]; then
11 echo "[watchdog] High CPU: $name using $cpu_val%, restarting..."
12 docker restart "$name"
13 fi
14 done
15 sleep "$INTERVAL"
16done