Мониторинг сервера Linux
Мониторинг сервера Linux в Наблюдателе — это агент сервера: небольшая служба systemd, которая ставится одной командой. Она раз в 30 секунд отправляет метрики машины: загрузку CPU по ядрам и топ процессов, память и swap, давление на память (PSI), диски и inode, сеть и TCP-соединения, load average. Отдельно агент следит за OOM — когда ядро убивает процесс из-за нехватки памяти.
Агент сервера нужен, если вы хотите видеть саму машину: заканчивается ли диск, кто съел CPU, хватает ли памяти. Контейнеры и приложения наблюдает агент стека — Docker Compose или Kubernetes.
Какие системы поддерживаются
- Linux с systemd — подойдёт любой современный дистрибутив, где есть
systemctl. - Архитектура x86_64 (amd64). Серверы на ARM (aarch64) пока не поддерживаются: скрипт остановится с сообщением об этом.
- Права root: команду выполняют через
sudo. curlдля загрузки скрипта и агента.- Исходящий HTTPS до
nablserver.ru(загрузка агента) иapp.nablserver.ru(отправка данных). Входящие подключения не нужны.
Как установить агента на сервер
- В кабинете откройте «Серверы» → «Добавить сервер». Укажите название и основной IP, нажмите «Создать».
- На странице сервера нажмите «Агент» → «Создать агента», введите название и нажмите «Создать».
- Скопируйте «Команду для Linux (systemd)» и выполните её на сервере.
Команда выглядит так:
curl -fsSL https://nablserver.ru/install.sh | sudo -E env NABL_AGENT_TOKEN=<ТОКЕН_АГЕНТА> NABL_BASE_URL=https://app.nablserver.ru shВажно. Токен показывается один раз. Если окно закрыто, а токен не сохранён — выпустите новый, см. Обновление агента и токен.
Чтобы сервер был виден в проекте, подключите его к проекту: «Управление» → «Серверы» → «Привязать».
Если на этой машине уже работает стек со своим агентом, связывать их вручную обычно не нужно. Наблюдатель видит, что контейнеры или поды стека работают на машине с агентом сервера, и связывает их сам: сервер подключается к проекту стека, в ленте стека появляется событие «Стек связан с сервером», а в шапке стека у сервера стоит пометка «авто». Кнопка «Связать» на странице стека остаётся для неоднозначных случаев — например, когда похожее имя у нескольких серверов. Если отвязать сервер в настройках стека, сам он больше не вернётся.
Проект с редакторами. Если в проекте есть участники с ролью «Редактор», стек сам связывается только с сервером, который уже подключён к проекту. Новый сервер подключает владелец проекта — до этого Наблюдатель предлагает его кнопкой «Связать».
Что делает скрипт установки
Скрипт install.sh:
- Проверяет, что он запущен от root, что это Linux с systemd и что есть
curl. - Определяет архитектуру и скачивает агента с
https://nablserver.ru/releases/. - Кладёт программу в
/opt/nabl-agent/nabl-agent, настройки — в/opt/nabl-agent/.env. - Создаёт службу
nabl-agent.service, включает её и запускает. Служба перезапускается сама, если агент упал.
Посмотреть скрипт перед запуском (так лучше делать на production):
curl -fsSL https://nablserver.ru/install.sh -o install.sh
less install.sh
sudo -E env NABL_AGENT_TOKEN=<ТОКЕН_АГЕНТА> NABL_BASE_URL=https://app.nablserver.ru sh install.shДополнительные переменные:
| Переменная | Что делает |
|---|---|
NABL_INTERVAL |
период отправки, секунды. По умолчанию 30 |
NABL_INSTALL_DRY_RUN=1 |
только скачать агента и показать, что будет сделано, без установки |
Как проверить, что данные пошли
sudo systemctl status nabl-agent --no-pager
sudo journalctl -u nabl-agent -fСлужба должна быть active (running), а в журнале — строка запуска вида nabl-agent 0.14.1 mode=host … без ошибок 401.
Через 30 секунд на странице сервера появятся метрики: вкладки «Дашборд», «CPU», «Память», «Диск», «Сеть», «Инциденты». В разделе «Агенты» статус агента станет «Активен».
Что собирает агент сервера
| Раздел | Метрики |
|---|---|
| CPU | общая загрузка, user, system, iowait, steal; загрузка каждого ядра; топ-15 процессов по CPU (до агента 0.14.1 — топ-5) |
| Load average | средняя нагрузка за 1, 5 и 15 минут |
| Память | использование, доступно, cached и buffers |
| Swap | объём и использование, скорость подкачки (swap in/out) |
| PSI | давление на память из /proc/pressure/memory (ядро 4.20+): сколько времени процессы ждали память |
| OOM | процессы, убитые ядром из-за нехватки памяти, — из журнала ядра |
| Диски | занято и свободно по разделам, inode, операции и скорость чтения и записи, задержка |
| Сеть | трафик по интерфейсам, ошибки и отброшенные пакеты |
| TCP | число соединений по состояниям: ESTABLISHED, TIME_WAIT, CLOSE_WAIT и другие |
| Связи контейнеров | с каким адресом и портом соединены контейнеры и поды этой машины и сколько соединений — агент 0.14+. Содержимое трафика не читается |
| Открытые файлы | процесс, ближе всех подошедший к лимиту открытых файлов |
| Система | имя хоста, ОС, uptime |
Процессы передаются только по имени, без аргументов командной строки. Что агент читает на сервере и что уходит в облако — в статье Как работает агент.
Живой снимок CPU, памяти, дисков и сети можно открыть в кабинете на странице сервера. Как пользоваться графиками и вкладками — в статье Серверы.
Сервер и Docker Compose на одной машине
Агент сервера собирает метрики машины. Трассы, события и логи приложений, свои метрики, статусы и ресурсы контейнеров он не принимает — это работа агента стека.
Если на сервере работает Docker Compose, поставьте оба:
- агента сервера — диски, CPU, память и сеть машины;
- агента в compose-стек — контейнеры, ошибки, трассы.
Они не мешают друг другу и дополняют друг друга. Наблюдатель сам свяжет стек с сервером, и сбои контейнеров будут видны рядом с диском и памятью машины. А с агентами 0.14 агент сервера видит сетевые соединения контейнеров стека: на карте сервисов появляются пунктирные связи к сервисам без трассировки — базам, очередям, сервисам без OpenTelemetry SDK. Для этого нужны агент сервера 0.14+ на машине стека и агент стека 0.14+.
Как сменить токен или настройки
Агент перечитывает /opt/nabl-agent/.env перед каждой отправкой, поэтому перезапуск службы не нужен. Заменить токен:
sudo sed -i 's/^NABL_AGENT_TOKEN=.*/NABL_AGENT_TOKEN=<НОВЫЙ_ТОКЕН>/' /opt/nabl-agent/.envТак же меняются NABL_BASE_URL, NABL_INTERVAL. Где взять новый токен — в статье Обновление агента и токен.
Как обновить агента
Токен и настройки при обновлении сохраняются:
curl -fsSL https://nablserver.ru/update.sh | sudo shСкрипт скачает новую версию, остановит службу, заменит программу и запустит службу снова. Если версия уже актуальная, он ничего не перезапускает.
Частые ошибки
| Сообщение | Что делать |
|---|---|
нужны права root |
Запустите команду через sudo, как в кабинете. |
поддерживается только Linux (systemd) или systemctl не найден |
На машине нет systemd. Такая система пока не поддерживается. |
неподдерживаемая архитектура или arm64 пока не поддерживается |
Сервер на ARM. Пока поддерживается только x86_64. |
не удалось скачать nabl-agent |
Нет доступа к https://nablserver.ru: проверьте DNS, прокси и firewall. |
В журнале 401 или «токен отклонён» |
Токен неверный или перевыпущен. Замените его в .env. |
| Служба работает, но сервер «Неактивен» | Нет исходящего доступа к https://app.nablserver.ru. |
Другие случаи — в статье Решение проблем.
Как удалить агента с сервера
sudo systemctl disable --now nabl-agent
sudo rm -f /etc/systemd/system/nabl-agent.service && sudo systemctl daemon-reload
sudo rm -rf /opt/nabl-agentЗатем удалите агента в кабинете в разделе «Агенты».
Совет. ИИ-ассистент через MCP создаст сервер, выдаст команду установки и покажет текущую нагрузку и топ процессов. См. ИИ-ассистент.
Что дальше
- Серверы — графики и вкладки сервера.
- Правила уведомлений — диск заканчивается, CPU и память на пределе.
- Как работает агент — что агент читает и отправляет.
- Обновление агента и токен — версии и смена токена.
Первый сервер или стек подключается за пару минут. Бесплатно в раннем доступе.
Нашли неточность или не хватает ответа? Напишите на hello@nablserver.ru