Стек мониторинга: Prometheus + Alertmanager + Grafana + node_exporter + cAdvisor

Самодостаточный docker compose стек с деплоем через deploy.sh,
bootstrap-установкой с нуля и конфигурацией через .env.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ShiZa039 2026-07-23 12:54:40 +02:00
commit 74b6f92cb8
15 changed files with 17242 additions and 0 deletions

View file

@ -0,0 +1,24 @@
# Шаблон: entrypoint.sh рендерит его в /tmp/alertmanager.yml при старте контейнера.
# Строки с префиксом #TG# включаются, только если заданы TG_BOT_TOKEN и TG_CHAT_ID.
route:
receiver: __DEFAULT_RECEIVER__
group_by: ['alertname', 'server', 'instance']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
# critical глушит warning того же алерта (например, DiskFull 95% глушит 85%)
inhibit_rules:
- source_matchers: ['severity = critical']
target_matchers: ['severity = warning']
equal: ['alertname', 'server', 'instance', 'mountpoint']
receivers:
- name: blackhole
#TG# - name: telegram
#TG# telegram_configs:
#TG# - bot_token: '__TG_BOT_TOKEN__'
#TG# chat_id: __TG_CHAT_ID__
#TG# parse_mode: 'HTML'
#TG# send_resolved: true

View file

@ -0,0 +1,25 @@
#!/bin/sh
# Рендерит alertmanager.yml из шаблона: секреты приходят через переменные
# окружения контейнера и не попадают в файлы на хосте.
set -eu
TPL=/etc/alertmanager/alertmanager.yml.tpl
OUT=/tmp/alertmanager.yml
if [ -n "${TG_BOT_TOKEN:-}" ] && [ -n "${TG_CHAT_ID:-}" ]; then
sed -e 's/^#TG#//' \
-e 's|__DEFAULT_RECEIVER__|telegram|' \
-e "s|__TG_BOT_TOKEN__|${TG_BOT_TOKEN}|" \
-e "s|__TG_CHAT_ID__|${TG_CHAT_ID}|" \
"$TPL" > "$OUT"
else
echo "WARN: TG_BOT_TOKEN / TG_CHAT_ID не заданы — Telegram-уведомления отключены (receiver: blackhole)" >&2
sed -e '/^#TG#/d' \
-e 's|__DEFAULT_RECEIVER__|blackhole|' \
"$TPL" > "$OUT"
fi
exec /bin/alertmanager \
--config.file="$OUT" \
--storage.path=/alertmanager \
--web.config.file=/etc/alertmanager/web.yml