Ответ
Для эффективного troubleshooting в Linux-окружении DevOps-инженер должен владеть набором стандартных и специализированных утилит. Вот ключевые из них, которые я использую регулярно.
1. Диагностика сети и подключений
ss/netstat: Просмотр сетевых соединений, сокетов, статистики.ss— современная заменаnetstat.# Показать все слушающие TCP-порты и процессы, которые их используют ss -tlnpcurl/wget: Тестирование HTTP/HTTPS-эндпоинтов, проверка заголовков, таймаутов.# Проверить доступность и время ответа эндпоинта здоровья curl -o /dev/null -s -w 'HTTP Code: %{http_code}, Time: %{time_total}sn' http://localhost:8080/healthdig/nslookup: Диагностика DNS.digдает более детальный вывод.# Получить A-запись и проверить время разрешения dig +short A example.comtcpdump: Глубокий анализ сетевого трафика.# Перехватить пакеты на интерфейсе eth0, идущие на порт 80 tcpdump -i eth0 -n 'tcp port 80'nc(netcat): Проверка доступности TCP/UDP портов, создание простых серверов для тестов.# Проверить, открыт ли порт 5432 на удаленном хосте nc -zv db-host 5432
2. Анализ производительности системы
htop/top: Мониторинг использования CPU и памяти процессами в реальном времени.vmstat/mpstat/iostat: Утилиты пакетаsysstatдля детального анализа загрузки CPU, памяти, дискового ввода/вывода и свопинга.# Показать статистику по CPU каждую секунду mpstat 1 # Показать статистику по дискам iostat -xz 1free -h: Быстрая проверка использования оперативной памяти и свопа.
3. Работа с процессами и файлами
ps: Поиск процессов по различным критериям.# Найти PID процесса Java ps aux | grep javalsof: Показать все файлы и сетевые соединения, открытые процессом.# Узнать, какой процесс использует порт 8080 lsof -i :8080strace/ltrace: Трассировка системных вызовов и библиотечных вызовов процесса. Незаменимы для отладки "зависших" или падающих процессов.# Отследить системные вызовы процесса при его запуске strace -f -o trace.log ./my_binary
4. Анализ логов
journalctl: Просмотр и фильтрация логов systemd (основной источник системных логов в современных дистрибутивах).# Показать логи конкретного сервиса за последний час journalctl -u nginx --since "1 hour ago" -ftail,grep,awk,jq: Классическая связка для фильтрации и анализа текстовых и JSON-логов.# Искать ошибки в лог-файле и выводить 5 строк контекста tail -f /var/log/app/error.log | grep -A5 -B5 "CRITICAL" # Анализировать JSON-логи и извлекать конкретные поля cat app.log | jq '. | select(.level == "ERROR") | {timestamp, message}'
5. Проверка дискового пространства
df -h: Показать свободное место на смонтированных файловых системах.du -sh *: Найти, какие директории занимают больше всего места.
Комбинируя эти утилиты, можно локализовать большинство проблем: от сетевой недоступности и нехватки ресурсов до ошибок в конфигурации приложений.