Ответ
Мониторинг нагрузки (performance monitoring) проводится на разных уровнях стека с помощью специализированных инструментов.
Уровни мониторинга и инструменты:
| Уровень | Цель | Инструменты |
|---|---|---|
| Инфраструктура | CPU, RAM, Disk I/O, Network | OS: top, htop, vmstat, iostat, nmon (Linux). Системы: Zabbix, Nagios, Prometheus (сбор метрик). |
| Приложение (APM) | Время отклика, ошибки, трассировка запросов | Специализированные: New Relic, Datadog, AppDynamics. Open-source: Jaeger, Zipkin (трассировка). |
| Сеть и БД | Запросы к БД, сетевая задержка | БД: pg_stat_statements (PostgreSQL), slow query log. Сеть: Ping, traceroute, Wireshark. |
| Клиентский (Frontend) | Время загрузки страницы, отрисовки | Браузер: Chrome DevTools (Performance, Lighthouse). RUM: Яндекс.Метрика, Google Analytics. |
| Визуализация и алертинг | Дашборды, уведомления | Grafana (чаще всего с Prometheus). Встроенные дашборды в Datadog, New Relic. |
Примеры использования:
-
Быстрая проверка нагрузки на сервере через CLI:
# Просмотр процессов, потребляющих CPU top -b -n 1 | head -20 # Мониторинг использования памяти free -h # Проверка дискового ввода/вывода iostat -dx 2 5 -
Настройка базового алерта в Prometheus + Alertmanager (пример для высокого CPU):
# alert_rules.yml groups: - name: host_alerts rules: - alert: HighCpuLoad expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "Высокая загрузка CPU на {{ $labels.instance }}"
Best Practice: Внедрять мониторинг по методологии USE (Utilization, Saturation, Errors) или RED (Rate, Errors, Duration) для комплексного покрытия метрик.
Ответ 18+ 🔞
А, ну ты глянь, мониторинг нагрузки, блядь! Это ж как в поликлинике, только для серверов — везде датчики понатыканы, чтоб понять, кто там хрипит и дохнет. Слушай, разбираем по полочкам, но без занудства, а то заснёшь нахуй.
Где и чем тыкаем, чтоб понять, что болит:
| Уровень | Зачем тыкаем | Чем тыкаем |
|---|---|---|
| Инфраструктура | CPU не кипит ли, память не кончилась, диски не скрипят? | Из консоли: top, htop, vmstat — классика жанра, блядь. Для серьёзных пацанов: Zabbix, Prometheus — они всё сами посчитают и в морду тычут, если что. |
| Само приложение (APM) | А не тормозит ли наша кривая логика? Где запрос завис? | Платные штуки: New Relic, Datadog — овердохуища возможностей, но и денег стоят. Бесплатно-бунтарское: Jaeger, Zipkin — сам всё настроишь, зато потом гордиться будешь. |
| Сеть и базы данных | А не тупит ли база? Не роутер ли наш — пидарас шерстяной? | Для БД: pg_stat_statements в PostgreSQL — покажет, кто там тяжёлые запросы гоняет. Для сети: Wireshark — если совсем припёрло и надо в пакеты заглянуть. |
| Клиентская часть (Frontend) | А у юзера-то страница за 10 секунд грузится или он уже уснул? | Прямо в браузере: Chrome DevTools — Performance вкладка, там всё разложено. Для статистики: Яндекс.Метрика — чтоб знать, сколько народу сбежало, не дождавшись. |
| Чтоб красиво было и пищало | Картинки с графиками для начальства и алерты, чтоб ночью будили. | Король дашбордов: Grafana — подключил к Prometheus и красота, блядь. Ну или в тех же Datadog свои виджеты наверти. |
Ну и парочка живых примеров, чтоб не на словах:
-
Быстро прикинуть, че творится на сервере, через консоль:
# Смотрим, кто CPU жрёт, как не в себя top -b -n 1 | head -20 # Проверяем, не кончилась ли память (free -h, ага, «свободно», смешно) free -h # Диски наши не захлебнулись от операций? iostat -dx 2 5 -
Чтоб тебе не спалось спокойно, настраиваем алерт на высокий CPU в Prometheus:
# alert_rules.yml groups: - name: host_alerts rules: - alert: HighCpuLoad expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "Высокая загрузка CPU на {{ $labels.instance }}"Перевожу: если какая-то мразь (
instance) пятерку минут CPU грузит больше чем на 80% — тебе придёт письмо счастья. Волнение ебать!
И главный совет, чтоб не метаться как Герасим с Муму: внедряй мониторинг по каким-то вменяемым принципам, типа USE (Утилизация, Насыщение, Ошибки) или RED (Скорость, Ошибки, Длительность). А то будешь тысячу метрик собирать, а что с ними делать — хуй знает. Короче, чтоб покрыть всё важное, а не просто графики рисовать.