Мониторинг сервера 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 до nablops.io (загрузка агента) и app.nablops.io (отправка данных). Входящие подключения не нужны.

Как установить агента на сервер

  1. В кабинете откройте «Серверы» → «Добавить сервер». Укажите название и основной IP, нажмите «Создать».
  2. На странице сервера нажмите «Агент» → «Создать агента», введите название и нажмите «Создать».
  3. Скопируйте «Команду для Linux (systemd)» и выполните её на сервере.

Команда выглядит так:

bash
curl -fsSL https://nablops.io/install.sh | sudo -E env NABL_AGENT_TOKEN=<ТОКЕН_АГЕНТА> NABL_BASE_URL=https://app.nablops.io sh

Важно. Токен показывается один раз. Если окно закрыто, а токен не сохранён — выпустите новый, см. Обновление агента и токен.

Чтобы сервер был виден в проекте, подключите его к проекту: «Управление» → «Серверы» → «Привязать».

Если на этой машине уже работает стек со своим агентом, связывать их вручную обычно не нужно. Наблюдатель видит, что контейнеры или поды стека работают на машине с агентом сервера, и связывает их сам: сервер подключается к проекту стека, в ленте стека появляется событие «Стек связан с сервером», а в шапке стека у сервера стоит пометка «авто». Кнопка «Связать» на странице стека остаётся для неоднозначных случаев — например, когда похожее имя у нескольких серверов. Если отвязать сервер в настройках стека, сам он больше не вернётся.

Проект с редакторами. Если в проекте есть участники с ролью «Редактор», стек сам связывается только с сервером, который уже подключён к проекту. Новый сервер подключает владелец проекта — до этого Наблюдатель предлагает его кнопкой «Связать».

Что делает скрипт установки

Скрипт install.sh:

  1. Проверяет, что он запущен от root, что это Linux с systemd и что есть curl.
  2. Определяет архитектуру и скачивает агента с https://nablops.io/releases/.
  3. Кладёт программу в /opt/nabl-agent/nabl-agent, настройки — в /opt/nabl-agent/.env.
  4. Создаёт службу nabl-agent.service, включает её и запускает. Служба перезапускается сама, если агент упал.

Посмотреть скрипт перед запуском (так лучше делать на production):

bash
curl -fsSL https://nablops.io/install.sh -o install.sh
less install.sh
sudo -E env NABL_AGENT_TOKEN=<ТОКЕН_АГЕНТА> NABL_BASE_URL=https://app.nablops.io sh install.sh

Дополнительные переменные:

Переменная Что делает
NABL_INTERVAL период отправки, секунды. По умолчанию 30
NABL_INSTALL_DRY_RUN=1 только скачать агента и показать, что будет сделано, без установки

Как проверить, что данные пошли

bash
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 перед каждой отправкой, поэтому перезапуск службы не нужен. Заменить токен:

bash
sudo sed -i 's/^NABL_AGENT_TOKEN=.*/NABL_AGENT_TOKEN=<НОВЫЙ_ТОКЕН>/' /opt/nabl-agent/.env

Так же меняются NABL_BASE_URL, NABL_INTERVAL. Где взять новый токен — в статье Обновление агента и токен.

Как обновить агента

Токен и настройки при обновлении сохраняются:

bash
curl -fsSL https://nablops.io/update.sh | sudo sh

Скрипт скачает новую версию, остановит службу, заменит программу и запустит службу снова. Если версия уже актуальная, он ничего не перезапускает.

Частые ошибки

Сообщение Что делать
нужны права root Запустите команду через sudo, как в кабинете.
поддерживается только Linux (systemd) или systemctl не найден На машине нет systemd. Такая система пока не поддерживается.
неподдерживаемая архитектура или arm64 пока не поддерживается Сервер на ARM. Пока поддерживается только x86_64.
не удалось скачать nabl-agent Нет доступа к https://nablops.io: проверьте DNS, прокси и firewall.
В журнале 401 или «токен отклонён» Токен неверный или перевыпущен. Замените его в .env.
Служба работает, но сервер «Неактивен» Нет исходящего доступа к https://app.nablops.io.

Другие случаи — в статье Решение проблем.

Как удалить агента с сервера

bash
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 создаст сервер, выдаст команду установки и покажет текущую нагрузку и топ процессов. См. ИИ-ассистент.

Что дальше

Попробуйте Наблюдатель

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

Создать аккаунт

Нашли неточность или не хватает ответа? Напишите в поддержку