Última atividade 1 month ago

Erreur32's Avatar Erreur32 revisou este gist 3 months ago. Ir para a revisão

2 files changed, 134 insertions, 134 deletions

docker_check_cpu_mem.sh

@@ -1,133 +1,133 @@
1 - #!/bin/bash
2 - set -euo pipefail
3 -
4 - MEM_WARN_MIB=1024
5 - MEM_CRIT_MIB=4096
6 - SWAP_WARN_MIB=2048
7 - SWAP_CRIT_MIB=8192
8 - CPU_WARN=1.0
9 - CPU_CRIT=2.0
10 -
11 - W_NAME_VAL=40
12 -
13 - RED="\033[0;31m"
14 - YELLOW="\033[0;33m"
15 - GREEN="\033[0;32m"
16 - BLUE="\033[0;34m"
17 - NC="\033[0m"
18 -
19 - to_mib() { echo $(( (${1:-0}) / 1024 / 1024 )); }
20 -
21 - human_bytes() {
22 - local b="${1:-0}"
23 - if [ -z "$b" ] || [ "$b" = "0" ]; then echo "unlimited"; return; fi
24 - local mib=$((b / 1024 / 1024))
25 - if [ "$mib" -ge 1024 ]; then echo "$((mib/1024))GiB"; else echo "${mib}MiB"; fi
26 - }
27 -
28 - pad_name() {
29 - # fixed width name (NO COLORS)
30 - printf "%-${W_NAME_VAL}.${W_NAME_VAL}s" "$1"
31 - }
32 -
33 - declare -A ST_CPU
34 - declare -A ST_MEM
35 - while IFS=$'\t' read -r name cpu mem; do
36 - name="$(echo "$name" | xargs)"
37 - ST_CPU["$name"]="$(echo "$cpu" | xargs)"
38 - ST_MEM["$name"]="$(echo "$mem" | xargs)"
39 - done < <(docker stats --no-stream --format '{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}' 2>/dev/null || true)
40 -
41 - tmp="$(mktemp)"
42 - trap 'rm -f "$tmp"' EXIT
43 -
44 - # status|name|sev|cpu_lim|mem_lim|swap_lim|cpu_used|mem_used|oom|cid
45 - for c in $(docker ps -aq); do
46 - cid="$(docker inspect -f '{{.Id}}' "$c" | cut -c1-12)"
47 - name="$(docker inspect -f '{{.Name}}' "$c" | sed 's#^/##')"
48 - status="$(docker inspect -f '{{.State.Status}}' "$c")"
49 - oom="$(docker inspect -f '{{.State.OOMKilled}}' "$c")"
50 -
51 - mem_b="$(docker inspect -f '{{.HostConfig.Memory}}' "$c")"
52 - swap_b="$(docker inspect -f '{{.HostConfig.MemorySwap}}' "$c")"
53 - mem_mib="$(to_mib "$mem_b")"
54 - swap_mib="$(to_mib "$swap_b")"
55 -
56 - mem_lim="$(human_bytes "$mem_b")"
57 - swap_lim="$(human_bytes "$swap_b")"
58 -
59 - nanocpus="$(docker inspect -f '{{.HostConfig.NanoCpus}}' "$c")"
60 - if [ -z "$nanocpus" ] || [ "$nanocpus" = "0" ]; then
61 - cpu_lim="unlimited"
62 - else
63 - cpu_lim="$(awk -v n="$nanocpus" 'BEGIN { printf "%.2f", n/1000000000 }')"
64 - fi
65 -
66 - cpu_used="${ST_CPU[$name]:--}"
67 - mem_used="${ST_MEM[$name]:--}"
68 -
69 - # severity for name
70 - sev="green"
71 - if [ "$oom" = "true" ]; then sev="red"; fi
72 - if [ "$mem_mib" -ge "$MEM_CRIT_MIB" ] || [ "$swap_mib" -ge "$SWAP_CRIT_MIB" ]; then sev="red"; fi
73 -
74 - if [ "$sev" != "red" ]; then
75 - if [ "$status" != "running" ]; then sev="yellow"; fi
76 - if [ "$mem_mib" -ge "$MEM_WARN_MIB" ] || [ "$swap_mib" -ge "$SWAP_WARN_MIB" ]; then sev="yellow"; fi
77 - if [ "$cpu_lim" != "unlimited" ]; then
78 - awk -v c="$cpu_lim" -v warn="$CPU_WARN" 'BEGIN{ exit !(c+0 >= warn) }' && sev="yellow"
79 - awk -v c="$cpu_lim" -v crit="$CPU_CRIT" 'BEGIN{ exit !(c+0 >= crit) }' && sev="red"
80 - fi
81 - fi
82 -
83 - echo "${status}|${name}|${sev}|${cpu_lim}|${mem_lim}|${swap_lim}|${cpu_used}|${mem_used}|${oom}|${cid}" >> "$tmp"
84 - done
85 -
86 - print_section() {
87 - local title="$1"
88 - local filter="$2"
89 -
90 - echo
91 - if [ "$title" = "RUNNING" ]; then
92 - printf "${GREEN}===== %s =====${NC}\n" "$title"
93 - else
94 - printf "${RED}===== %s =====${NC}\n" "$title"
95 - fi
96 -
97 - # echo "===== ${title} ====="
98 -
99 - # Table without colors, aligned by column
100 - {
101 - echo "NAME|CPU_LIM|MEM_LIM|SWAP_LIM|CPU%|MEM_USED|STATUS|OOM|CONTAINER_ID"
102 -
103 - awk -F'|' "$filter {print \$0}" "$tmp" | sort -t'|' -k2,2 | \
104 - while IFS='|' read -r status name sev cpu_lim mem_lim swap_lim cpu_used mem_used oom cid; do
105 - name_fixed="$(pad_name "$name")"
106 - echo "${name_fixed}|${cpu_lim}|${mem_lim}|${swap_lim}|${cpu_used}|${mem_used}|${status}|${oom}|${cid}|${sev}"
107 - done
108 - } | column -t -s'|' | \
109 - while IFS= read -r line; do
110 - # colorize NAME only after alignment
111 - # last column is severity, remove it from output
112 - sev="$(echo "$line" | awk '{print $NF}')"
113 - line_no_sev="${line% *}"
114 -
115 - name_field="$(echo "$line_no_sev" | cut -d' ' -f1)"
116 - rest="${line_no_sev#"$name_field"}"
117 -
118 - if [ "$name_field" = "NAME" ]; then
119 - echo "$line_no_sev"
120 - continue
121 - fi
122 -
123 - case "$sev" in
124 - red) printf "%b%s\n" "${RED}${name_field}${NC}" "$rest" ;;
125 - yellow) printf "%b%s\n" "${YELLOW}${name_field}${NC}" "$rest" ;;
126 - *) printf "%b%s\n" "${GREEN}${name_field}${NC}" "$rest" ;;
127 - esac
128 - done
129 - }
130 -
131 -
132 - print_section "RUNNING" '$1=="running"'
133 - print_section "NOT RUNNING" '$1!="running"'
1 + #!/bin/bash
2 + set -euo pipefail
3 +
4 + MEM_WARN_MIB=1024
5 + MEM_CRIT_MIB=4096
6 + SWAP_WARN_MIB=2048
7 + SWAP_CRIT_MIB=8192
8 + CPU_WARN=1.0
9 + CPU_CRIT=2.0
10 +
11 + W_NAME_VAL=40
12 +
13 + RED="\033[0;31m"
14 + YELLOW="\033[0;33m"
15 + GREEN="\033[0;32m"
16 + BLUE="\033[0;34m"
17 + NC="\033[0m"
18 +
19 + to_mib() { echo $(( (${1:-0}) / 1024 / 1024 )); }
20 +
21 + human_bytes() {
22 + local b="${1:-0}"
23 + if [ -z "$b" ] || [ "$b" = "0" ]; then echo "unlimited"; return; fi
24 + local mib=$((b / 1024 / 1024))
25 + if [ "$mib" -ge 1024 ]; then echo "$((mib/1024))GiB"; else echo "${mib}MiB"; fi
26 + }
27 +
28 + pad_name() {
29 + # fixed width name (NO COLORS)
30 + printf "%-${W_NAME_VAL}.${W_NAME_VAL}s" "$1"
31 + }
32 +
33 + declare -A ST_CPU
34 + declare -A ST_MEM
35 + while IFS=$'\t' read -r name cpu mem; do
36 + name="$(echo "$name" | xargs)"
37 + ST_CPU["$name"]="$(echo "$cpu" | xargs)"
38 + ST_MEM["$name"]="$(echo "$mem" | xargs)"
39 + done < <(docker stats --no-stream --format '{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}' 2>/dev/null || true)
40 +
41 + tmp="$(mktemp)"
42 + trap 'rm -f "$tmp"' EXIT
43 +
44 + # status|name|sev|cpu_lim|mem_lim|swap_lim|cpu_used|mem_used|oom|cid
45 + for c in $(docker ps -aq); do
46 + cid="$(docker inspect -f '{{.Id}}' "$c" | cut -c1-12)"
47 + name="$(docker inspect -f '{{.Name}}' "$c" | sed 's#^/##')"
48 + status="$(docker inspect -f '{{.State.Status}}' "$c")"
49 + oom="$(docker inspect -f '{{.State.OOMKilled}}' "$c")"
50 +
51 + mem_b="$(docker inspect -f '{{.HostConfig.Memory}}' "$c")"
52 + swap_b="$(docker inspect -f '{{.HostConfig.MemorySwap}}' "$c")"
53 + mem_mib="$(to_mib "$mem_b")"
54 + swap_mib="$(to_mib "$swap_b")"
55 +
56 + mem_lim="$(human_bytes "$mem_b")"
57 + swap_lim="$(human_bytes "$swap_b")"
58 +
59 + nanocpus="$(docker inspect -f '{{.HostConfig.NanoCpus}}' "$c")"
60 + if [ -z "$nanocpus" ] || [ "$nanocpus" = "0" ]; then
61 + cpu_lim="unlimited"
62 + else
63 + cpu_lim="$(awk -v n="$nanocpus" 'BEGIN { printf "%.2f", n/1000000000 }')"
64 + fi
65 +
66 + cpu_used="${ST_CPU[$name]:--}"
67 + mem_used="${ST_MEM[$name]:--}"
68 +
69 + # severity for name
70 + sev="green"
71 + if [ "$oom" = "true" ]; then sev="red"; fi
72 + if [ "$mem_mib" -ge "$MEM_CRIT_MIB" ] || [ "$swap_mib" -ge "$SWAP_CRIT_MIB" ]; then sev="red"; fi
73 +
74 + if [ "$sev" != "red" ]; then
75 + if [ "$status" != "running" ]; then sev="yellow"; fi
76 + if [ "$mem_mib" -ge "$MEM_WARN_MIB" ] || [ "$swap_mib" -ge "$SWAP_WARN_MIB" ]; then sev="yellow"; fi
77 + if [ "$cpu_lim" != "unlimited" ]; then
78 + awk -v c="$cpu_lim" -v warn="$CPU_WARN" 'BEGIN{ exit !(c+0 >= warn) }' && sev="yellow"
79 + awk -v c="$cpu_lim" -v crit="$CPU_CRIT" 'BEGIN{ exit !(c+0 >= crit) }' && sev="red"
80 + fi
81 + fi
82 +
83 + echo "${status}|${name}|${sev}|${cpu_lim}|${mem_lim}|${swap_lim}|${cpu_used}|${mem_used}|${oom}|${cid}" >> "$tmp"
84 + done
85 +
86 + print_section() {
87 + local title="$1"
88 + local filter="$2"
89 +
90 + echo
91 + if [ "$title" = "RUNNING" ]; then
92 + printf "${GREEN}===== %s =====${NC}\n" "$title"
93 + else
94 + printf "${RED}===== %s =====${NC}\n" "$title"
95 + fi
96 +
97 + # echo "===== ${title} ====="
98 +
99 + # Table without colors, aligned by column
100 + {
101 + echo "NAME|CPU_LIM|MEM_LIM|SWAP_LIM|CPU%|MEM_USED|STATUS|OOM|CONTAINER_ID"
102 +
103 + awk -F'|' "$filter {print \$0}" "$tmp" | sort -t'|' -k2,2 | \
104 + while IFS='|' read -r status name sev cpu_lim mem_lim swap_lim cpu_used mem_used oom cid; do
105 + name_fixed="$(pad_name "$name")"
106 + echo "${name_fixed}|${cpu_lim}|${mem_lim}|${swap_lim}|${cpu_used}|${mem_used}|${status}|${oom}|${cid}|${sev}"
107 + done
108 + } | column -t -s'|' | \
109 + while IFS= read -r line; do
110 + # colorize NAME only after alignment
111 + # last column is severity, remove it from output
112 + sev="$(echo "$line" | awk '{print $NF}')"
113 + line_no_sev="${line% *}"
114 +
115 + name_field="$(echo "$line_no_sev" | cut -d' ' -f1)"
116 + rest="${line_no_sev#"$name_field"}"
117 +
118 + if [ "$name_field" = "NAME" ]; then
119 + echo "$line_no_sev"
120 + continue
121 + fi
122 +
123 + case "$sev" in
124 + red) printf "%b%s\n" "${RED}${name_field}${NC}" "$rest" ;;
125 + yellow) printf "%b%s\n" "${YELLOW}${name_field}${NC}" "$rest" ;;
126 + *) printf "%b%s\n" "${GREEN}${name_field}${NC}" "$rest" ;;
127 + esac
128 + done
129 + }
130 +
131 +
132 + print_section "RUNNING" '$1=="running"'
133 + print_section "NOT RUNNING" '$1!="running"'

docker_compose_config_meme_cpu.md

@@ -1,4 +1,4 @@
1 - # Script check Docekr Mem cpu
1 + ## Script check Docker Mem cpu
2 2
3 3 Bash file monitor --> docker_check_cpu_mem.sh (chmod +x)
4 4

Erreur32's Avatar Erreur32 revisou este gist 4 months ago. Ir para a revisão

3 files changed, 134 insertions, 31 deletions

docker_check_cpu_mem.sh(arquivo criado)

@@ -0,0 +1,133 @@
1 + #!/bin/bash
2 + set -euo pipefail
3 +
4 + MEM_WARN_MIB=1024
5 + MEM_CRIT_MIB=4096
6 + SWAP_WARN_MIB=2048
7 + SWAP_CRIT_MIB=8192
8 + CPU_WARN=1.0
9 + CPU_CRIT=2.0
10 +
11 + W_NAME_VAL=40
12 +
13 + RED="\033[0;31m"
14 + YELLOW="\033[0;33m"
15 + GREEN="\033[0;32m"
16 + BLUE="\033[0;34m"
17 + NC="\033[0m"
18 +
19 + to_mib() { echo $(( (${1:-0}) / 1024 / 1024 )); }
20 +
21 + human_bytes() {
22 + local b="${1:-0}"
23 + if [ -z "$b" ] || [ "$b" = "0" ]; then echo "unlimited"; return; fi
24 + local mib=$((b / 1024 / 1024))
25 + if [ "$mib" -ge 1024 ]; then echo "$((mib/1024))GiB"; else echo "${mib}MiB"; fi
26 + }
27 +
28 + pad_name() {
29 + # fixed width name (NO COLORS)
30 + printf "%-${W_NAME_VAL}.${W_NAME_VAL}s" "$1"
31 + }
32 +
33 + declare -A ST_CPU
34 + declare -A ST_MEM
35 + while IFS=$'\t' read -r name cpu mem; do
36 + name="$(echo "$name" | xargs)"
37 + ST_CPU["$name"]="$(echo "$cpu" | xargs)"
38 + ST_MEM["$name"]="$(echo "$mem" | xargs)"
39 + done < <(docker stats --no-stream --format '{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}' 2>/dev/null || true)
40 +
41 + tmp="$(mktemp)"
42 + trap 'rm -f "$tmp"' EXIT
43 +
44 + # status|name|sev|cpu_lim|mem_lim|swap_lim|cpu_used|mem_used|oom|cid
45 + for c in $(docker ps -aq); do
46 + cid="$(docker inspect -f '{{.Id}}' "$c" | cut -c1-12)"
47 + name="$(docker inspect -f '{{.Name}}' "$c" | sed 's#^/##')"
48 + status="$(docker inspect -f '{{.State.Status}}' "$c")"
49 + oom="$(docker inspect -f '{{.State.OOMKilled}}' "$c")"
50 +
51 + mem_b="$(docker inspect -f '{{.HostConfig.Memory}}' "$c")"
52 + swap_b="$(docker inspect -f '{{.HostConfig.MemorySwap}}' "$c")"
53 + mem_mib="$(to_mib "$mem_b")"
54 + swap_mib="$(to_mib "$swap_b")"
55 +
56 + mem_lim="$(human_bytes "$mem_b")"
57 + swap_lim="$(human_bytes "$swap_b")"
58 +
59 + nanocpus="$(docker inspect -f '{{.HostConfig.NanoCpus}}' "$c")"
60 + if [ -z "$nanocpus" ] || [ "$nanocpus" = "0" ]; then
61 + cpu_lim="unlimited"
62 + else
63 + cpu_lim="$(awk -v n="$nanocpus" 'BEGIN { printf "%.2f", n/1000000000 }')"
64 + fi
65 +
66 + cpu_used="${ST_CPU[$name]:--}"
67 + mem_used="${ST_MEM[$name]:--}"
68 +
69 + # severity for name
70 + sev="green"
71 + if [ "$oom" = "true" ]; then sev="red"; fi
72 + if [ "$mem_mib" -ge "$MEM_CRIT_MIB" ] || [ "$swap_mib" -ge "$SWAP_CRIT_MIB" ]; then sev="red"; fi
73 +
74 + if [ "$sev" != "red" ]; then
75 + if [ "$status" != "running" ]; then sev="yellow"; fi
76 + if [ "$mem_mib" -ge "$MEM_WARN_MIB" ] || [ "$swap_mib" -ge "$SWAP_WARN_MIB" ]; then sev="yellow"; fi
77 + if [ "$cpu_lim" != "unlimited" ]; then
78 + awk -v c="$cpu_lim" -v warn="$CPU_WARN" 'BEGIN{ exit !(c+0 >= warn) }' && sev="yellow"
79 + awk -v c="$cpu_lim" -v crit="$CPU_CRIT" 'BEGIN{ exit !(c+0 >= crit) }' && sev="red"
80 + fi
81 + fi
82 +
83 + echo "${status}|${name}|${sev}|${cpu_lim}|${mem_lim}|${swap_lim}|${cpu_used}|${mem_used}|${oom}|${cid}" >> "$tmp"
84 + done
85 +
86 + print_section() {
87 + local title="$1"
88 + local filter="$2"
89 +
90 + echo
91 + if [ "$title" = "RUNNING" ]; then
92 + printf "${GREEN}===== %s =====${NC}\n" "$title"
93 + else
94 + printf "${RED}===== %s =====${NC}\n" "$title"
95 + fi
96 +
97 + # echo "===== ${title} ====="
98 +
99 + # Table without colors, aligned by column
100 + {
101 + echo "NAME|CPU_LIM|MEM_LIM|SWAP_LIM|CPU%|MEM_USED|STATUS|OOM|CONTAINER_ID"
102 +
103 + awk -F'|' "$filter {print \$0}" "$tmp" | sort -t'|' -k2,2 | \
104 + while IFS='|' read -r status name sev cpu_lim mem_lim swap_lim cpu_used mem_used oom cid; do
105 + name_fixed="$(pad_name "$name")"
106 + echo "${name_fixed}|${cpu_lim}|${mem_lim}|${swap_lim}|${cpu_used}|${mem_used}|${status}|${oom}|${cid}|${sev}"
107 + done
108 + } | column -t -s'|' | \
109 + while IFS= read -r line; do
110 + # colorize NAME only after alignment
111 + # last column is severity, remove it from output
112 + sev="$(echo "$line" | awk '{print $NF}')"
113 + line_no_sev="${line% *}"
114 +
115 + name_field="$(echo "$line_no_sev" | cut -d' ' -f1)"
116 + rest="${line_no_sev#"$name_field"}"
117 +
118 + if [ "$name_field" = "NAME" ]; then
119 + echo "$line_no_sev"
120 + continue
121 + fi
122 +
123 + case "$sev" in
124 + red) printf "%b%s\n" "${RED}${name_field}${NC}" "$rest" ;;
125 + yellow) printf "%b%s\n" "${YELLOW}${name_field}${NC}" "$rest" ;;
126 + *) printf "%b%s\n" "${GREEN}${name_field}${NC}" "$rest" ;;
127 + esac
128 + done
129 + }
130 +
131 +
132 + print_section "RUNNING" '$1=="running"'
133 + print_section "NOT RUNNING" '$1!="running"'

docker_check_mem.sh (arquivo excluído)

@@ -1,30 +0,0 @@
1 - #!/bin/bash
2 -
3 - human_bytes() {
4 - b="$1"
5 - if [ "$b" = "0" ] || [ -z "$b" ]; then
6 - echo "unlimited"
7 - return
8 - fi
9 - mib=$((b / 1024 / 1024))
10 - if [ "$mib" -ge 1024 ]; then
11 - gib=$((mib / 1024))
12 - echo "${gib}GiB"
13 - else
14 - echo "${mib}MiB"
15 - fi
16 - }
17 -
18 - printf "%-28s %-10s %-10s %-10s %-6s\n" "CONTAINER" "MEM" "SWAP" "STATUS" "OOM"
19 - printf "%-28s %-10s %-10s %-10s %-6s\n" "---------" "---" "----" "------" "---"
20 -
21 - for c in $(docker ps -aq); do
22 - name=$(docker inspect -f '{{.Name}}' "$c" 2>/dev/null | sed 's#^/##')
23 - mem=$(docker inspect -f '{{.HostConfig.Memory}}' "$c" 2>/dev/null)
24 - swap=$(docker inspect -f '{{.HostConfig.MemorySwap}}' "$c" 2>/dev/null)
25 - status=$(docker inspect -f '{{.State.Status}}' "$c" 2>/dev/null)
26 - oom=$(docker inspect -f '{{.State.OOMKilled}}' "$c" 2>/dev/null)
27 -
28 - printf "%-28s %-10s %-10s %-10s %-6s\n" \
29 - "$name" "$(human_bytes "$mem")" "$(human_bytes "$swap")" "$status" "$oom"
30 - done

docker_compose_config_meme_cpu.md

@@ -1,6 +1,6 @@
1 1 # Script check Docekr Mem cpu
2 2
3 - file --> docker_check_mem.sh
3 + Bash file monitor --> docker_check_cpu_mem.sh (chmod +x)
4 4
5 5
6 6 # ✅ Audit Services Docker (CPU / RAM / Swap)

Erreur32's Avatar Erreur32 revisou este gist 4 months ago. Ir para a revisão

2 files changed, 35 insertions

docker_check_mem.sh(arquivo criado)

@@ -0,0 +1,30 @@
1 + #!/bin/bash
2 +
3 + human_bytes() {
4 + b="$1"
5 + if [ "$b" = "0" ] || [ -z "$b" ]; then
6 + echo "unlimited"
7 + return
8 + fi
9 + mib=$((b / 1024 / 1024))
10 + if [ "$mib" -ge 1024 ]; then
11 + gib=$((mib / 1024))
12 + echo "${gib}GiB"
13 + else
14 + echo "${mib}MiB"
15 + fi
16 + }
17 +
18 + printf "%-28s %-10s %-10s %-10s %-6s\n" "CONTAINER" "MEM" "SWAP" "STATUS" "OOM"
19 + printf "%-28s %-10s %-10s %-10s %-6s\n" "---------" "---" "----" "------" "---"
20 +
21 + for c in $(docker ps -aq); do
22 + name=$(docker inspect -f '{{.Name}}' "$c" 2>/dev/null | sed 's#^/##')
23 + mem=$(docker inspect -f '{{.HostConfig.Memory}}' "$c" 2>/dev/null)
24 + swap=$(docker inspect -f '{{.HostConfig.MemorySwap}}' "$c" 2>/dev/null)
25 + status=$(docker inspect -f '{{.State.Status}}' "$c" 2>/dev/null)
26 + oom=$(docker inspect -f '{{.State.OOMKilled}}' "$c" 2>/dev/null)
27 +
28 + printf "%-28s %-10s %-10s %-10s %-6s\n" \
29 + "$name" "$(human_bytes "$mem")" "$(human_bytes "$swap")" "$status" "$oom"
30 + done

docker_compose_config_meme_cpu.md

@@ -1,3 +1,8 @@
1 + # Script check Docekr Mem cpu
2 +
3 + file --> docker_check_mem.sh
4 +
5 +
1 6 # ✅ Audit Services Docker (CPU / RAM / Swap)
2 7
3 8 > Objectif : limiter les pics RAM, éviter OOM, et garder des services réactifs.

Erreur32's Avatar Erreur32 revisou este gist 4 months ago. Ir para a revisão

1 file changed, 0 insertions, 0 deletions

docker_compose_config_meme_cpu.yaml renomeado para docker_compose_config_meme_cpu.md

Arquivo renomeado sem alterações

Erreur32's Avatar Erreur32 revisou este gist 4 months ago. Ir para a revisão

Sem alterações

Erreur32's Avatar Erreur32 revisou este gist 4 months ago. Ir para a revisão

1 file changed, 234 insertions

docker_compose_config_meme_cpu.yaml(arquivo criado)

@@ -0,0 +1,234 @@
1 + # ✅ Audit Services Docker (CPU / RAM / Swap)
2 +
3 + > Objectif : limiter les pics RAM, éviter OOM, et garder des services réactifs.
4 + > Format conseillé dans docker-compose (compose classique) :
5 + > - `cpus: "X.Y"`
6 + > - `mem_limit: XXXm|Xg`
7 + > - `memswap_limit: XXXm|Xg`
8 +
9 + ---
10 +
11 + ## ✅ goaccess
12 + - **Status** : Up ✅
13 + - **CPU** : `cpus: "0.5"`
14 + - **RAM** : `mem_limit: 768m`
15 + - **SWAP** : `memswap_limit: 1536m`
16 + - **Remarque** : parsing logs => pics possibles.
17 +
18 + ---
19 +
20 + ## ⚠️ pulse
21 + - **Status** : Exited ❌
22 + - **CPU** : `cpus: "0.5"`
23 + - **RAM** : `mem_limit: 1g` *(ou 2g si beaucoup de hosts)*
24 + - **SWAP** : `memswap_limit: 2g` *(ou 4g)*
25 + - **Remarque** : sans `/var/run/docker.sock` => pas de monitoring Docker local.
26 +
27 + ---
28 +
29 + ## ⚠️ photoprism
30 + - **Status** : Exited ❌
31 + - **CPU** : `cpus: "2.0"`
32 + - **RAM** : `mem_limit: 2g`
33 + - **SWAP** : `memswap_limit: 4g`
34 + - **Remarque** : indexation/photo => très gourmand.
35 +
36 + ---
37 +
38 + ## ✅ big-bear-adguard-home-host
39 + - **Status** : Up ✅
40 + - **CPU** : `cpus: "0.25"`
41 + - **RAM** : `mem_limit: 256m`
42 + - **SWAP** : `memswap_limit: 512m`
43 + - **Remarque** : service léger.
44 +
45 + ---
46 +
47 + ## ✅ syncthing
48 + - **Status** : Up ✅ (healthy)
49 + - **CPU** : `cpus: "1.0"`
50 + - **RAM** : `mem_limit: 512m`
51 + - **SWAP** : `memswap_limit: 1g`
52 + - **Remarque** : pics possibles selon volume fichiers.
53 +
54 + ---
55 +
56 + ## ⚠️ n8n
57 + - **Status** : Created (pas lancé) ⚠️
58 + - **CPU** : `cpus: "1.0"`
59 + - **RAM** : `mem_limit: 1g`
60 + - **SWAP** : `memswap_limit: 2g`
61 + - **Remarque** : workflows + exec => pics.
62 +
63 + ---
64 +
65 + ## ✅ big-bear-filebrowser
66 + - **Status** : Up ✅ (healthy)
67 + - **CPU** : `cpus: "0.25"`
68 + - **RAM** : `mem_limit: 256m`
69 + - **SWAP** : `memswap_limit: 512m`
70 + - **Remarque** : léger.
71 +
72 + ---
73 +
74 + ## ⚠️ big-bear-stirling-pdf
75 + - **Status** : Exited ❌
76 + - **CPU** : `cpus: "1.0"`
77 + - **RAM** : `mem_limit: 1g`
78 + - **SWAP** : `memswap_limit: 2g`
79 + - **Remarque** : Java => peut monter.
80 +
81 + ---
82 +
83 + ## ✅ mariadb
84 + - **Status** : Up ✅
85 + - **CPU** : `cpus: "1.0"`
86 + - **RAM** : `mem_limit: 1g`
87 + - **SWAP** : `memswap_limit: 2g`
88 + - **Remarque** : le plus important à limiter proprement.
89 +
90 + ---
91 +
92 + ## ⚠️ big-bear-ghost
93 + - **Status** : Exited ❌
94 + - **CPU** : `cpus: "0.5"`
95 + - **RAM** : `mem_limit: 512m`
96 + - **SWAP** : `memswap_limit: 1g`
97 + - **Remarque** : OK, mais dépend trafic.
98 +
99 + ---
100 +
101 + ## ⚠️ big-bear-ghost-db (mysql:8)
102 + - **Status** : Exited ❌
103 + - **CPU** : `cpus: "1.0"`
104 + - **RAM** : `mem_limit: 1g`
105 + - **SWAP** : `memswap_limit: 2g`
106 + - **Remarque** : si tu utilises déjà mariadb ailleurs, évite 2 DB.
107 +
108 + ---
109 +
110 + ## ✅ big-bear-erugo
111 + - **Status** : Up ✅
112 + - **CPU** : `cpus: "0.5"`
113 + - **RAM** : `mem_limit: 512m`
114 + - **SWAP** : `memswap_limit: 1g`
115 + - **Remarque** : usage moyen.
116 +
117 + ---
118 +
119 + ## ✅ dozzle-agent
120 + - **Status** : Up ✅
121 + - **CPU** : `cpus: "0.25"`
122 + - **RAM** : `mem_limit: 128m`
123 + - **SWAP** : `memswap_limit: 256m`
124 + - **Remarque** : léger.
125 +
126 + ---
127 +
128 + ## ✅ dozzle
129 + - **Status** : Up ✅
130 + - **CPU** : `cpus: "0.25"`
131 + - **RAM** : `mem_limit: 128m`
132 + - **SWAP** : `memswap_limit: 256m`
133 + - **Remarque** : léger.
134 +
135 + ---
136 +
137 + ## ✅ portainer_agent
138 + - **Status** : Up ✅
139 + - **CPU** : `cpus: "0.25"`
140 + - **RAM** : `mem_limit: 128m`
141 + - **SWAP** : `memswap_limit: 256m`
142 +
143 + ---
144 +
145 + ## ✅ portainer
146 + - **Status** : Up ✅
147 + - **CPU** : `cpus: "0.5"`
148 + - **RAM** : `mem_limit: 256m`
149 + - **SWAP** : `memswap_limit: 512m`
150 +
151 + ---
152 +
153 + ## ✅ lagident
154 + - **Status** : Up ✅
155 + - **CPU** : `cpus: "0.25"`
156 + - **RAM** : `mem_limit: 128m`
157 + - **SWAP** : `memswap_limit: 256m`
158 +
159 + ---
160 +
161 + ## ✅ big-bear-glances
162 + - **Status** : Up ✅
163 + - **CPU** : `cpus: "0.25"`
164 + - **RAM** : `mem_limit: 256m`
165 + - **SWAP** : `memswap_limit: 512m`
166 +
167 + ---
168 +
169 + ## ✅ excalidraw
170 + - **Status** : Up ✅ (healthy)
171 + - **CPU** : `cpus: "0.25"`
172 + - **RAM** : `mem_limit: 256m`
173 + - **SWAP** : `memswap_limit: 512m`
174 +
175 + ---
176 +
177 + ## ⚠️ big-bear-composetoolbox
178 + - **Status** : Exited ❌
179 + - **CPU** : `cpus: "0.25"`
180 + - **RAM** : `mem_limit: 256m`
181 + - **SWAP** : `memswap_limit: 512m`
182 +
183 + ---
184 +
185 + ## ⚠️ big-bear-watchyourlan
186 + - **Status** : Exited ❌
187 + - **CPU** : `cpus: "0.25"`
188 + - **RAM** : `mem_limit: 256m`
189 + - **SWAP** : `memswap_limit: 512m`
190 + - **Remarque** : s’arrête souvent si pas de privilèges réseau.
191 +
192 + ---
193 +
194 + ## ✅ memos
195 + - **Status** : Up ✅
196 + - **CPU** : `cpus: "0.25"`
197 + - **RAM** : `mem_limit: 256m`
198 + - **SWAP** : `memswap_limit: 512m`
199 +
200 + ---
201 +
202 + ## ⚠️ ttydbridge
203 + - **Status** : Exited ❌
204 + - **CPU** : `cpus: "0.25"`
205 + - **RAM** : `mem_limit: 128m`
206 + - **SWAP** : `memswap_limit: 256m`
207 +
208 + ---
209 +
210 + ## ✅ openspeedtest
211 + - **Status** : Up ✅
212 + - **CPU** : `cpus: "0.25"`
213 + - **RAM** : `mem_limit: 128m`
214 + - **SWAP** : `memswap_limit: 256m`
215 +
216 + ---
217 +
218 + ## ⚠️ big-bear-brave
219 + - **Status** : Exited ❌
220 + - **CPU** : `cpus: "1.0"`
221 + - **RAM** : `mem_limit: 1g`
222 + - **SWAP** : `memswap_limit: 2g`
223 + - **Remarque** : container navigateur = lourd.
224 +
225 + ---
226 +
227 + ## ⚠️ tailscale
228 + - **Status** : Exited ❌
229 + - **CPU** : `cpus: "0.25"`
230 + - **RAM** : `mem_limit: 128m`
231 + - **SWAP** : `memswap_limit: 256m`
232 + - **Remarque** : souvent besoin `--cap-add=NET_ADMIN` ou mode host.
233 +
234 + ---
Próximo Anterior