164 lines
6.7 KiB
Markdown
164 lines
6.7 KiB
Markdown
# Конфигурация
|
||
|
||
Проект использует `config.yaml`. Начни с `config.example.yaml`.
|
||
|
||
## telegram
|
||
|
||
- `token` (string, обяз.): токен бота.
|
||
- `admin_id` (int, обяз.): Telegram user id администратора.
|
||
|
||
## paths
|
||
|
||
- `artifact_state` (string): JSON файл состояния артефактов.
|
||
- `restic_env` (string): путь к файлу с RESTIC_* переменными.
|
||
|
||
## thresholds
|
||
|
||
- `disk_warn` (int, %): порог предупреждения по диску.
|
||
- `load_warn` (float): порог предупреждения по нагрузке.
|
||
- `high_load_warn` (float): порог для критической нагрузки.
|
||
|
||
## alerts
|
||
|
||
- `enabled` (bool): включить алерты.
|
||
- `interval_sec` (int): интервал опроса.
|
||
- `cooldown_sec` (int): кулдаун между алертами.
|
||
- `notify_cooldown_sec` (int): глобальный дедуп алертов (по умолчанию `cooldown_sec`).
|
||
- `load_only_critical` (bool): слать только критичные алерты по нагрузке (без warn/OK).
|
||
- `quiet_hours` (object): тихие часы для не‑критичных уведомлений.
|
||
- `enabled` (bool): включить тихие часы.
|
||
- `start` (string): начало, формат `HH:MM` (например `23:00`).
|
||
- `end` (string): конец, формат `HH:MM` (например `08:00`).
|
||
- `allow_critical` (bool): слать критичные алерты в тишину.
|
||
- `notify_recovery` (bool): уведомлять о восстановлении.
|
||
- `smart_enabled` (bool): SMART проверки.
|
||
- `smart_interval_sec` (int): интервал SMART.
|
||
- `smart_cooldown_sec` (int): кулдаун SMART.
|
||
- `smart_temp_warn` (int): порог температуры (C).
|
||
|
||
## disk_report
|
||
|
||
- `threshold` (int): порог диска для авто‑снимка.
|
||
- `cooldown_sec` (int): кулдаун между снимками.
|
||
- `top_dirs` (int): сколько директорий показывать.
|
||
- `docker_dir` (string): путь к docker данным.
|
||
- `logs_dir` (string): путь к логам.
|
||
|
||
## audit
|
||
|
||
- `enabled` (bool): включить аудит.
|
||
- `path` (string): путь к лог-файлу. По умолчанию `/var/server-bot/audit.log`.
|
||
- `rotate_when` (string): режим ротации (`TimedRotatingFileHandler`), например `W0`.
|
||
- `backup_count` (int): сколько файлов хранить.
|
||
|
||
## incidents
|
||
|
||
- `enabled` (bool): включить лог инцидентов.
|
||
- `path` (string): путь к лог-файлу. По умолчанию `/var/server-bot/incidents.log`.
|
||
- `rotate_when` (string): режим ротации (`TimedRotatingFileHandler`), например `W0`.
|
||
- `backup_count` (int): сколько файлов хранить.
|
||
|
||
## logging
|
||
|
||
- `enabled` (bool): включить лог бота.
|
||
- `path` (string): путь к лог-файлу. По умолчанию `/var/server-bot/bot.log`.
|
||
- `rotate_when` (string): режим ротации (`TimedRotatingFileHandler`), например `W0`.
|
||
- `backup_count` (int): сколько файлов хранить.
|
||
- `level` (string): уровень логирования (`INFO`, `WARNING`, `ERROR`).
|
||
|
||
## safety
|
||
|
||
- `dry_run` (bool): если `true`, опасные действия (upgrade/reboot/backup) не выполняются.
|
||
|
||
## external_checks
|
||
|
||
- `enabled` (bool): включить фоновые проверки.
|
||
- `state_path` (string): файл состояния для аптайма, по умолчанию `/var/server-bot/external_checks.json`.
|
||
- `timeout_sec` (int): таймаут проверки в секундах.
|
||
- `interval_sec` (int): интервал фоновых проверок.
|
||
- `services` (list): список проверок.
|
||
- `name` (string): название сервиса.
|
||
- `type` (string): `http`, `tcp`, `ping`.
|
||
- `url` (string): URL для `http`.
|
||
- `host` (string): хост для `tcp`/`ping`.
|
||
- `port` (int): порт для `tcp`.
|
||
|
||
## arcane
|
||
|
||
- `base_url` (string): base url API Arcane.
|
||
- `api_key` (string): ключ API Arcane.
|
||
- `env_id` (int): ID окружения Arcane.
|
||
|
||
## npmplus
|
||
|
||
Используется для статуса SSL сертификатов.
|
||
|
||
- `base_url` (string): base url API, например `https://10.10.10.10:81/api`.
|
||
- `identity` (string): email логин.
|
||
- `secret` (string): пароль.
|
||
- `token` (string): опционально статический токен (не рекомендуется при истечении).
|
||
- `verify_tls` (bool): `false` для self-signed TLS.
|
||
- `alerts.enabled` (bool): включить уведомления по истечению.
|
||
- `alerts.days` (list): пороги в днях (например 30/14/7/1).
|
||
- `alerts.cooldown_sec` (int): кулдаун между одинаковыми алертами.
|
||
- `alerts.interval_sec` (int): интервал проверки.
|
||
|
||
Логика токена:
|
||
|
||
- первый токен: `POST /api/tokens` с `identity` и `secret`.
|
||
- refresh: `GET /api/tokens` с текущим токеном.
|
||
|
||
## gitea
|
||
|
||
- `base_url` (string): base url Gitea, например `http://localhost:3000`.
|
||
- `token` (string): опциональный API токен.
|
||
- `verify_tls` (bool): `false` для self-signed TLS.
|
||
|
||
## openwrt
|
||
|
||
- `host` (string): адрес роутера, например `10.10.10.1`.
|
||
- `user` (string): SSH пользователь (обычно `root`).
|
||
- `port` (int): SSH порт (обычно `22`).
|
||
- `identity_file` (string): путь к SSH ключу (опционально).
|
||
- `strict_host_key_checking` (bool): `false` чтобы не спрашивать подтверждение ключа.
|
||
- `timeout_sec` (int): таймаут SSH запроса.
|
||
|
||
## security
|
||
|
||
- `reboot_password` (string): пароль для подтверждения reboot.
|
||
|
||
## docker
|
||
|
||
- `autodiscovery` (bool): автодискавери по имени/label.
|
||
- `watchdog` (bool): уведомления о контейнерах.
|
||
- `label` (string): фильтр label `key=value`.
|
||
- `match` (list): подстроки для поиска контейнеров.
|
||
- `aliases` (map): alias -> реальное имя.
|
||
- `containers` (map): явный список (legacy). Можно задавать:
|
||
- `name` (string)
|
||
- `url` (string) для URLs проверки
|
||
|
||
Пример:
|
||
|
||
```yaml
|
||
telegram:
|
||
token: "YOUR_TELEGRAM_BOT_TOKEN"
|
||
admin_id: 123456789
|
||
|
||
paths:
|
||
artifact_state: "/opt/tg-bot/state.json"
|
||
restic_env: "/etc/restic/restic.env"
|
||
|
||
audit:
|
||
enabled: true
|
||
path: "/var/server-bot/audit.log"
|
||
rotate_when: "W0"
|
||
backup_count: 8
|
||
|
||
npmplus:
|
||
base_url: "https://10.10.10.10:81/api"
|
||
identity: "your@email.com"
|
||
secret: "yourPassword"
|
||
verify_tls: false
|
||
```
|