А АSunday 13 December 2020

Диагностика Linux.

Всем привет.

У каждого администратора который управляет Linux-серверами в своем арсенале есть свои наработки. Для быстрого анализа производительности сервера и диагностики возникающих проблем он использует проверенный годами набор команд.

Евгений Лебедь имеет следующие:  

1) команда top выводит текущие процессы, которые обрабатываются ядром.  По умолчанию данные обновляются каждые пять секунд.

2) с помощью команды vmstat можно увидеть краткосрочный снимок процессора, памяти, процессов и операций ввода/вывода.

3) с помощью команды iostat можно получить отчет об использовании процессора, нагрузке на дисковую и сетевую подсистему:

# iostat -x 5              - получать данные о нагрузке на жёсткий диск каждые 5 секунд 

Однако iostat является частью пакета системных утилит контроля производительности Sysstatl. Имеет смысл использовать весь пакет. Sysstat сообщает информацию о системе, скорость операций ввода-вывода, объем использования выполняемыми процессаим раздела/файла подкачки, прерываний, сети, памяти, центрального процессора, задействования ядра, tty и другое, в том числе с поддержкой многопроцессорных машин.

Sysstat содержит следующие утлиты:

* sar: отчеты с информацией о системе

* iostat: отчеты об использовании процессора и дискового ввода/вывода

* mpstat: отчеты об использовании процессора как полностью так поядерно

* pidstat: отчеты об задачах (процессах)

* sadf: отчёты by sar в различных форматах

* cifsiostat: отчёты об операциях ввода-вывода для файловой системы CIFS

* nfsiostat-sysstat: (устаревшее) отчёты об операциях ввода-вывода для сетевых файловых систем

Для установки пакета следует выполнить команду # apt-get install sysstat

4) информацию об использовании оперативной памяти и свопа можно увидеть с помощью команды free.

5) утилита командной строки lsof (List Open Files) используется для получения информации об открытых различными процессами файлах (а с точки зрения unix все является файлами - каталоги, устройства, сокеты и т. д.):

-увидеть процессы, использующие файл можно просто передав имя файла в качестве аргумента:

lsof /var/log/syslog

-увидеть список процессов, использующие файлы в конкретном каталоге можно с помощью опции +D:

lsof +D /var/log/

-увидеть список открытых файлов определенным процессом (или несколькими процессами) можно с помощью -с <имя_процесса>:

lsof -c ssh -c monit

-увидеть процессы, использующие каталог (например, точку монтирования) можно так:

lsof /var/spool/asterisk

-список файлов, открытых определенным пользователем можно так:

lsof -u user1

-просмотреть список файлов, использующихся конкретным процессом:

lsof -p 20263

-вывести только PID процесса, использующего файл:

lsof -t /var/log/syslog

-использовать lsof можно в цикле. Этот режим включается с помощью опции -r или +r, причем дополнительно можно указать таймаут между выполнениями цикла (в секундах). Результат вывода каждого цикла будет отделен символами «=======»:

lsof -c rsyslogd -r5

-посмотреть список окрытых сетевых соединений можно с помощью опций -i (все), -i4 (IPV4) и -i6 (IPV6):

sudo lsof -i4

-список сетевых соединений, использующих определенный порт можно увидеть так:

lsof -i :25

-отфильтровать открытые сетевые соединения по протоколу TCP:

lsof -i tcp

6) а вот утилита Sysdig благодаря своей фунциональности вполне способна заменить всех выше названных. Более подробно про ее использвование можно прочесть по ссылке.



И приятный бонус: утилита sysdig также имеет UI который очень похож на интерфейс утилиты htop. Для запуска нужно использовать команду csysdig. Далее можно с помощью функциональных клавиш фильтровать/сортировать вывод событий, менять вид отображения, использовать поиск и “погружаться” (dig) глубже в интересующий процесс для получения дополнительных сведений. 

Удачи.

No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное