6.6 KiB
6.6 KiB
Конфигурация
Проект использует 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).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): фильтр labelkey=value.match(list): подстроки для поиска контейнеров.aliases(map): alias -> реальное имя.containers(map): явный список (legacy). Можно задавать:name(string)url(string) для URLs проверки
Пример:
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