В любой операционной системе можно найти тысячи мелких ошибок и проблем. Обнаружить их самостоятельно почти невозможно, поэтому необходимы инструменты мониторинга системы — программы, которые способны отслеживать выполняемые процессы в режиме реального времени и показывать небольшую сводку этого отслеживания по запросу пользователя. Самый известный, но и один из самых не функциональных, инструмент мониторинга системы — диспетчер задач в Windows.
Кратко о Linux
Большинство людей хотя бы раз слышали о Linux-системах, но никогда ими не пользовались. Это нормальная ситуация — подобные ОС просто невозможно назвать «user-friendly», некоторые из них до сих пор невозможно установить без чтения многостраничных мануалов. Тем более Microsoft и Apple уже давно захватили рынок домашних ОС, предоставив пользователям стабильность и множество удобных функций.
Однако если мы говорим не об обычных пользователях, то Linux-системы — монополист на рынке электронного оборудования с ОС. Любой человек с телефоном на базе Android уже сам пользуется Linux, а каждый пользователь интернета полностью зависим от серверов на Linux. Подтвердить этот тезис можно всего двумя фактами:
- 99 из 100 серверов основаны на Linux;
- Android — модифицированная версия Linux от Google.
Возвращаясь к мониторингу системы, мы напрямую зависим от должной работы всех серверов и наших устройств на Linux. Соответственно, пользоваться инструментами определения проблем и ошибок должен каждый, и особенно это касается системных администраторов.
В среде сисадминов не существует единого мнения о Linux. Для кого-то это идеальный инструмент, а кто-то просто ненавидит работать с этой ОС. Но в любом случае от ее использования просто невозможно отказаться — существует слишком много устройств на ее базе.
Популярные инструменты мониторинга системы
Подавляющее большинство софта под Linux основано на идеях Open Source — у программ открытый исходный код, которым может воспользоваться любой желающий. То же самое касается и инструментов мониторинга системы — все представленные программы полностью бесплатны и их можно скачать с официального сайта разработчиков, либо через репозитории. Большинство из них по умолчанию встроено в консоль, но и консоли в Linux можно менять по собственному желанию.
top
«top» — команда, встроенная в консоль Linux. Аналог диспетчера задач из Windows. После ввода команды в консоль будет выведена таблица из всех процессов, выполняющихся в системе на данный момент, и общих данных — время, количество задач, загрузка ядер процессора, используемая оперативная память и так далее. Таблица автоматически обновляется каждые 5 секунд.
vmstat
Еще одна встроенная в консоль команда. После ввода vmstat выводит информацию о процессах, виртуальной памяти, дисках, системных ловушках и процессорной активности. У команды обширный перечень дополнительных опций, позволяющих конкретизировать запрос. Например, «vmstat -M» извлекает данные из выбранного файла ядра, с которого была загружена система. А «vmstat -N» извлекает те же данные из выбранной системы, а не образа ядра, с которого была загружена система.
w (who)
Небольшая команда, позволяющая узнать информацию о всех пользователях, авторизованных в системе на момент ввода. Просто ввод команды отобразит список пользователей, а добавления имени пользователя выведет конкретную информацию о нем. Например, «w root» выведет информацию о главном администраторе.
uptime
Еще одна маленькая команда, которая просто выводит в одну строчку данные о времени работы системы, текущем времени, количестве авторизованных юзеров и средней нагрузке на систему за последние 1,5 и 15 минут. Обычно с «uptime» начинает работу любой системный администратор Linux, так как она позволяет сразу определить наличие критических проблем — слишком большая нагрузка на систему, неправильное время (для большинства программ очень важно, чтобы их время соответствовало системному, в ином случае они выдают ошибку), новые пользователи.
ps
Ввод команды ps выведет все работающие процессы. Правда технически это ничего не даст, так как процессы выводятся списком по одному в строчке — количество строчек легко может превысить тысячу. Куда интереснее дополнительные опции.
Во-первых, можно обращаться к конкретному процессу. Для этого сначала придется узнать его название, но обычно с этим проблем не возникает. Во-вторых, можно добавлять множество аргументов, которые полностью изменят вывод информации. Например, можно вывести:
- 10 программ, больше или меньше всех потребляющих память;
- процессы, которые работают для конкретного пользователя;
- древо процессов.
free
Команда выводит объем свободной и используемой физической памяти и файла подкачки. Главная проблема — free выводит данные в байтах, а не гигабайтах. То есть условные 16 гигабайт оперативной памяти будут указаны как 17179869185. Так как занятая и свободная память также отображается в виде байт, определить их соотношение к всей памяти можно только примерно.
iostat
Выводит общую информацию о системе — ядро линукса, дата, статистика ЦП, подключенные устройства. Для всех вышеуказанных пунктов есть собственные команды, выводящие более подробные данные. Поэтому iostat, как и uptime, считается начальной командой для определения совсем критических ошибок.
sar
Команда позволяет не только получить нужную информацию в консоли, но и сохранить ее в отдельный файл. При вводе отображает какие процессы нагружали систему с определенного момента. Можно запускать в реальном времени, тогда sar каждые 4 минуты будет выдавать актуальные данные.
mpstat
Расширенная версия sar. Делает те же действия, но выводит информацию по каждому отдельному ядру. Соответственно нужна только для многоядерных процессоров.
pmap
Команда выводит количество памяти, используемое каждым процессом. Проблема в том, что она выводит информацию адресно — каждый отдельный процесс привязан к конкретной ячейке, и она отображает все занятые ячейки с их адресом. Из-за этого строчка вывода формата «адрес-количество памяти-мод-смещение-девайс-отображение» обычно выглядит так — 0000000000400000 2584 r-x-- 0000000000000000 008:00002 php-cgi. И таких строчек может быть больше 100.
Впрочем, в самом низу выводится еще одна строка с данными об общем объеме памяти, недоступном адресном пространстве, и объеме памяти, которые делится с другими процессами. Ради этой информации обычно и используют pmap.
netstat
Эта команда есть и в Windows, причем в том же виде, что и в Linux. Инструмент позволяет получить полную информацию о сети компьютера. К чему подключен, куда, откуда и как быстро идут данные, через что проходит трафик и так далее.
ss и iptraf
Обе команды буквально то же самое, что и netstat, только чуть новее. Сейчас ss рекомендуется использовать как основную, но большинство сисадминов продолжают использовать netstat. А iptraf ориентирована уже конкретно на предоставление информации, связанной с IP.
tcpdump
Команда создает дамп трафика в сети. Довольно сложная в использовании, так как необходимо знать принцип работы протокола TCP/IP и способы ввода аргументов.
iotop
Выводит информацию о записи и чтении данных каждым процессом. Ключевая проблема — снова вся информация выводится огромной таблицей. Теоретически можно найти информацию о каждом отдельном процессе, но на это уйдет очень много времени. Поэтому в основном iotop используют для вывода информации о скорости чтения и записи данных.
htop
Полноценная мощная программа, заменяющая обычный top в Linux. В ней появляются графические элементы, например количество используемой памяти и загрузка ядер отображаются в виде шкалы. Все процессы хоть и выведены таблицей, но в ней гораздо удобнее ориентироваться. И самая главная особенность, за которую htop полюбили все сисадмины — возможность обращения к процессу без PID и без надобности выходить из программы.
atop
Еще одно функциональное расширение обычного top. Ориентировано на вывод сразу всей информации по аппаратным ресурсам — производительность процессора, памяти, диска и сети. Дополнительно отображает каждый процесс, который нагружает систему.
monit
Еще один аналог top, но уже с возможностью контроля за процессами, как в htop. Отличительная особенность — возможность перезапуска служб без выхода из программы. Очень полезная функция, но и очень опасная, так как после ее выполнения могут возникать конфликты.
nethogs
Инструмент для вывода данных о сети для конкретного процесса. Главное отличие от ранее рассмотренных команд с подобной функцией — nethogs группирует всю информацию по каждому процессу, а не выводит огромную таблицу с тысячей строк. Это просто удобней для базового просмотра данных о том, сколько сетевого трафика использует каждое приложение.
vnstat
Еще одно развитие netsat. Главная функция — ведение контроля на нескольких промежутках с сохранением данных. Грубо говоря, vnstat можно оставить на всю ночь, а утром посмотреть отчеты о сетевом трафике за каждый час. Режимы сохранения данных — почасовой, ежедневный, ежемесячный.
glances
Еще одно развитие top. Хоть интерфейс все еще полностью консольный, он хотя бы немного структурирован, в отличие от первоначальных инструментов мониторинга системы. Главная особенность — работа в режиме клиент-сервер.
nmon
Выводит основную информацию об аппаратных ресурсах и данные из раздела Cli. Фактически еще один top, только с возможностью выбора необходимых опций. Например, можно вывести информацию только о процессоре.
Strace
Используется для отслеживания системных запросов и сигналов от программ. Причем можно смотреть как уже выполненные процессы, в этом случае дополнительно будет предоставлен результат, так и только выполняемые.
Nagios
Это уже не консольный инструмент мониторинга системы, а полностью отдельное, самостоятельное приложение с графическим интерфейсом. По функционалу полный аналог netstat, то есть позволяет мониторить сеть. Одно из главных нововведений — Nagios способен отправлять оповещения об ошибках и проблемах, то есть их не нужно искать самостоятельно.
KDE System Guard
Графический инструмент мониторинга системы от разработчиков рабочего окружения KDE. Собственно, он и используется только в Linux с KDE (Manjaro, Astra, Arch и прочие дистрибутивы с возможностью выбора графической оболочки). Полный аналог диспетчера задач из Windows как по функционалу, так и по внешнему виду. Из-за открытости Linux предоставляет в разы больше возможностей, но и использовать его опаснее — легко можно убить системный процесс и положить всю ОС.
Системный монитор Gnome Linux
Тот же диспетчер задач, что и KDE System Guard, только уже для рабочего окружения Gnome (Fedora, Ubuntu, Debian и прочие дистрибутивы с возможностью выбора графической оболочки). Gnome более дружелюбна к новичкам, чем KDE, а большинство программ не предоставляют всех возможностей, защищая пользователя от моментальной смерти ОС. Поэтому данный инструмент по функционалу ближе к диспетчеру задач из Windows, чем к KDE System Guard.
Полезные горячие клавиши
Вообще у каждого инструмента они могут быть разные, но в Linux многие придерживаются общих стандартов и когда создают уже свой инструмент, опираются на уже известные горячие клавиши. Поэтому можно уверенно говорить, что нажатие «k» почти во всех инструментах приведет к выполнению команды «kill», то есть «убийству» выбранного процесса. А нажатие на «z» изменит цвет программы со стандартного на моно.
Другие возможные горячие клавиши:
t — проверяет включена или отключена опция представления данных;
m — то же самое, что и «t», только для информации о памяти;
A — сортирует процессы;
f — горячая клавиша выводит экран настройки top и ему подобных инструментах (htop, atop);
— сортирует процессы по выбранному признаку в top и ему подобных инструментах;
r — выполняет команду renice (изменяет приоритет запущенных процессов).