Обеспечение качества функционирования компьютерных систем · работа 2/5

Мониторинг и диагностика компьютерных систем

Учимся разбирать сбои по метрикам, логам и трассировкам. Сначала изучите теорию и интерактивные модели, затем выполните три практических задания и тест внизу страницы. Всё сохраняется в этом браузере автоматически.

Теория → практика → тест → PDF15 проверяемых вопросов3 практических задания3 развёрнутых ответаРаботает без интернета
Изучить теориюПерейти к тестуИсточники
01

Зачем нужна диагностика и мониторинг

В прошлой работе вы описали требования к «Кампусу». Теперь представьте утро понедельника: преподаватели жалуются, что сохранение оценок зависает. Нужно установить, что сломалось, где и когда, а не сразу перезагружать все серверы.

Мониторинг систематически собирает сигналы о состоянии системы. Диагностика анализирует эти сигналы, чтобы сузить круг причин. Наблюдаемость описывает возможность исследовать внутреннее состояние по доступным сигналам; её часто строят вокруг метрик, журналов и трассировок.

Запрос студентаНажата кнопка «Оценки»
→
Сервис APIОбработка и проверка прав
→
База данныхПоиск записей
→
ОтветСтраница или ошибка
Учебная схема: последовательность показана упрощённо.

Ошибка в браузере может появиться из-за недоступности API, медленного запроса к БД или проблем сети. Симптом — ещё не корневая причина.

02

Три типа сигналов: метрики, логи, трассировки

СигналКакие вопросы отвечаетПример для «Кампуса»
МетрикаСколько? Как менялось во времени?Процент HTTP 5xx, p95, загрузка CPU
ЛогКакое событие произошло?Ошибка timeout при обращении к PostgreSQL
ТрассировкаГде потрачено время конкретного запроса?API 50 мс → обращение к БД 1800 мс

Метрики удобны для поиска момента ухудшения. Логи раскрывают отдельные события и контекст, но могут быть шумными. Трассировки связывают шаги одного запроса через несколько компонентов. Эти источники дополняют друг друга.

Пример трассы одного запроса, длительность ≈ 2 секунды
HTTP API
2 000 мс
Проверка роли
40 мс
Запрос к БД
1 800 мс
Полосы отражают вложенные операции, их длительности не требуется складывать: запрос к БД входит в общее время API.
03

Что измерять: четыре золотых сигнала

Для веб-сервисов полезна система из четырёх сигналов: latency (задержка), traffic (интенсивность запросов), errors (ошибки), saturation (насыщение ресурсов). Это практическая модель из SRE, а не полный список показателей для любого оборудования.

СигналВозможная метрикаВопрос
Latencyp95 response time в мсКак долго ожидает пользователь?
TrafficЗапросов в секунду (RPS)Сколько работы поступает?
ErrorsДоля ошибок по выбранному определениюКак часто запрос не выполняет цель?
SaturationОчередь БД, CPU, pool соединенийНасколько близки к пределу?

В мониторинге типа Prometheus counter предназначен для накапливаемого счётчика, который может сброситься при перезапуске; gauge может увеличиваться и уменьшаться. Для распределения задержек часто применяют histogram. Нельзя измерять растущим счётчиком число открытых соединений, которое свободно уменьшается.

Высокий CPU не всегда означает неисправность. Важно сопоставить утилизацию с пользовательской задержкой, ошибками и изменениями нагрузки.
04

Разбор инцидента: сначала факты, потом гипотезы

Последовательность первичной диагностики помогает не действовать хаотично: подтвердить проблему → определить затронутых пользователей → посмотреть динамику → сопоставить события → локализовать подозрительный компонент → проверить гипотезу. Если есть риск потери данных, приоритетом становится безопасное ограничение последствий.

🧪 Интерактив: панель мониторинга инцидента

Переключайте сценарии. Все значения ниже смоделированы для обучения, а не получены с настоящего сервера. Сравните признаки и сформулируйте первичную гипотезу.

1. ПодтвердитьВремя и масштаб проблемы
→
2. СравнитьНорму и ухудшение
→
3. ПроверитьМетрики + логи + изменения
→
4. ИсправитьС контролем результата
Учебная схема: последовательность показана упрощённо.

Если после публикации версии резко вырос HTTP 500, это повод проверить изменения кода и конфигурации. Но совпадение по времени не заменяет доказательства причины.

05

Алерты, уровни серьёзности и защита данных

Оповещение полезно, если позволяет выполнить понятное действие. «CPU выше 80% одну секунду» часто вызывает шум; «ошибки запросов больше 5% за 5 минут и пользовательская операция недоступна» отражает значимый симптом. Конкретный порог выбирают по профилю системы.

ПриоритетПримерТипичное действие
КритическийМассово недоступен вход в системуНемедленно организовать реагирование
ВысокийСохранение оценок периодически падаетЛокализовать, ограничить влияние
НизкийРастёт время фонового отчётаАнализировать в плановом порядке

Чего не должно быть в журнале

Не записывайте пароли, токены авторизации, персональные данные целиком. Полезнее хранить время, код ошибки, идентификатор запроса, компонент и безопасный контекст. Примеры логов в этой работе специально обезличены.

2026-10-17T09:00:12Z ERROR component=grades-api request_id=req-7f2 status=503 db_timeout_ms=1500

Время с Z записано в UTC. При сопоставлении событий следует учитывать временные зоны и синхронизацию часов.

06

Базовая линия и отличие аномалии от сезонного пика

Мониторинг без представления о нормальном поведении не даёт устойчивых выводов. Базовая линия (baseline) — ориентир, полученный по типичным измерениям. В «Кампусе» за час до начала занятий нагрузка ниже, чем сразу после публикации оценок. Поэтому сравнение только с одной глобальной средней величиной может порождать ложные тревоги.

ПериодСредний RPSp95 ответаОшибки
Обычный будний день, 08:0080250 мс0,2%
Публикация оценок, 16:00450620 мс0,4%
Инцидент при публикации4304 200 мс9,1%

В таблице показатели учебные. Трафик 430 RPS сам по себе допустим в период публикации, но резкое изменение задержек и ошибок при сходной нагрузке — повод расследовать. Полезно учитывать будни, выходные, релизы и изменения инфраструктуры.

Ложноположительное оповещение сообщает о проблеме там, где её нет; ложноотрицательное пропускает реальное нарушение. Хороший порог ищет компромисс между чувствительностью и шумом.

07

Основы диагностики операционной системы и сети

Прежде чем писать «сервер упал», важно подтвердить уровень отказа. Сервер может отвечать на ICMP, но приложение возвращать HTTP 503; DNS может указывать неправильный адрес при исправном API. Поэтому инструменты проверяют разные слои.

ИнструментЧто проверяетО чём помнить
ping hostДостижимость по ICMPICMP может быть запрещён, приложение всё равно может работать
curl -I https://example.orgHTTP-ответ для HEAD-запросаСайт может по-разному обрабатывать HEAD и GET
df -hИспользование файловых систем в LinuxЗаполнение диска — гипотеза, а не причина любого сбоя
free -hИспользование памяти в LinuxОС использует память под кэши; важен контекст
Диспетчер задач WindowsCPU, память, процессыУровень процесса не равен здоровью всего сервиса
# Примеры только для ознакомления, без воздействия на систему curl -I https://example.org df -h free -h

В этой работе не нужно выполнять команды на чужой инфраструктуре. Если преподаватель выдаёт лабораторную машину, результаты фиксируют с указанием времени и проверяемого узла.

08

Хронология инцидента и безопасный разбор

Инженерный отчёт полезнее фразы «всё тормозило». В хронологии различают начало деградации, момент обнаружения, время реакции, предпринятое изменение и момент подтверждённого восстановления. Эти времена могут не совпадать.

ВремяНаблюдаемое событиеВывод
09:10Начало роста HTTP 5xxПроблема уже влияет на часть запросов
09:13Сработал алертЗадержка обнаружения 3 мин
09:18Инженер проверил БД и логиЕсть первичная гипотеза
09:25Отключено проблемное изменениеПредпринято действие
09:29Ошибки вернулись в нормуУслуга восстановлена по критерию

В этом примере интервал деградации длится около 19 минут — с 09:10 по 09:29. Окончательное время доступности зависит от SLI, но именно такие границы нужны для прозрачного расчёта. После стабилизации команда фиксирует факторы, затруднившие обнаружение, и проверяет, нужны ли новые метрики или тесты.

09

Практика: сформируйте диагностический отчёт

Используйте сценарии A–D интерактивной панели. Задача — разделять наблюдение, гипотезу и проверку гипотезы. Нельзя объявлять корневую причину только по цвету виджета.

Задание 1. Анализ сценариев B и C

  1. Для сценариев B и C выпишите значения CPU, p95 и доли ошибок.
  2. Укажите, какой компонент вы проверите первым в каждом случае и почему.
  3. Предложите по одному дополнительному измерению, которое помогло бы подтвердить гипотезу.

Задание 2. План расследования D

  1. Опишите четыре последовательных шага разбора инцидента после релиза.
  2. Назовите два безопасных поля, которые должны присутствовать в логах.
  3. Предложите критерий, по которому можно считать проблему устранённой.

Задание 3. Правило оповещения

  1. Составьте правило алерта для сохранения оценок с метрикой, порогом и окном наблюдения.
  2. Определите, кому и с каким приоритетом направлять сигнал.
  3. Поясните, почему кратковременный всплеск не обязательно требует аварийного реагирования.
Часть II · проверка знаний

Тест по изученному материалу

Выберите один ответ в каждом вопросе и нажмите «Проверить тест». После проверки появятся разборы. Практические задания и развёрнутые вопросы проверяет преподаватель — в процентах они не учитываются.

0 ответовПовторная попытка разрешена

Часть A. Выберите правильный ответ

Часть Б. Объясните своими словами

Эти вопросы оценивает преподаватель. Не копируйте определения: приведите собственный аргумент и, где необходимо, расчёт или пример.

Источники для дополнительного изучения

Теоретические сведения адаптированы для обучения. Интерактивные расчёты и сценарии — учебные модели, не измерения работающей инфраструктуры. Внешние ссылки нужны только для дополнительного чтения: сама работа открывается без интернета.

  1. Google SRE · Monitoring Distributed Systems
  2. Prometheus · Metric Types

Перед сдачей

✓ Заполнены ФИО, группа и дата.
✓ Выполнены три практических задания.
✓ Выбраны и проверены ответы на 15 тестовых вопросов.
✓ Записаны три развёрнутых ответа.

Нажмите «Отправить работу — сохранить PDF» и в диалоге печати выберите «Сохранить как PDF». В PDF попадут ФИО, ответы, результат тестирования и задания. Никакие данные не отправляются на сервер.