← Назад к вопросам

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

1.6 Junior🔥 231 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Диагностика состояния сервера в DevOps

Диагностика состояния сервера — это комплексный процесс, требующий анализа различных метрик системы. Я использую как базовые команды для быстрой проверки, так и продвинутые инструменты для глубокого расследования проблем. Вот основные категории и команды.

1. Мониторинг ресурсов (CPU, Memory, Disk, Network)

CPU и общая нагрузка:

# Просмотр нагрузки системы в реальном времени
top
htop  # более продвинутая версия с цветовым оформлением

# Краткая сводка по нагрузке (отлично для скриптов)
uptime  # показывает среднюю нагрузку за 1, 5 и 15 минут

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

# Детальная информация об использовании памяти
free -h  # флаг -h для человеко-читаемого формата
vmstat 2 5  # статистика каждые 2 секунды, 5 раз

# Мониторинг в реальном времени
watch -n 2 free -h  # обновление каждые 2 секунды

Дисковое пространство и I/O:

# Свободное место на дисках
df -h  # показывает использование по файловым системам
df -i  # информация об inode (важно для серверов с множеством мелких файлов)

# Проверка дискового ввода/вывода
iostat -x 2  # детальная статистика по дискам
iotop  # аналог top для дискового I/O (требует установки)

Сетевая активность:

# Статистика по сетевым интерфейсам
ip -s link  # подробная статистика по пакетам и ошибкам
ss -tulpn  # современная замена netstat, показывает открытые порты

# Мониторинг трафика в реальном времени
iftop  # показывает трафик по соединениям
nethogs  # показывает трафик по процессам

2. Анализ процессов и служб

Управление процессами:

# Поиск процессов по имени или потреблению
ps aux | grep nginx  # поиск процессов nginx
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head  # топ по потреблению памяти

# Детальный анализ конкретного процесса
lsof -p <PID>  # список открытых файлов процессом
strace -p <PID>  # трассировка системных вызовов (для отладки)

Службы и их статус:

# Для систем на systemd
systemctl status <service_name>  # статус службы
journalctl -u <service_name> -f  # логи службы в реальном времени
systemctl list-units --type=service --state=failed  # список упавших служб

3. Логи и журналы событий

Централизованный просмотр логов:

# Основные системные логи
tail -f /var/log/syslog  # Ubuntu/Debian
tail -f /var/log/messages  # RHEL/CentOS

# Логи конкретных служб
tail -f /var/log/nginx/error.log
tail -f /var/log/mysql/error.log

# Поиск по логам
grep -r "error" /var/log/*.log  # рекурсивный поиск ошибок
journalctl --since "2024-01-01" --until "2024-01-02"  # логи за период

4. Специализированные инструменты для глубокой диагностики

Производительность системы:

# Комплексный мониторинг
dstat  # объединяет vmstat, iostat, ifstat и другие

# Анализ производительности в реальном времени
perf top  # профилирование процессора
sar  # системный сборщик статистики (требует установки и настройки)

Безопасность и сеть:

# Проверка открытых портов и соединений
netstat -an | grep LISTEN  # классическая команда (часто установлена по умолчанию)
nmap -sT -O localhost  # сканирование портов локально

# Проверка конфигурации сети
ip addr show  # информация о сетевых интерфейсах
ping -c 4 google.com  # проверка доступности сети
traceroute google.com  # трассировка маршрута

5. Автоматизация диагностики

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

#!/bin/bash
# Скрипт для быстрой диагностики
echo "=== Системная сводка ==="
echo "Время работы: $(uptime)"
echo "Загрузка CPU: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"
echo "Свободная память: $(free -h | grep Mem | awk '{print $4}')"
echo "Свободное место на дисках:"
df -h | grep -v tmpfs
echo "Топ-5 процессов по памяти:"
ps -eo pid,comm,%mem,%cpu --sort=-%mem | head -6

Для производственных сред я предпочитаю использовать системы мониторинга (Prometheus, Grafana, Zabbix) и централизованного сбора логов (ELK Stack, Loki). Эти инструменты позволяют не только реагировать на проблемы, но и прогнозировать их, анализируя тренды и устанавливая автоматические алерты.

Главный принцип диагностики — начинать с общего состояния (uptime, load average), затем переходить к конкретным ресурсам (CPU, память, диск), и только потом анализировать логи и отдельные процессы. Такой подход позволяет быстро локализовать проблему и минимизировать время простоя сервисов.