Last active 1746942171

dszubov revised this gist 1746942171. Go to revision

1 file changed, 0 insertions, 0 deletions

gistfile1.txt renamed to compose.yml

File renamed without changes

dszubov revised this gist 1746942151. Go to revision

2 files changed, 29 insertions

gistfile1.txt(file created)

@@ -0,0 +1,13 @@
1 + services:
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(file created)

@@ -0,0 +1,16 @@
1 + #!/bin/bash
2 +
3 + THRESHOLD="${CPU_THRESHOLD}"
4 + INTERVAL="${CHECK_INTERVAL}"
5 + TARGET_PREFIX="${CONTAINER_PREFIX}"
6 +
7 + while 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"
16 + done
Newer Older