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

Как проверять ресурсы Linux сервера

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

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

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

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

Мониторинг ресурсов 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/log
    
  • iostat: Детальная статистика по дисковым операциям.
    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. Автоматизация проверок и алертинг

Ручные проверки не масштабируются. Я настраиваю:

  1. 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 }}"
    
  2. Скрипты на 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
    
  3. Интеграция с системами управления конфигурациями (Ansible, SaltStack) для периодического сбора информации о ресурсах на всех серверах и генерации отчетов.

4. Контейнеры и оркестраторы

В современных средах важно мониторить ресурсы не только хоста, но и контейнеров:

  • cAdvisor: Сбор метрик по контейнерам.
  • Встроенные метрики в Kubernetes через Metrics Server и горизонтальное автомасштабирование (HPA).
  • Команды для диагностики внутри среды оркестратора:
    kubectl top nodes  # Потребление ресурсов нодами
    kubectl top pods -n monitoring  # Потребление ресурсов подами в namespace
    

5. Проактивный подход и лучшие практики

  1. Установка baseline: Понимание нормального поведения системы под нагрузкой.
  2. Мониторинг не только текущего состояния, но и трендов: Использование функций прогнозирования в Grafana.
  3. Интеграция с инцидент-менеджментом (PagerDuty, Opsgenie, Telegram-боты).
  4. Регулярные аудиты и чистка: Автоматизированные скрипты для удаления старых логов, кешей, временных файлов (например, с помощью logrotate и cron).
  5. Инфраструктура как код (IaC): В описании инфраструктуры (Terraform, CloudFormation) сразу закладываю лимиты ресурсов и метрики для мониторинга.

Главный принцип: мониторинг должен быть непрерывным, автоматизированным и проактивным. Комбинация инструментов реального времени (htop, iftop), систем сбора метрик (Prometheus), визуализации (Grafana) и алертинга позволяет не только быстро реагировать на проблемы, но и предотвращать их, анализируя тренды и планируемо масштабируя инфраструктуру.

Как проверять ресурсы Linux сервера | PrepBro