Как проверять ресурсы Linux сервера
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Мониторинг ресурсов Linux-сервера: от базовых команд до продвинутых практик
Проверка ресурсов Linux-сервера — фундаментальная задача DevOps-инженера. Я разделю подход на несколько ключевых уровней: интерактивный мониторинг, сбор метрик, логирование и автоматизация.
1. Базовые команды для быстрой диагностики
Для оперативной проверки «здоровья» системы я использую стандартные утилиты, которые есть практически в любом дистрибутиве.
CPU
top/htop: Показывают загрузку CPU в реальном времени, процессы, потребляющие ресурсы.top -b -n 1 | head -20 # Для скриптов, один снимокmpstat(из пакетаsysstat): Детализация по каждому ядру.mpstat -P ALL 1 5 # Каждую секунду, 5 раз, все ядраpidstat: Мониторинг потребления CPU на уровне процессов.pidstat -u 2 5 # Потребление CPU процессами каждые 2 секунды, 5 отчетов
Память (RAM и Swap)
free: Быстрый просмотр использования оперативной памяти и swap.free -h # Человеко-читаемый формат (GB/MB)vmstat: Показывает активность памяти, свопинг, блоки ввода/вывода.vmstat 2 10 # Каждые 2 секунды, 10 раз
Дисковое пространство и I/O
df: Использование дискового пространства на файловых системах.df -hT # -h для читаемого формата, -T для типа ФСdu: Анализ использования диска директориями.du -sh /var/log/* # Суммарный размер логов в /var/logiostat: Детальная статистика по дисковым операциям.iostat -xz 2 5 # Детально, каждые 2 секунды
Сеть
ss(современная заменаnetstat): Активные соединения, сокеты.ss -tulpn # Все слушающие TCP/UDP порты с процессамиiftop/nethogs: Мониторинг трафика в реальном времени.sar: Сбор исторических данных (требует настройкиsysstat).
2. Продвинутые инструменты для персистентного мониторинга
В продакшене недостаточно интерактивных команд. Нужны системы, которые собирают, хранят и визуализируют метрики.
- Prometheus + Node Exporter: Де-факто стандарт для сбора метрик. Node Exporter предоставляет сотни метрик о системе в формате, готовом для сбора Prometheus.
- Grafana: Визуализация метрик из Prometheus и других источников. Создаю дашборды с ключевыми метриками: загрузка CPU >80%, память <10% free, диск >90%.
- ELK Stack (Elasticsearch, Logstash, Kibana) или Loki: Для агрегации и анализа логов, которые также помогают диагностировать проблемы с ресурсами (например, поиск по логам при высоком потреблении памяти).
3. Автоматизация проверок и алертинг
Ручные проверки не масштабируются. Я настраиваю:
-
Alertmanager в связке с Prometheus: Правила алертинга на основе метрик.
# Пример правила для Prometheus (prometheus.rules.yml) groups: - name: host_stats rules: - alert: HighMemoryUsage expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 < 10 for: 5m labels: severity: warning annotations: summary: "High memory usage on {{ $labels.instance }}" -
Скрипты на bash/Python для кастомных проверок, которые не покрыты стандартными метриками. Например, проверка количества дескрипторов файлов для конкретного процесса.
#!/bin/bash PID=$(pgrep -f my_application) if [ -n "$PID" ]; then FD_COUNT=$(ls /proc/$PID/fd | wc -l) if [ $FD_COUNT -gt 1024 ]; then echo "WARNING: Process $PID has $FD_COUNT file descriptors open" fi fi -
Интеграция с системами управления конфигурациями (Ansible, SaltStack) для периодического сбора информации о ресурсах на всех серверах и генерации отчетов.
4. Контейнеры и оркестраторы
В современных средах важно мониторить ресурсы не только хоста, но и контейнеров:
- cAdvisor: Сбор метрик по контейнерам.
- Встроенные метрики в Kubernetes через Metrics Server и горизонтальное автомасштабирование (HPA).
- Команды для диагностики внутри среды оркестратора:
kubectl top nodes # Потребление ресурсов нодами kubectl top pods -n monitoring # Потребление ресурсов подами в namespace
5. Проактивный подход и лучшие практики
- Установка baseline: Понимание нормального поведения системы под нагрузкой.
- Мониторинг не только текущего состояния, но и трендов: Использование функций прогнозирования в Grafana.
- Интеграция с инцидент-менеджментом (PagerDuty, Opsgenie, Telegram-боты).
- Регулярные аудиты и чистка: Автоматизированные скрипты для удаления старых логов, кешей, временных файлов (например, с помощью
logrotateи cron). - Инфраструктура как код (IaC): В описании инфраструктуры (Terraform, CloudFormation) сразу закладываю лимиты ресурсов и метрики для мониторинга.
Главный принцип: мониторинг должен быть непрерывным, автоматизированным и проактивным. Комбинация инструментов реального времени (htop, iftop), систем сбора метрик (Prometheus), визуализации (Grafana) и алертинга позволяет не только быстро реагировать на проблемы, но и предотвращать их, анализируя тренды и планируемо масштабируя инфраструктуру.