Linux #Сервер #Linux #Proxmox #Telegram #Мониторинг #Bash

uptimka: мой мониторинг сервера с уведомлениями в Telegram — на чистом Bash, с поддержкой Proxmox

Написал маленький мониторинг для своего домашнего сервера: дашборд в терминале, алерты и ежедневный отчёт в Telegram, контроль виртуалок, хранилищ, бэкапов и износа SSD в Proxmox. Показываю установку одной командой и настройку.

13 минут 1
Дашборд uptimka на сервере с Proxmox: система, ресурсы, виртуалка FastPanel, контейнеры Immich и Samba, хранилища, бэкапы, SMART диска NVMe, топ процессов
Содержание
  1. 1Что умеет uptimka
  2. 2Что понадобится
  3. 3Шаг 1. Бот в Telegram
  4. 4Шаг 2. Установка
  5. 5Дашборд: что видно на моём сервере
  6. 6Какие уведомления приходят
  7. Как проверить, что алерты работают
  8. 7Настройки
  9. 8Команды
  10. 9Что у меня пошло не так
  11. 10Сколько ресурсов тратит
  12. 11Обновление и удаление
  13. 12Главные советы
  14. 13Частые вопросы
  15. Это бесплатно?
  16. Подойдёт для обычного VPS без Proxmox и Docker?
  17. Можно следить только за некоторыми виртуалками?
  18. Почему не пришёл отчёт сразу после установки?
  19. Будут ли тревоги из-за выключенной виртуалки?
  20. Сервер не может отправить сообщение в Telegram — что делать?
  21. Не нагружает ли он сервер?

На моём домашнем сервере с Proxmox работают сайты, фотоархив и общие папки. Хотелось узнавать о проблемах раньше, чем их заметят посетители: кончилось место, упала виртуалка, не сделался бэкап. Zabbix и Grafana для одного сервера — как грузовик за хлебом, поэтому я написал свой маленький мониторинг на Bash и назвал его uptimka.

Он бесплатный и открытый, лежит на GitHub. Ниже рассказываю, что он умеет, как я поставил его на свой сервер и что пошло не так по дороге.

Что умеет uptimka

  • 📊 Дашборд в терминале. Команда uptimka показывает процессор, память, диски, температуру, нагрузку и самые прожорливые процессы. uptimka -w — живой режим с обновлением каждые 2 секунды.
  • 🚨 Алерты в Telegram. Сообщение приходит, когда процессор, память или диск переходят порог, падает Docker-контейнер или виртуалка в Proxmox.
  • ✅ Сообщение «всё снова в норме» — с тем, сколько длилась проблема.
  • 🔔 Без спама. Если проблема затянулась, напоминание приходит раз в час. А если ситуация поменялась, например к заполненному диску добавилась упавшая виртуалка, — сразу.
  • 📬 Регулярный отчёт раз в час, раз в день или раз в неделю, даже когда всё хорошо: текущие цифры, пики за период и сколько было проблем.
  • 🖥 Proxmox. Виртуалки и контейнеры, хранилища, бэкапы — всё в дашборде, алертах и отчёте.
  • 🩺 Здоровье SSD. Износ, сколько записано, температура и статус SMART.
  • 🔄 Уведомление о перезагрузке сервера.

Сам скрипт — один файл. Он не висит в памяти: запускается по таймеру, за пару секунд всё проверяет и завершается. Ставить Python-агентов, базы данных и веб-панели не нужно.

Что понадобится

  • Сервер на Linux: VPS, домашний сервер, Raspberry Pi или хост Proxmox. Нужны systemd или cron — они есть почти везде.
  • bash, curl, awk и ps — стандартный набор.
  • Бот в Telegram.
  • Для раздела Proxmox — права root и python3, на Proxmox он есть из коробки. Для SMART — smartctl, на Proxmox тоже уже стоит.

Шаг 1. Бот в Telegram

  1. 🤖 Напишите @BotFather команду /newbot, придумайте имя — и получите токен вида 123456789:AAH….
  2. ▶️ Откройте своего нового бота и нажмите «Запустить». Без этого бот не сможет вам писать.
  3. 🔢 Узнайте свой Chat ID — это число. Проще всего спросить у @userinfobot: он ответит строкой Id: 123456789.

Я завёл для сервера отдельного бота, а не взял того, что публикует статьи сайта. Так уведомления не путаются с остальным.

Шаг 2. Установка

На обычном сервере с sudo:

Терминал
curl -sSL https://raw.githubusercontent.com/nixlife-lab/uptimka/main/install.sh | sudo bash

На Proxmox я и так работаю под root, а sudo там по умолчанию нет. Поэтому без него:

Терминал
curl -sSL https://raw.githubusercontent.com/nixlife-lab/uptimka/main/install.sh | bash

Установщик задаёт вопросы по очереди. В квадратных скобках — значение по умолчанию: если оно подходит, просто нажмите Enter.

Установщик uptimka на хосте Proxmox: токен бота, Chat ID, пороги, интервал проверки, отчёт каждый день, список виртуалок и контейнеров
Установка на мой сервер: Chat ID размыт

Что я ответил:

ВопросМой ответЗачем
Bot Tokenтокен ботаввод скрыт, на экране его не видно
Chat IDсвоё числокуда слать сообщения
Пороги CPU, RAM, диска85, 90, 90 — по умолчаниюпри каком заполнении поднимать тревогу
Какие диски проверять/ — по умолчаниюна Proxmox остальное видно через хранилища
Интервал проверки10 минутдля дома хватает с запасом
Регулярный отчёт2 — каждый день в 11:00время — по часам сервера
Proxmox: следить?да, за всемиможно перечислить только нужные ID
Давность бэкапа0 — не следитьбэкапы я делаю вручную

Дальше установщик отправляет тестовое сообщение. Если оно дошло, скачивает скрипт в /usr/local/bin/uptimka, сохраняет настройки в /etc/uptimka/uptimka.conf и ставит systemd-таймер. На системах без systemd вместо него будет задача в cron.

Telegram: «uptimka установлен! Хост: server. Уведомления будут приходить сюда»
Первое сообщение от бота

💡 Проверить, что таймер работает, можно командой systemctl list-timers uptimka. Если хотите разобраться, как устроены такие таймеры, — у меня есть статья про systemd и journalctl.

Дашборд: что видно на моём сервере

Набираю uptimka — и вижу всё сразу:

Дашборд uptimka на сервере с Proxmox: система, ресурсы, виртуалка FastPanel, контейнеры Immich и Samba, хранилища, бэкапы, SMART диска NVMe, топ процессов
Мой сервер ночью: всё в норме

По порядку:

  • 📋 Система — имя хоста, сколько работает без перезагрузки, температура процессора (у меня 49 °C) и нагрузка. Строка «Отчёты» напоминает, когда придёт следующий отчёт.
  • 📊 Ресурсы. Шкалы зелёные, на 80 % от порога желтеют, после порога краснеют. Сервер ночью почти отдыхает: процессор 0 %, память 25 % — 7,8 ГБ из 32.
  • 🖥 Proxmox. Виртуалка FastPanel с сайтами взяла 3,8 ГБ из 12, контейнер Immich занимает 53 % своего диска. Хранилище local-lvm, где лежат диски всех машин, заполнено на 34 %. Ниже — когда был последний бэкап каждой машины.
  • 🩺 SMART. Мой NVMe за всё время записал 5,73 ТБ, износ — 1 %. Как раз то, что я хотел видеть, когда переживал за ресурс SSD.
  • 🏆 Топ-3 по памяти. На Proxmox первым почти всегда идёт kvm — это и есть виртуальная машина.

Если остановится машина с включённым автозапуском, у неё загорится 🔴, а в самом верху дашборда появится блок «🚨 Внимание» со списком проблем. Машины, которые выключены специально и без автозапуска, просто показываются серыми ⚪ — тревоги из-за них не будет.

Какие уведомления приходят

СообщениеКогда
🚨 Проблема на сервере!порог превышен, упал контейнер, остановилась виртуалка, кончается место в хранилище, бэкап с ошибкой, проблемы со SMART
⚠️ Ситуация измениласьк проблеме добавилась новая или часть ушла — не дожидаясь часа
🔔 Проблема сохраняетсянапоминание раз в час, пока не починили
✅ Всё снова в нормепоказатели вернулись — с длительностью проблемы
🔄 Сервер перезагрузилсяпосле перезагрузки
📊 Отчёт о серверепо расписанию: раз в час, день или неделю

В каждом алерте есть топ процессов по памяти — часто сразу понятно, кто виноват.

Отчёт можно запросить в любой момент командой uptimka --report, а проверить связь — командой uptimka --test. Вот как это выглядит у меня:

Telegram: тестовое сообщение uptimka и отчёт о сервере — ресурсы, виртуалки и контейнеры Proxmox, хранилища, бэкапы, SMART NVMe, пики за сутки, топ процессов
Тест и ежедневный отчёт

💡 Если uptimka не смог отправить сообщение, например Telegram не ответил, он не потеряет его, а попробует снова при следующей проверке.

Как проверить, что алерты работают

Ждать настоящей аварии не обязательно. Откройте настройки:

Терминал
nano /etc/uptimka/uptimka.conf

Поставьте DISK_THRESHOLD=10 и запустите проверку вручную:

Терминал
uptimka --cron

Придёт «🚨 Проблема на сервере!» про диск. Верните DISK_THRESHOLD=90, снова выполните uptimka --cron — придёт «✅ Всё снова в норме». Перезапускать ничего не нужно: настройки читаются при каждой проверке.

Настройки

Все параметры живут в /etc/uptimka/uptimka.conf. Самые полезные:

ПараметрПо умолчаниюЧто делает
CPU_THRESHOLD, RAM_THRESHOLD, DISK_THRESHOLD85, 90, 90пороги в процентах
DISKS/какие точки монтирования проверять, через пробел
ALERT_COOLDOWN3600как часто напоминать о затянувшейся проблеме, в секундах
REPORTdailyотчёт: off, hourly, daily, weekly
REPORT_TIME, REPORT_DAY09:00, 1время отчёта и день недели (1 — понедельник)
DOCKERautooff — не проверять Docker совсем
DOCKER_IGNOREпустоконтейнеры, за которыми не следить
PROXMOX_GUESTSпусто — всетолько эти ID, например "100 101"
PROXMOX_IGNOREпустомашины, за которыми не следить
STORAGE_THRESHOLD90порог заполнения хранилищ Proxmox
BACKUP_MAX_AGE_DAYS0предупредить, если бэкапу больше N дней
SSD_WEAR_THRESHOLD80предупредить, когда износ SSD дойдёт до N %
NOTIFY_REBOOTtrueсообщать о перезагрузке

Если в настройке опечатка, например в пороге написано не число, uptimka возьмёт значение по умолчанию и покажет предупреждение внизу дашборда.

Команды

Терминал: uptimka --test, --report, --version и справка --help со списком команд
Все команды uptimka
КомандаЧто делает
uptimkaдашборд
uptimka -wживой дашборд, выход — Ctrl+C
uptimka --testтестовое сообщение в Telegram
uptimka --reportотчёт прямо сейчас
uptimka --cronпроверка вручную — то, что делает таймер
uptimka --uninstallудалить uptimka с сервера

На обычном сервере команды, которые отправляют сообщения или удаляют, запускайте через sudo.

Что у меня пошло не так

  • 🙅 sudo: command not found. На Proxmox sudo по умолчанию нет — я уже был под root, поэтому просто убрал sudo из команды. Заодно curl пожаловался на «Failure writing output»: это не отдельная ошибка, а следствие первой — скачанный скрипт некому было передать.
  • 📵 HTTP 000 при проверке Telegram. Значит, сервер вообще не достучался до api.telegram.org. Если у вас так же, uptimka умеет отправлять сообщения через прокси: при установке он сам предложит указать адрес, а пример с SSH-туннелем через свой VPS есть в README на GitHub. Проверить, доходит ли сервер до Telegram, можно так: curl -s -m 10 https://api.telegram.org | head -c 80 — должен прийти кусок HTML.
  • 🔢 HTTP 403. Я сначала ввёл не тот Chat ID. Telegram отвечает 403, когда бот не может написать в этот чат: ID неверный или вы не нажали у бота «Запустить». Установщик теперь показывает дословный ответ Telegram и подсказывает, как узнать свой ID.

Сколько ресурсов тратит

  • ⏱ Одна проверка длится около двух секунд, из них секунда — пауза между двумя замерами процессора. Остальное время uptimka в памяти нет.
  • 💾 Цифры он берёт из /proc и /sys — это не файлы на диске, а данные ядра в памяти. На диск пишется только маленький файл состояния, меньше килобайта. По моей оценке, это несколько мегабайт записи в сутки вместе с журналом файловой системы — для SSD ничего не значит. Сам Proxmox пишет на диск в сотни раз больше.
  • 🔌 Сеть нужна только чтобы отправить сообщение в Telegram.

Обновление и удаление

Чтобы обновить, запустите команду установки ещё раз и на вопрос «Оставить текущие настройки?» ответьте «да». Пороги и токен сохранятся.

Удалить:

Терминал
uptimka --uninstall

Скрипт уберёт таймер, файл программы и состояние, а про настройки спросит отдельно.

Главные советы

  • Отдельный бот для сервера. Так алерты не перемешаются с другими уведомлениями, а токен можно поменять, ничего больше не сломав.
  • Сначала «Запустить» у бота. Иначе Telegram ответит 403 — бот не может написать первым.
  • Проверьте алерт заранее. Понизьте DISK_THRESHOLD до 10 и выполните uptimka --cron — так вы убедитесь, что тревога дойдёт, до настоящей аварии.
  • Время отчёта — по часам сервера. На VPS это часто UTC, на 3 часа меньше московского. Проверить можно командой date.
  • На Proxmox ставьте на хост. Тогда видно всю машину: все виртуалки, хранилища, бэкапы и диск. Внутри виртуалки uptimka увидит только её саму.
  • Следите за давностью бэкапов. Если делаете копии вручную, как я, задайте BACKUP_MAX_AGE_DAYS=14 — uptimka напомнит, что пора.

Частые вопросы

Это бесплатно?

Да. uptimka — открытый проект под лицензией MIT, исходники на GitHub. Можно смотреть код, менять под себя и предлагать улучшения.

Подойдёт для обычного VPS без Proxmox и Docker?

Да. Раздел Proxmox появляется, только если скрипт стоит на хосте Proxmox, а раздел Docker — только если Docker установлен. На простом VPS останутся процессор, память, диски, температура и отчёты. Если интересно, как проверить ещё и канал до VPS, — у меня есть статья про скорость и пинг до сервера.

Можно следить только за некоторыми виртуалками?

Да. Перечислите их номера в PROXMOX_GUESTS="100 101" или, наоборот, исключите лишние через PROXMOX_IGNORE. При установке на Proxmox установщик сам покажет список машин и спросит.

Почему не пришёл отчёт сразу после установки?

Так задумано: сразу после установки приходит тестовое сообщение, а первый отчёт — в следующем периоде, например на следующий день в выбранное время. Получить отчёт сейчас можно командой uptimka --report.

Будут ли тревоги из-за выключенной виртуалки?

Только если у неё включён автозапуск: значит, она должна работать, а не работает. Машины без автозапуска, которые вы выключили сами, показываются серыми ⚪ и тревогу не поднимают.

Сервер не может отправить сообщение в Telegram — что делать?

Сначала проверьте, доходит ли сервер до Telegram: curl -s -m 10 https://api.telegram.org | head -c 80. Если ответа нет, укажите прокси в TG_PROXY в настройках — например socks5h://127.0.0.1:1080 с SSH-туннелем через свой VPS. Подробный рецепт — в README проекта.

Не нагружает ли он сервер?

Нет. Проверка длится около двух секунд раз в несколько минут, всё остальное время скрипт не работает и памяти не занимает.

Чтобы быть в курсе новых статей на сайте, подпишитесь на Telegram-канал. А если поставите uptimka себе — напишите в комментариях, чего ему не хватает: проект живой, и я его дорабатываю.

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.