Как посмотреть утилизацию ресурсов (цпу, память)
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Мониторинг утилизации ресурсов в DevOps-практике
В DevOps-контексте мониторинг утилизации CPU и памяти является критически важной задачей для обеспечения стабильности, производительности и эффективного использования инфраструктуры. Я поделюсь комплексным подходом, который мы используем на практике, охватывая как базовые команды, так и продвинутые системы мониторинга.
Базовые команды в Linux-системах
Для быстрой диагностики на конкретном сервере используются следующие утилиты:
Для мониторинга CPU:
# Общая нагрузка CPU (1, 5, 15 минут)
uptime
# Динамический мониторинг в реальном времени
top
htop # более продвинутая версия с цветовым выделением
# Статистика использования CPU
mpstat -P ALL 1 # детализация по всем ядрам каждую секунду
Для мониторинга памяти:
# Общая информация о памяти
free -h # human-readable формат
# Детальная информация
cat /proc/meminfo
# Отслеживание процессов по потреблению памяти
top -o %MEM # сортировка по использованию памяти
ps aux --sort=-%mem | head -20 # топ-20 процессов по памяти
Продвинутые инструменты мониторинга
В production-средах мы используем специализированные системы:
1. Prometheus + Node Exporter - де-факто стандарт для облачных сред:
# Пример конфигурации сбора метрик
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
2. cAdvisor - для контейнеризированных сред (Docker/Kubernetes):
# Запуск cAdvisor для мониторинга контейнеров
docker run -d \
--name=cadvisor \
-p 8080:8080 \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
google/cadvisor:latest
3. Datadog/New Relic - коммерческие APM-решения с расширенной аналитикой
Ключевые метрики для мониторинга
Для CPU:
cpu_usage_percentage- общая утилизацияload_average- средняя нагрузка (1, 5, 15 минут)context_switches- переключения контекстаsteal_time- особенно важно в виртуализированных средах
Для памяти:
memory_used_percentage- процент использованной памятиswap_usage- использование свопаoom_kills- количество убийств процессов OOM killerpage_cache- размер кэша страниц
Автоматизация и алертинг
Мы настраиваем алерты на критические пороги:
# Пример алерт-правила для Prometheus
groups:
- name: node_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
- alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
for: 5m
labels:
severity: critical
Анализ в Kubernetes
Для Kubernetes-кластеров дополнительно используем:
# Мониторинг ресурсов подов
kubectl top pods --all-namespaces
# Мониторинг ресурсов нод
kubectl top nodes
# Установка metrics-server для сбора метрик
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Рекомендации по порогам:
- CPU: предупреждение при 70%, критический уровень при 85%
- Память: предупреждение при 80%, критический при 90%
- Всегда учитывайте burst-нагрузки и сезонные паттерны
В современном DevOps-стеке мониторинг ресурсов не ограничивается простым сбором метрик - он включает прогнозную аналитику, автоматическое масштабирование (HPA/VPA в Kubernetes) и интеграцию с системами инцидент-менеджмента (PagerDuty, OpsGenie). Ключевой принцип - pro-active, а не reactive мониторинг, позволяющий предотвращать проблемы до их возникновения.