как посмотреть загруженность сервера linux
Анализ нагрузки на веб-сервер Linux
В данной статье пойдет речь о мониторинге нагрузки, именно, в контексте веб-сервера. Мы не будем особо заострять внимание на проверке производительности системы, как, например, командами top, htop, free и так далее.
Нагрузка на сервер
Анализ нагрузки стоит начать с общих метрик — потребление процессорного времени, памяти, нагрузки на сеть и дисковую систему.
Нагрузка по процессам
Проверить, нагружен ли сервер, а также понять, какой именно процесс больше всего потребляет ресурсов можно с помощью команд:
* по сути, все 3 вышеперечисленные команды выдают одну и туже информацию в разном виде. Какой-то из них может оказаться удобнее пользоваться. Утилита top встроена в систему, для использования остальных необходимо установить одноименные пакеты.
Оперативная память
Для определения объема свободной и занимаемой памяти можно воспользоваться командой:
* предыдущие команды тоже показывали утилизацию памяти, но кому-то команда free может показаться нагляднее.
Нагрузка на диск
Для определения нагрузки на дисковую систему, используем утилиту iotop. Сначала ее нужно установить.
а) На системы Debian / Ubuntu:
apt-get install iotop
б) На системы Red Hat / CentOS:
После выполняем следующую команду:
Сетевая активность
Для измерения нагрузки на сеть необходимо установить утилиту nload.
а) В CentOS / Red Hat:
б) В Ubuntu / Debian:
apt-get install nload
После установки, запускаем утилиту командой:
* в данном примере будет запущена статистика для использования сетевого интерфейса eth0.
Что грузит систему
Даже, если мы увидим, что на веб-сервере заканчивается оперативная память или загружен процессор, мы не сможем найти источник проблемы, которым, чаще всего, является некорректно работающий скрипт. Поэтому, определяем, какой файл на сервере вызывает нагрузку.
Использование lsof
lsof — утилита командной строки, которая отображает какие файлы используются процессами. Она позволит определить, к каким скриптам идет обращение со стороны веб-сервера. Для начала, необходимо установить lsof.
а) В CentOS / Red Hat:
б) В Ubuntu / Debian:
apt-get install lsof
Теперь можно выполнить следующие команды:
* первая команда покажет, к каким файлам обращается apache, вторая — php-fpm (часто можно увидеть в связке с nginx).
Анализ error-логов
Анализ логов ошибок позволит не только обнаружить проблемы в работе сайта, но и найти причину его медленной работы. По умолчанию, логи находятся в каталоге /var/log. Если мы не меняли расположение логов, запускаем следующие команды:
* лог ошибок apache в CentOS.
* лог ошибок apache в Ubuntu.
В первую очередь, нужно обратить внимание на повторяющиеся ошибки — они могут быть причиной проблем. Лучше всего, добиться полного отсутствия ошибок, внеся исправления в работу сайта. Возможно, это устранит проблемы производительности.
Статистика веб-сервера
Для веб-серверов можно воспользоваться служебной страницей просмотра статуса. Она может показать статистику запросов к веб-серверу.
Apache
Для Apache необходим модуль mod_status, который идет в комплекте с данным веб-сервером. Проверить подключение модуля можно в конфигурационном файле httpd.conf (в разных Linux системах может находится в различных каталогах).
По умолчанию, server-status не активен. Создаем конфигурационный файл.
Для CentOS / Red Hat:
Для Ubuntu / Debian:
* где 2 — используемая версия apache.
В открытый конфигурационный файл добавим:
servername 111.111.111.111
Sethandler server-status
* где 111.111.111.111 — IP-адрес нашего веб-сервера; 80 — порт, на котором слушает apache.
* в данном примере мы прописали два варианта просмотра статистики: первый — обращение в браузере к серверу по IP-адресу + /server-status; второй — обращение к любому сайту + /server-status. Разные способы оправданы для разных настроек самих сайтов и используемых CMS.
Проверим корректность внесенных данных и перезапустим веб-сервер apache:
systemctl restart httpd || systemctl restart apache2
Теперь открываем браузер и вводим название сайта + /server-status, например, http://www.dmosk.ru/server-status. Или обращаемся к серверу по IP-адресу, например, http://111.111.111.111/server-status.
NGINX + PHP-FPM
Открываем конфигурационный файл nginx:
В секцию http добавляем:
.
server <
listen 80;
server_name 111.111.111.111;
location /server-status <
stub_status on;
>
>
.
* где 111.111.111.111 — IP-адрес нашего веб-сервера.
Проверяем корректность настройки и перезапускаем nginx:
systemctl restart nginx
Открываем браузер и заходим на страницу 111.111.111.111/server-status. Мы должны увидеть статистику использования сервера:
Теперь настроим статистику для php-fpm. В конфигурационном файле nginx в нашу директиву server добавим:
* обратите внимание на закомментированную строку и строку под ней. В зависимости от того, как настроен php-fpm (слушает на порту или через сокетный файл) необходимо настроить nginx. В данном примере подразумевается, что php-fpm слушает на 9000 порту.
Открываем конфигурационный файл php-fpm:
Снимаем комментарий со следующей строки:
Проверяем настройку nginx, перезапускаем его и php-fpm:
systemctl restart nginx
systemctl restart php-fpm
Открываем браузер и заходим на страницу 111.111.111.111/server-status. Мы должны увидеть статистику использования сервера:
Долгие запросы
С помощью длительных запросов к веб-серверу или СУБД можно сделать выводы о том, что является узким местом в работе сервиса.
MySQL / MariDB
Для начала, воспользуемся инструкцией, чтобы настроить ведение лога медленных запросов (для MySQL или MariaDB).
После, воспользовавшись статистикой, находим неоптимальные запросы. В одних случаях необходимо будет переписать сам запрос, в других — создать индексы базы данных.
PHP-FPM
Открываем конфигурационный файл:
Редактируем следующие параметры:
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/www-slow.log
* request_slowlog_timeout определяет время, в течение которого должен выполняться запрос, чтобы он считался медленным; slowlog — путь до лога, куда будет сохранена информация о медленных запросах.
systemctl restart php-fpm
Непрерывный просмотр лога можно запустить командой:
Загрузка процессора Linux
Чтобы узнать хватает ли мощности процессора вашему серверу или компьютеру надо посмотреть загрузку процессора в данный момент или за последнее время. Это значение показывает на сколько процентов используется вычислительная мощность процессора.
В этой статье мы рассмотрим несколько способов решения этой задачи с помощью привычных системных утилит и более сложных инструментов.
Как посмотреть загрузку процессора в Linux
1. Утилита htop
sudo apt install htop
А в CentOS или REHL:
sudo yum install htop
Главное окно программы выглядит вот так:
Здесь в верхней части окна выводится загрузка ядер процессора в виде наглядных шкал, а ниже процессы. В данном примере у процессора 12 ядер и каждое из них загружено не больше чем на один процент.
2. Файл /proc/loadavg
Если надо сориентироваться какая была нагрузка на процессор в последнее время, тут htop не поможет. Можно воспользоваться файлом /proc/loadavg. Его создаёт ядро и в нём содержится информация о средней нагрузке за одну, пять и пятнадцать минут. Но обратите внимание, данные, находящиеся в этом файле не такие однозначные. Во первых, это не проценты, во вторых, они отображают не нагрузку на процессор, а нагрузку на систему в целом.
Первые три значения в этом файле означают среднее количество процессов или потоков, которые выполняются, находятся в очереди на выполнение или ждут завершения операций ввода/вывода за 1, 5 и 15 минут. Вот:
3. Утилита mpstat
sudo apt install sysstat
sudo yum install sysstat
Для просмотра общей информации выполните такую команду:
А для просмотра подробностей по каждому ядру процессора используйте опцию -P с параметром ALL:
Вот значения колонок в выводе этой программы:
Как видите, в данном случае нагрузка на процессор не достигает даже трех процента для некоторых ядер.
4. Команда nmon
Утилита nmon позволяет выводить данные, в виде, похожем на htop, но только немного подробнее. Для установки её в Ubuntu и Debian выполните:
sudo apt install nmon
Для установки в CentOS или REHL:
sudo yum install nmon
После запуска надо нажать кнопку c для того чтобы отобразить информацию о нагрузке на ядра процессора:
Здесь кроме наглядной шкалы по каждому ядру выводится информация в процентах по таким показателям:
Здесь уже можно сориентироваться насколько всё загружено и в чём проблема.
5. CoreFreq
Если всей полученной ранее информации о производительности вам мало, можно воспользоваться утилитой CoreFreq. Её нет в официальных репозиториях, поэтому придется собирать программу из исходников. Но зато она имеет свой модуль ядра, который устанавливает свои счетчики производительности в ядре и возвращает утилите наиболее подробные данные. Сначала установите необходимые компоненты. В Ubuntu:
sudo apt install dkms git libpthread-stubs0-dev
sudo yum group install ‘Development Tools’
Затем скачайте репозиторий утилиты с GitHub и соберите её:
git clone https://github.com/cyring/CoreFreq.git
Загрузите модуль ядра такой командой:
sudo insmod corefreqk.ko
Запустите её сервис:
Затем запускайте программу:
С помощью этой утилиты вы сможете узнать максимально подробную информацию о загрузке процессора и о самом процессоре в целом.
Выводы
В этой небольшой статье мы рассмотрели как определяется загрузка процессора Linux с помощью различных утилит. Как системных, так и сторонних. А какие утилиты для таких целей используете вы? Напишите в комментариях!
16 команд мониторинга Linux-сервера, которые вам действительно нужно знать
Хотите знать, что самом деле происходит на с вашим сервером? Тогда вы должны знать эти основные команды. Как только вы их освоите, вы станете администратором-экспертом в системах Linux.
Однако, основное правило администратора Linux состоит в том, что вы должны работать с графическим интерфейсом на сервере только в случае, когда это вам абсолютно необходимо. Это обусловлено тем, что графические программы на Linux занимают системные ресурсы, которые было бы лучше использовать в другом месте. Поэтому хотя программа с графическим интерфейсом и может отлично подходить для базовой проверки состояния сервера, если вы хотите знать, что происходит на самом деле, отключите графический интерфейс и воспользуйтесь инструментальными средствами, работающими из командной строки Linux.
Как только вы это сделаете, найдите строку initdefault и измените ее с id:5:initdefault: на id:3:initdefault:
Как только ваш сервер станет работать на уровне запуска init 3, вы для того, чтобы увидеть, что происходит внутри вашего сервера, можете начать пользоваться следующими программами командной оболочки.
iostat
Команда iostat подробно показывает, что к чему в вашей подсистеме хранения данных. Как правило, вы должны использовать команду iostat для того, чтобы следить, что ваша подсистема хранения работают в целом хорошо и прежде, чем ваши клиенты заметят, что сервер работает медленно, выявлять те места, из-за медленного ввода/вывода которых возникают проблемы. Поверьте мне, вам следует обнаруживать эти проблемы раньше, чем это сделают ваши пользователи!
meminfo и free
вы в любой момент будете знать все, что происходит в памяти вашего сервера.
Вы можете воспользоваться командой free для быстрого «фактографического» взгляда на память. Если кратко, то с помощью команды free вы получите обзор состояния памяти, а с помощью команды meminfo вы узнаете все подробности.
mpstat
Команда mpstat сообщает о действиях каждого из доступных процессоров в многопроцессорных серверах. В настоящее время почти во всех серверах используются многоядерные процессоры. Команда mpstat также сообщает об усредненной загрузке всех процессоров сервера. Это позволяет отображать общую статистику по процессорам во всей системе или для каждого процессора отдельно. Эти значения могут предупредить вас о возможных проблемах с приложением прежде, чем они станут раздражать пользователей.
netstat
Я считаю, что для повседневного мониторинга серверов команда nmon является одной из самых полезных программ в моем инструментальном наборе, предназначенном для систем Linux.
Команда pmap сообщает об объеме памяти, которые используются процессами на вашем сервере. Вы можете использовать этот инструмент для того, чтобы определить, для каких процессов на сервере выделяется память и как эти процессы ее используют.
ps и pstree
strace
Команду strace часто рассматривают, как отладочное средство программиста, но, на самом деле, ее можно использовать не только для отладки. Команда перехватывает и записывает системные вызовы, которые происходят в процессе. Т.е. она полезна в диагностических, учебных и отладочных целях. Например, вы можете использовать команду strace для того, чтобы выяснить, какой на самом деле при запуске программы используется конфигурационный файл.
tcpdump
Tcpdump является простой и надежной утилитой мониторинга сети. Ее базовые возможности анализа протокола позволяют получить общее представление о том, что происходит в вашей сети. Однако, чтобы по-настоящему разобраться в том, что происходит в вашей сети, вам следует воспользоваться программой Wireshark (см. ниже).
Команда top показывает, что происходит с вашими активными процессами. По умолчанию она отображает самые ресурсоемкие задачи, запущенные на сервере, и обновляет список каждые пять секунд. Вы можете отсортировать процессы по PID (идентификатор процесса), времени работы, можете сначала указывать новые процессы, затраты по времени, по суммарному затраченному времени, а также по используемой памяти и по общему времени использования процессора с момента запуска процесса. Я считаю, что это быстрый и простой способ увидеть, что некоторый процесс начинает выходить из-под контроля и из-за этого все движется к проблеме.
uptime
Используйте команду uptime для того, чтобы узнать, как долго работает сервер и сколько пользователей было зарегистрировано в системе. Эта команда также покажет вам среднюю загрузку сервера. Оптимальное значение равно 1 или меньше, что означает, что каждый процесс немедленно получает доступ к процессору и потери циклов процессора отсутствуют.
vmstat
Wireshark
Это обзор всего лишь нескольких наиболее значимых систем мониторинга из многих, имеющихся для Linux. Тем не менее, если вы сможете освоить эти программы, они помогут вам на пути к вершинам системного администрирования Linux.
Мониторинг сервера — бесплатно или за деньги? Утилиты Linux и специализированные сервисы
Есть много полезных инструментов, которые помогают отслеживать нагрузку на сервер, начиная с утилит Linux и заканчивая специализированными службами.
Простые утилиты Linux показывают текущее потребление памяти для каждого процесса, нагрузку на CPU, свободное место на диске и статистику по трафику.
Кроме того, есть платные и бесплатные сервисы, которые круглосуточно отслеживают состояние вашего сервера, регистрируют сбои в его работе или в сетевой доступности, а также проверяют производительность приложений.
Содержание
Утилиты Linux
Использование ресурсов
Один из самых инструментов для проверки использования ресурсов процессами. Утилита top выдаёт простую таблицу с текущим потреблением ресурсов, где сверху указаны процессы с наибольшей нагрузкой.
Непосредственно перед таблицей приводится некоторая общая статистика, включая среднюю нагрузку на CPU за последнюю минуту, 5 минут и 15 минут. Также показано потребление памяти, файла подкачки и состояние процессов.
Список обновляется в реальном времени: можете вывести его на второй монитор и наблюдать постоянно.
Установка htop на Ubuntu:
Здесь мы видим почти такую же выдачу, но с подсветкой разными цветами и более интерактивную:
Верхняя часть здесь яснее и лучше организована.
Вот некоторые ключи для более эффективного использования htop :
Сетевой трафик
nethogs
nethogs — самая простая утилита для просмотра, сколько трафика приходится на каждую службу. На Ubuntu утилита устанавливается следующей командой:
Затем её можно запустить без ключей. Выдача простая:
Есть всего несколько опций для изменения выдачи:
IPTraf
IPTraf — ещё один способ мониторинга сетевого трафика, с большим количеством опций. Установка на Ubuntu:
Эта утилита предлагает выбрать один из интерактивных интерфейсов:
Например, для обзора всего сетевого трафика выбираем первый пункт меню:
Чтобы IP-адреса резолвились в домены, нужно в конфигурации выбрать пункт ‘Reverse DNS lookups’.
Вместе просмотром трафика по портам есть вариант просмотра трафика по сервисам (опция ‘TCP/UDP service names’). С обеими включёнными опциями выдача будет выглядеть примерно так:
Есть ещё несколько других интерфейсов, которые можете изучить самостоятельно.
netstat
Утилита netstat — очень гибкий и мощный инструмент для сбора сетевой информации.
По умолчанию netstat выдаёт список открытых сокетов:
Место на диске
Улучшенные версии
Здесь можно перемещаться по файловой системе клавишами со стрелками.
Использование памяти
Дело в том, что Linux как большинство современных ОС пытается использовать максимальный объём доступной оперативной памяти под буферы и кэш. Поэтому имеет значение вторая строка, которая показывает реальный объём потенциально доступной оперативной памяти для приложений, если игнорировать буферы и кэш. Этот объём будет освобождён автоматически, если он понадобится для приложений.
vmstat
Команда vmstat выводит различную информацию о системе, включая память, файл подкачки, операции ввода-вывода и нагрузку на CPU.
В первой колонке r указано количество активных процессов, во второй — количество процессов в состоянии непрерываемого ожидания.
Колонки si и so показывают объём памяти, которая считывается из файла подкачки и записывается в него, соответственно.
Далее показано количество блоков, которые получены или отправлены на устройство блочного ввода вывода (bi, bo), количество прерываний в секунду, включая таймер (in), количество переключений контекста в секунду (cs) и статистика по CPU: процент времени, затраченного на обработку кода в пользовательском пространстве (us), на обработку кода ядра (sy), в спящем состоянии (id) и ожидании ввода-вывода (wa), а также времени, «украденного» у виртуальной машины (st), то есть когда виртуальный CPU ожидает действия реального CPU, когда гипервизор обслуживает другой виртуальный процессор.
Сервисы мониторинга
Если вам необходимо круглосуточно отслеживать состояние сервера (память, CPU, свободное место, производительность, время отклика и проч.), то можно воспользоваться бесплатным или платным сервисом мониторинга. Таких сервисов много, вот небольшой список в алфавитном порядке:
Для примера, рассмотрим три относительно популярных сервиса для мониторинга.
SolarWinds Server and Application Monitor
Один из самых продвинутых серверных мониторов на рынке — SolarWinds Server and Application Monitor (SAM). Хотя инструмент устанавливается только на Windows Server 2016+, но может отслеживать любое оборудование, в том числе Linux-серверы.
Монитор отслеживает производительность сервера, сообщает о проблемах, а также предоставляет некоторые возможности по управлению: позволяет перезапускать сервер, снимать процессы и перезапускать службы, то есть это инструмент не только для мониторинга, но и для администрирования.
Программа лучше подходит для крупных корпораций. Заявлена совместимость с серверами Dell PowerEdge, HP ProLiant, IBM eServer xSeries, Dell PowerEdge Blade, HP BladeSystem, Microsoft Windows Server и VMware vSphere. В то же время SAM мониторит и облачные инстансы AWS и Azure.
Он показывает статистику по времени отклика, загрузке CPU, памяти и др. Отслеживается производительность отдельных приложений: встроена поддержка более 1200 разных приложений. Также проверяется состояние оборудования: использование CPU, нагрузка на диски, энергопитание, статус вентиляторов и т. д. Статусы кодируются цветом от зелёного до красного, чтобы было легко оценить здоровье системы с первого взгляда.
Монитор автоматически определяет новое оборудование и программное обеспечение в вашем кластере, сразу добавляя его на панель мониторинга. Это одна из ключевых особенностей SAM, также как максимальная автоматизация — подготовленные шаблоны для автоматизации регулярных задач по мониторингу и обслуживанию, заготовки для отчётов и уведомлений.
Обычно у таких сервисов имеется бесплатный пробный период, а стоимость может зависеть от набора используемой функциональности. Здесь тоже есть пробный период, а стоимость SolarWinds Server and Application Monitor начинается от 1275 евро в минимальной функциональности.
Navicat Monitor
Другой пример — Navicat Monitor, который специализируется на мониторинге баз данных. Он поддерживает MySQL, MariaDB, SQL Server, а также облачные СУБД, такие как Amazon RDS, Amazon Aurora, Oracle Cloud, Google Cloud и Microsoft Azure.
Стандартный вид
Компактный вид
Монитор отслеживает время выполнения конкретных запросов, запуская их с заданным интервалом.
Кроме запросов к БД, периодически отправляются и другие запросы к серверам для мониторинга показателей производительности системы ввода-вывода, сети и проч. Собирается статистика по использованию CPU, загрузке памяти и другие стандартные метрики.
Архитектура Navicat Monitor не предусматривает установку программного обеспечения на объекты мониторинга
Zabbix
Zabbix — это бесплатный опенсорсный инструмент, который отслеживает состояние сети, приложений и самого сервера. Поставляется с готовыми шаблонами для мониторинга популярных серверов и ОС, включая HP, IBM, Lenovo, Dell, Linux-серверы, Ubuntu и Solaris. За годы существования Zabbix сообщество подготовило шаблоны для различных сценариев.
Ключевые модули Zabbix следят за нагрузкой CPU, использованием памяти, уровнем ошибок ввода-вывода, свободным местом на диске, статусе вентиляторов, температурой и характеристиками системы питания. Сетевой модуль проверяет трафик, доступность сети, уровень потерь пакетов, качество TCP-соединений и пропускную способность маршрутизаторов.
Zabbix ведёт список установленного программного обеспечения и версий прошивок, чтобы сигнализировать о несанкционированной установке ПО.
Системный администратор может запрограммировать в Zabbix уведомления по произвольным условиям, а также изменить важность действующих уведомлений. На панели управления можно добавить пользователей — и направлять каждому из них определённые типы уведомлений, а скрипты автоматизации позволяют автоматически заводить задачи и присваивать их сотрудникам.
Благодаря функции удалённого доступа и управления Zabbix можно назвать хорошим инструментом администрирования сервера.
Единственный недостаток этой системы — если вы для мониторинга добавлено около 1000 серверов или более, то из-за большого количества сообщений и процедур шифрования Zabbix начинает медленно реагировать на команды, так что для очень больших компаний этот инструмент не слишком подходит
Системы серверного мониторинга отличаются по функциональности. Не все могут следить за работоспособностью отдельных приложений, производительностью сервера и временем отклика. Но эти недостатки можно исправить с помощью дополнительных инструментов: например, систем аналитики и мониторинга логов.
Надёжный сервер в аренду и правильный выбор тарифного плана позволят меньше отвлекаться на неприятные уведомления мониторинга — всё будет работать без сбоев и с очень высоким uptime!