Update architecture and backup documentation to include Healthchecks integration
Add Healthchecks service details to architecture and backup documentation, including its role as a Dead man's switch for backups. Update backup scripts to utilize systemd timers instead of cron for improved scheduling. Enhance network topology documentation to reflect Healthchecks integration in the VPS Miran setup. This update clarifies backup processes and enhances overall system reliability.
This commit is contained in:
202
docs/monitoring/netdata-proxmox-setup.md
Normal file
202
docs/monitoring/netdata-proxmox-setup.md
Normal file
@@ -0,0 +1,202 @@
|
||||
# Netdata на хосте Proxmox
|
||||
|
||||
Мониторинг CPU, RAM, дисков, load average, swap. Алерты в Telegram.
|
||||
|
||||
---
|
||||
|
||||
## Доступ
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| **URL** | http://192.168.1.150:19999 |
|
||||
| **Режим** | Локальный, анонимный (Cloud отключён) |
|
||||
|
||||
---
|
||||
|
||||
## Установка
|
||||
|
||||
На хосте Proxmox (root):
|
||||
|
||||
```bash
|
||||
# Официальный установщик
|
||||
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
|
||||
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
|
||||
```
|
||||
|
||||
Или через пакетный менеджер (если доступен):
|
||||
|
||||
```bash
|
||||
apt update && apt install -y netdata
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Конфигурация Telegram
|
||||
|
||||
Редактировать: `/etc/netdata/health_alarm_notify.conf`
|
||||
|
||||
```bash
|
||||
cd /etc/netdata
|
||||
./edit-config health_alarm_notify.conf
|
||||
```
|
||||
|
||||
Добавить/изменить:
|
||||
|
||||
```
|
||||
SEND_TELEGRAM="YES"
|
||||
TELEGRAM_BOT_TOKEN="<токен из Vaultwarden: HOME_BOT_TOKEN>"
|
||||
DEFAULT_RECIPIENT_TELEGRAM="<chat_id из Vaultwarden: RESTIC.TELEGRAM_SELF_CHAT_ID>"
|
||||
```
|
||||
|
||||
Креды можно взять из Vaultwarden (объекты HOME_BOT_TOKEN, RESTIC) или из `/root/.telegram-notify.env`.
|
||||
|
||||
---
|
||||
|
||||
## Алерты (health.d)
|
||||
|
||||
Файлы в `/etc/netdata/health.d/`. Создать или переопределить:
|
||||
|
||||
### cpu.conf — CPU > 90% более 10 минут
|
||||
|
||||
```conf
|
||||
# Переопределение: CPU > 90% = warning
|
||||
template: cpu_usage
|
||||
on: system.cpu
|
||||
lookup: average -10m percentage of usage
|
||||
warn: $this > 90
|
||||
crit: $this > 95
|
||||
```
|
||||
|
||||
### ram.conf — RAM > 90%
|
||||
|
||||
```conf
|
||||
template: ram_usage
|
||||
on: system.ram
|
||||
lookup: average -10m percentage of used
|
||||
warn: $this > 90
|
||||
crit: $this > 95
|
||||
```
|
||||
|
||||
### load.conf — Load average > cores × 2
|
||||
|
||||
```conf
|
||||
# Load average: warn если load > 2 × число ядер
|
||||
# Число ядер: nproc или lscpu
|
||||
template: load_average
|
||||
on: system.load
|
||||
lookup: average -10m of load15
|
||||
# Порог задаётся вручную под хост (cores × 2). Пример для 8 ядер: 16
|
||||
warn: $this > 16
|
||||
crit: $this > 24
|
||||
```
|
||||
|
||||
**Важно:** заменить `16` и `24` на `cores × 2` и `cores × 3` для вашего хоста. Узнать ядра: `nproc`.
|
||||
|
||||
### swap.conf — Swap > 0 стабильно
|
||||
|
||||
```conf
|
||||
template: swap_usage
|
||||
on: system.swap
|
||||
lookup: average -10m percentage of used
|
||||
warn: $this > 0
|
||||
crit: $this > 10
|
||||
```
|
||||
|
||||
### disk.conf — Диск > 80% (avail < 20%)
|
||||
|
||||
Мониторить: `/` (root, NVMe), `/mnt/backup` (sdb), внешний диск (sdd). Netdata использует `percentage of avail` — warn при avail < 20% (т.е. used > 80%).
|
||||
|
||||
```conf
|
||||
# Шаблон для важных дисков: warn при avail < 20%, crit при avail < 10%
|
||||
template: disk_space_critical
|
||||
on: disk.space
|
||||
lookup: max -1m percentage of avail
|
||||
warn: $this < 20
|
||||
crit: $this < 10
|
||||
```
|
||||
|
||||
Или для конкретных путей (chart ID: disk_space._ с подчёркиваниями вместо слешей):
|
||||
|
||||
```conf
|
||||
# / (root, NVMe)
|
||||
alarm: disk_space_root
|
||||
on: disk_space._
|
||||
lookup: max -1m percentage of avail
|
||||
chart labels: mount_point=/
|
||||
warn: $this < 20
|
||||
crit: $this < 10
|
||||
|
||||
# /mnt/backup (sdb)
|
||||
alarm: disk_space_backup
|
||||
on: disk_space._mnt_backup
|
||||
lookup: max -1m percentage of avail
|
||||
warn: $this < 20
|
||||
crit: $this < 10
|
||||
```
|
||||
|
||||
Узнать точные chart ID: `curl -s "http://localhost:19999/api/v1/charts" | grep disk_space`
|
||||
|
||||
---
|
||||
|
||||
## SMART (smartmontools)
|
||||
|
||||
Для мониторинга SMART через Netdata:
|
||||
|
||||
```bash
|
||||
apt install -y smartmontools
|
||||
```
|
||||
|
||||
Плагин `smartd` в Netdata автоматически обнаруживает диски. Дополнительно см. [smartd-setup.md](smartd-setup.md).
|
||||
|
||||
---
|
||||
|
||||
## Применение изменений
|
||||
|
||||
```bash
|
||||
netdatacli reload-health
|
||||
# или
|
||||
systemctl restart netdata
|
||||
```
|
||||
|
||||
Тест алертов:
|
||||
|
||||
```bash
|
||||
sudo su -s /bin/bash netdata
|
||||
export NETDATA_ALARM_NOTIFY_DEBUG=1
|
||||
/usr/libexec/netdata/plugins.d/alarm-notify.sh test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Мониторинг контейнеров и VM
|
||||
|
||||
Netdata на хосте видит общие метрики (CPU, RAM, диск хоста). Для детального мониторинга каждого LXC/VM:
|
||||
|
||||
- **Вариант 1:** Netdata parent/child — установить агент в каждый CT/VM, связать с родителем.
|
||||
- **Вариант 2:** Один Netdata на хосте — мониторит хост и агрегирует по контейнерам через cgroups (если включено).
|
||||
|
||||
Для homelab обычно достаточно мониторинга хоста. При необходимости — см. [Netdata Parent-Child](https://learn.netdata.cloud/docs/agent/streaming).
|
||||
|
||||
---
|
||||
|
||||
## Отключение Netdata Cloud
|
||||
|
||||
Если не нужен trial/Cloud:
|
||||
|
||||
1. **Полное отключение:** удалить `/var/lib/netdata/cloud.d/` (токены, ключи) и создать заново только `cloud.conf`:
|
||||
```bash
|
||||
rm -rf /var/lib/netdata/cloud.d
|
||||
mkdir -p /var/lib/netdata/cloud.d
|
||||
echo -e "[global]\nenabled = no" > /var/lib/netdata/cloud.d/cloud.conf
|
||||
chown -R netdata:netdata /var/lib/netdata/cloud.d
|
||||
systemctl restart netdata
|
||||
```
|
||||
|
||||
2. **Локальный дашборд** — http://host:19999 (анонимный доступ, без Cloud). Не использовать app.netdata.cloud — иначе снова появится claim/Cloud.
|
||||
|
||||
---
|
||||
|
||||
## Связанные документы
|
||||
|
||||
- [smartd-setup.md](smartd-setup.md) — SMART и диски
|
||||
- [backup-howto](../backup/backup-howto.md) — бэкапы
|
||||
109
docs/monitoring/smartd-setup.md
Normal file
109
docs/monitoring/smartd-setup.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# SMART и smartd — мониторинг дисков
|
||||
|
||||
Настройка `smartd` для мониторинга дисков Proxmox: NVMe, HDD, SSD. При отклонениях — уведомление в Telegram через `notify-telegram.sh`.
|
||||
|
||||
---
|
||||
|
||||
## Диски (из контекста homelab)
|
||||
|
||||
| Устройство | Тип | Размер | Использование |
|
||||
|--------------|------|--------|----------------------------------|
|
||||
| /dev/nvme0n1 | NVMe | 256 GB | LVM (система, local-lvm) |
|
||||
| /dev/sda | HDD | 2 TB | ZFS |
|
||||
| /dev/sdb | SSD | 2 TB | ext4, /mnt/backup |
|
||||
| /dev/sdc | HDD | 2 TB | ZFS (RAID1 с sda) |
|
||||
| /dev/sdd | HDD | 8 TB | ext4 (внешний) |
|
||||
|
||||
---
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
apt install -y smartmontools
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Конфигурация smartd
|
||||
|
||||
Файл: `/etc/smartd.conf`. Текущая конфигурация на хосте:
|
||||
|
||||
```conf
|
||||
# NVMe (система)
|
||||
/dev/nvme0n1 -a -W 4,45,55 -m root -M exec /root/scripts/smartd-notify.sh
|
||||
|
||||
# HDD sda (ZFS)
|
||||
/dev/sda -a -d ata -R 5 -R 197 -R 198 -W 4,45,55 -m root -M exec /root/scripts/smartd-notify.sh
|
||||
|
||||
# SSD sdb (backup)
|
||||
/dev/sdb -a -d ata -R 5 -R 197 -R 198 -W 4,45,55 -m root -M exec /root/scripts/smartd-notify.sh
|
||||
|
||||
# HDD sdc (ZFS)
|
||||
/dev/sdc -a -d ata -R 5 -R 197 -R 198 -W 4,45,55 -m root -M exec /root/scripts/smartd-notify.sh
|
||||
|
||||
# HDD sdd (внешний, USB/SAT)
|
||||
/dev/sdd -a -d sat -R 5 -R 197 -R 198 -W 4,45,55 -m root -M exec /root/scripts/smartd-notify.sh
|
||||
```
|
||||
|
||||
**Параметры:**
|
||||
- `-a` — мониторить все атрибуты
|
||||
- `-d ata` / `-d sat` — тип устройства (ata для SATA, sat для USB/SAT)
|
||||
- `-R 5` — Reallocated_Sector_Ct
|
||||
- `-R 197` — Current_Pending_Sector
|
||||
- `-R 198` — Offline_Uncorrectable
|
||||
- `-W 4,45,55` — температура: delta 4°C, warn 45°C, crit 55°C
|
||||
- `-M exec` — выполнить скрипт при проблеме
|
||||
|
||||
---
|
||||
|
||||
## Скрипт уведомления в Telegram
|
||||
|
||||
Создать `/root/scripts/smartd-notify.sh`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Вызывается smartd при обнаружении проблемы.
|
||||
# Аргументы: device, type (health/usage/fail), message
|
||||
# См. man smartd.conf (-M exec)
|
||||
|
||||
NOTIFY_SCRIPT="${NOTIFY_SCRIPT:-/root/scripts/notify-telegram.sh}"
|
||||
DEVICE="${1:-unknown}"
|
||||
# smartd передаёт полный вывод в stdin
|
||||
MSG=$(cat)
|
||||
SUMMARY="${2:-SMART problem}"
|
||||
|
||||
if [ -x "$NOTIFY_SCRIPT" ]; then
|
||||
"$NOTIFY_SCRIPT" "⚠️ SMART" "Диск $DEVICE: $SUMMARY
|
||||
|
||||
$MSG" || true
|
||||
fi
|
||||
|
||||
# Передать дальше в mail (если настроен)
|
||||
exit 0
|
||||
```
|
||||
|
||||
Сделать исполняемым: `chmod +x /root/scripts/smartd-notify.sh`
|
||||
|
||||
**Примечание:** smartd при `-M exec` передаёт в скрипт до 3 аргументов и stdin. Точный формат см. в `man smartd.conf` (раздел -M exec).
|
||||
|
||||
---
|
||||
|
||||
## Запуск smartd
|
||||
|
||||
```bash
|
||||
systemctl enable --now smartd
|
||||
systemctl status smartd
|
||||
```
|
||||
|
||||
Проверка вручную:
|
||||
|
||||
```bash
|
||||
smartctl -a /dev/sda
|
||||
smartctl -a /dev/nvme0n1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Интеграция с Netdata
|
||||
|
||||
Netdata имеет плагин smartmontools. После установки smartmontools и настройки smartd Netdata может отображать метрики SMART на дашборде. См. [netdata-proxmox-setup.md](netdata-proxmox-setup.md).
|
||||
Reference in New Issue
Block a user