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

Содержание
- 1Что умеет uptimka
- 2Что понадобится
- 3Шаг 1. Бот в Telegram
- 4Шаг 2. Установка
- 5Дашборд: что видно на моём сервере
- 6Какие уведомления приходят
- Как проверить, что алерты работают
- 7Настройки
- 8Команды
- 9Что у меня пошло не так
- 10Сколько ресурсов тратит
- 11Обновление и удаление
- 12Главные советы
- 13Частые вопросы
- Это бесплатно?
- Подойдёт для обычного VPS без Proxmox и Docker?
- Можно следить только за некоторыми виртуалками?
- Почему не пришёл отчёт сразу после установки?
- Будут ли тревоги из-за выключенной виртуалки?
- Сервер не может отправить сообщение в Telegram — что делать?
- Не нагружает ли он сервер?
На моём домашнем сервере с 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
- 🤖 Напишите @BotFather команду
/newbot, придумайте имя — и получите токен вида123456789:AAH…. - ▶️ Откройте своего нового бота и нажмите «Запустить». Без этого бот не сможет вам писать.
- 🔢 Узнайте свой 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.

Что я ответил:
| Вопрос | Мой ответ | Зачем |
|---|---|---|
| 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.

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

По порядку:
- 📋 Система — имя хоста, сколько работает без перезагрузки, температура процессора (у меня 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. Вот как это выглядит у меня:

💡 Если 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_THRESHOLD | 85, 90, 90 | пороги в процентах |
DISKS | / | какие точки монтирования проверять, через пробел |
ALERT_COOLDOWN | 3600 | как часто напоминать о затянувшейся проблеме, в секундах |
REPORT | daily | отчёт: off, hourly, daily, weekly |
REPORT_TIME, REPORT_DAY | 09:00, 1 | время отчёта и день недели (1 — понедельник) |
DOCKER | auto | off — не проверять Docker совсем |
DOCKER_IGNORE | пусто | контейнеры, за которыми не следить |
PROXMOX_GUESTS | пусто — все | только эти ID, например "100 101" |
PROXMOX_IGNORE | пусто | машины, за которыми не следить |
STORAGE_THRESHOLD | 90 | порог заполнения хранилищ Proxmox |
BACKUP_MAX_AGE_DAYS | 0 | предупредить, если бэкапу больше N дней |
SSD_WEAR_THRESHOLD | 80 | предупредить, когда износ SSD дойдёт до N % |
NOTIFY_REBOOT | true | сообщать о перезагрузке |
Если в настройке опечатка, например в пороге написано не число, uptimka возьмёт значение по умолчанию и покажет предупреждение внизу дашборда.
Команды

| Команда | Что делает |
|---|---|
uptimka | дашборд |
uptimka -w | живой дашборд, выход — Ctrl+C |
uptimka --test | тестовое сообщение в Telegram |
uptimka --report | отчёт прямо сейчас |
uptimka --cron | проверка вручную — то, что делает таймер |
uptimka --uninstall | удалить uptimka с сервера |
На обычном сервере команды, которые отправляют сообщения или удаляют, запускайте через sudo.
Что у меня пошло не так
- 🙅
sudo: command not found. На Proxmoxsudoпо умолчанию нет — я уже был под 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 себе — напишите в комментариях, чего ему не хватает: проект живой, и я его дорабатываю.
Если статья пригодилась — отметьте, это помогает выбирать темы
Статья помогла?
Комментарии
Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.