Какие основные инструменты для диагностики системы в Linux вы используете?

«Какие основные инструменты для диагностики системы в Linux вы используете?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Первичный осмотр ("quick health check"): Первым делом я смотрю общую картину с помощью одной команды:

# Проверяю uptime (load average), память, дисковое пространство и топ процессов
echo "=== Load Average ===" && uptime
echo "n=== Memory Usage ===" && free -h
echo "n=== Disk Space ===" && df -hT | grep -v tmpfs
echo "n=== Top 5 Processes by CPU ===" && ps aux --sort=-%cpu | head -6
echo "n=== Top 5 Processes by MEM ===" && ps aux --sort=-%mem | head -6

Детальная диагностика по категориям:

1. Нагрузка на CPU и процессы:

  • htop / top — Интерактивный мониторинг процессов. htop предпочтительнее из-за цветового выделения и удобной навигации.
  • pidstat 2 5 — Статистика по отдельным процессам с обновлением каждые 2 секунды (5 отчетов). Показывает потребление CPU, памяти, дискового ввода-вывода.
  • mpstat -P ALL 2 — Показывает загрузку по каждому ядру CPU. Помогает выявить проблему с single-threaded процессом, нагружающим одно ядро.

2. Память (RAM и Swap):

  • free -m — Быстрый просмотр использования оперативной памяти и swap.
  • vmstat 2 5 — Вывод статистики по памяти, swap, процессам. Ключевые поля: si (swap in), so (swap out). Если so > 0 постоянно — нехватка RAM.

3. Дисковый ввод-вывод (I/O):

  • iostat -xz 2 — Показывает нагрузку на диски, время ожидания (await), утилизацию (%util). Значение await > 10-20 мс часто указывает на проблему с диском.
  • iotop — Аналог top для дискового I/O, показывает какие процессы активно читают/пишут.
  • df -i — Проверка исчерпания inodes (может случиться даже при свободном месте, если много мелких файлов).

4. Сетевая диагностика:

  • ss -tulnp или netstat -tulnp — Какие процессы слушают какие порты. ss работает быстрее.
  • iftop или nethogs — Мониторинг сетевого трафика в реальном времени по интерфейсам (iftop) или по процессам (nethogs).
  • tcpdump -i eth0 -n port 80 — Глубокий анализ пакетов для диагностики проблем с подключением.

5. Анализ логов:

  • journalctl -u nginx --since "10 minutes ago" --no-pager — Просмотр логов конкретного сервиса (systemd) за последние 10 минут.
  • tail -f /var/log/syslog или tail -f /var/log/nginx/error.log — Отслеживание логов в реальном времени.
  • dmesg -T | tail -20 — Просмотр последних сообщений ядра (полезно при аппаратных сбоях или OOM Killer).

Сценарий: При жалобе на "медленный сервер" мой поток: 1) htop — смотрю load average и процессы, 2) vmstat 2 — проверяю наличие swap activity, 3) iostat 2 — анализирую дисковую нагрузку, 4) ss -tulnp — проверяю сетевые соединения.