dszubov ревизий этого фрагмента . К ревизии
1 file changed, 0 insertions, 0 deletions
gistfile1.txt переименован в compose.yml
Файл переименован без изменений
dszubov ревизий этого фрагмента . К ревизии
2 files changed, 29 insertions
gistfile1.txt(файл создан)
| @@ -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(файл создан)
| @@ -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 | |