
Программа, о которой пойдёт речь, называется Nigel’s Monitor, или просто nmon. Она, используя простой интерфейс ncurses, умеет выводить, в реальном времени, сведения о различных показателях, характеризующих состояние сервера. Среди них — данные по процессору и памяти, информация о сетевых ресурсах, о дисковых накопителях, о файловой системе и NFS, о процессах. Набор отображаемых показателей можно настраивать. Nmon имеет текстовый интерфейс, поэтому, для работы с ним достаточно подключиться к серверу по SSH.
Предлагаю установить nmon и поговорить о том, как им пользоваться.
Установка
Утилиту nmon можно установить из стандартных репозиториев дистрибутивов серверных ОС. То есть, вы вряд ли столкнётесь с какими-то сложностями. Если ваша система использует
apt
(это — Debian, Ubuntu, и другие), надо выполнить в терминале такие команды:sudo apt-get update
sudo apt-get install nmon
Для дистрибутивов, использующих
dnf
(среди них — Red Hat, Fedora, CentOS), установка будет выглядеть так:dnf install epel-release
dnf install nmon
Как видите, всё просто. Переходим к работе с nmon.
Работа с nmon
Итак, nmon установлен, теперь можно его запустить, выполнив команду
nmon
. В окне утилиты, показанном на рисунке ниже, надо указать, какие именно сведения вас интересуют, включая и отключая соответствующие информационные разделы.
Главное окно nmon содержит подсказки по включению и отключению различных разделов сведений о системе
Скажем, вас интересуют дисковые накопители. Если нажать клавишу
d
на клавиатуре, nmon выведет данные обо всех подключённых к серверу дисках.
Средство мониторинга nmon выводит данные о дисках
Далее, добавим информационные разделы со сведениями о сети и памяти, нажав клавиши
n
и m
. В итоге, набор данные о системе будет дополнен интересующими нас показателями.
Добавление в окно мониторинга сведений о сетевой подсистеме и памяти
Выключить отображение тех или иных разделов можно с помощью тех же клавиш, которые использовались для их вывода на экран. Кроме того, nmon поддерживает возможность менять скорость обновления данных. Делается это с помощью клавиш «
-
» и «+
» на клавиатуре. Первая, соответственно, уменьшает скорость обновления показателей, вторая — увеличивает.Для того, чтобы выйти из nmon, нажмите клавишу
q
, это возвратит вас к обычному приглашению bash.Сбор данных с помощью nmon
Инструмент включает в себя возможность захвата данных и сохранения их в файл. Это может оказаться очень кстати, если нужно проанализировать данные о состоянии системы на некоем отрезке времени.
Предположим, требуется 30 «снимков» состояния системы, делать которые надо каждые 60 секунд. Организовать подобное можно, воспользовавшись такой командой:
nmon -f -s 60 -c 30
Здесь ключ
-f
указывает на то, что данные надо писать в файл, ключ -s
задаёт промежутки времени, в секундах, между «снимками», а ключ -c
говорит программе о том, что нам надо 30 наборов показателей.Через полчаса после выполнения вышеописанной команды в текущей рабочей директории окажется интересующий нас файл с расширением
.nmon
.Проанализировать этот файл можно, например, с помощью утилиты nmonchart, которая создаст из него веб-страницу, содержащую симпатичные графики.

Анализ данных, собранных nmon, с помощью nmonchart
Планирование сбора данных
Если необходимо организовать регулярный сбор данных о показателях работы сервера, например, для выявления периодически возникающих неполадок, можно воспользоваться заданиями cron. Делается это так. Сначала создадим bash-скрипт, скажем, с именем
nmon.sh
, с таким вот содержимым:#! /bin/sh
nmon -f -s 60 -c 30
Файл надо сохранить и дать ему разрешение на исполнение с помощью команды
chmod u+x nmon.sh
. Теперь откроем файл crontab
для редактирования командой crontab -e
и введём следующее:30 11 * * * ~/nmon.sh
После сохранения изменений, задание cron будет выполняться ежедневно, в 11:30 утра. Вы, конечно, подставите сюда то время, которое вам нужно, получив в своё распоряжение удобный инструмент для выявления причин неполадок серверов.
Итоги: действительно просто и по-настоящему полезно
Уверен, вам нелегко будет найти более простое и удобное решение для мониторинга Linux-серверов, подходящее для наблюдения за системами в реальном времени и для сбора данных, которые планируется проанализировать позже.
Пожалуй, nmon — это, так сказать, мастхэв для каждого системного администратора.
Уважаемые читатели! А какими утилитами для администрирования Linux вы пользуетесь постоянно и можете порекомендовать их другим?
Комментарии (15)
Crystal_HMR
17.03.2017 13:55+1У заббикса в дефолтном темплейте есть куча параметров для мониторинга линукс-серверов. И в этом случае и серверов можно больше подключить, и нагрузки меньше получить. Nmon'ом пользуюсь для каких-то комплекс-скринов (типо ^nD) в реальном времени в консоли (т.е. через впн и в аналогичных ситуациях)
foxmuldercp
17.03.2017 16:33+2Заббикс весьма оверхеад для пары серверов.
я после того как устал от нагиоса сейчас развлекаюсь с pandorafms — весьма легкий сервер, отличный кастомизабельный клиент штатно идущий в репозиториях убунты/центоси
DmitriyPanteleev
17.03.2017 16:45Сугубо ИМХО, но для оперативного понимания и наблюдения обстановки на сервере, гораздо нагляднее htop и dstat (естественно настроенные и с интересующими параметрами), да и в файл они интересующую статистику запишут.
А для мониторинга, Заббикс, Заббикс и еще раз Заббикс. К тому же если не хватает дефолтных триггеров, несложно и свои проверки прикрутить:).DmitriyPanteleev
20.03.2017 11:50Что-то «зажрался» я :). Ведь бывают случаи, когда у человека 1 или 2 сервера… И заббикс, для них поднимать, немного кхм… оверхед, как верно заметили. Тогда можно посоветовать Monitorix или Munin. А вообще, когда с сервером проблемы, то порой на него и зайти-то бывает сложновато. Тогда можно посоветовать использовать перекрестный сислог (ну или на другой сервер). Чтоб в «случае-чего» можно было глянуть, что случилось…
kefiiir
17.03.2017 17:21мне из универсальных мониторилок больше всего вот эта глянулась
https://nicolargo.github.io/glances/
все сразу и с подсветкой критических значений
olegbukatchuk
17.03.2017 21:27Рекомендую присмотреться к этому решению https://my-netdata.io
Erelecano
19.03.2017 14:09Для мониторинга одиночного сервера — интересное решение. Особенно симпатично, что из коробки алярмы куда угодно, в том числе и в телеграм.
rotorB
17.03.2017 22:26https://amplify.nginx.com — Очень рекомендую, хранит историю, настраиваются алармы, кастомные дашборды, помимо системы, полностью мониторит nginx, то что надо:
xtotec
18.03.2017 08:41Простой, надёжный и удобный — выберите любые 2 из 3. Если вы администрируете сервера на *nix, их обычно много (где много начинается с 3). Там же, собственно, кончается удобство локального мониторинга на каждом отдельном сервере. Вы мне начнёте говорить
— А как же Puppet/Chief/Ansible/что-то новое и крутое?
А я вам отвечу, что там где есть необходимость в таких инструментах серверов намного больше чем 3 и тем более локальный мониторинг неудобен.
wizard_s
18.03.2017 11:25Для глобального мониторинга "снаружи" — okmeter, для более детального поиска проблем — atop, sar, nmon с уменьшенным интервалом снятия метрик
jok40
Я использую atop. Настроил его так, чтобы он сохранял бинарные логи и исследую их, в случае наличия каких-нибудь проблем.
Envek
atop хорош. Особенно нравится, что он подсвечивает красным те параметры, у которых значения превысили какой-то предел (типа под 100% IO занят).
Amet13
А для атопа нет такой штуки типа nmonchart? Чтобы визуализировать в графики информацию из бинлога.
jok40
Когда только начинал использовать atop у меня была острая необходимость в подобной визуализации. Искал долго — не нашёл. Пришлось написать свой велосипед — не такой подробный и красочный, как nmonchart, но делающий ровно то, что нужно мне. С тех пор им и пользуюсь. А как сейчас обстоят дела с такими инструментами — я не в курсе. Может что и появилось.