Files
tg-admin-bot/CONFIG.md

7.2 KiB
Raw Blame History

Конфигурация

Проект использует config.yaml. Начни с config.example.yaml.

telegram

  • token (string, обяз.): токен бота.
  • admin_id (int, обяз.): Telegram user id администратора.
  • admin_ids (list): список админов (первый используется как основной для уведомлений).

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) не выполняются.

reports

  • weekly.enabled (bool): включить еженедельный отчёт.
  • weekly.day (string): день недели (Mon..Sun), по умолчанию Sun.
  • weekly.time (string): локальное время HH:MM, по умолчанию 08:00.

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 проверки

Пример:

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