open atlas
↑ К треку
Наблюдаемость OBS · 00 · 01

С нуля: что такое наблюдаемость на самом деле

Наблюдаемость — это возможность спросить «что делает моя система и почему» снаружи. Это карта «с нуля» и восемь слов, которые остальной трек считает уже знакомыми.

OBS Основы ◷ 10 min
Уровень
ОсновыJuniorMiddleSenior

Твой сервис живёт. Пользователи заходят. И тут кто-то в Slack пишет: «оформление заказа сломалось». Ты открываешь терминал и смотришь в пустоту. К дебаггеру не подключиться — код работает сразу на трёх серверах, обрабатывает сотни запросов в секунду, а сбой случился 90 секунд назад. У тебя есть только то, что система сама решила о себе записать. Если она записала нужное в нужном виде — ты ответишь «что случилось и почему» за несколько минут. Если нет — будешь угадывать в темноте. Наблюдаемость — это дисциплина делать системы читаемыми снаружи. И этот урок — словарь, который нужен прежде, чем начнётся настоящая работа.

Единственная проблема, которую решает наблюдаемость

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

Цель не в том, чтобы логировать всё; цель — испускать сигналы, которые позволят ответить на вопросы, которые ты ещё не придумал.

Восемь слов, которые остальной трек считает знакомыми

Senior-уроки дальше используют эти термины, не останавливаясь на определениях. Вот они, по одному предложению — что это и зачем оно.

СловоЧто этоЗачем оно
ТелеметрияДанные, которые код испускает о своём поведении — зонтичный термин для метрик, логов и трасс.Чтобы было что запросить, когда что-то пойдёт не так.
МетрикаЧисло, измеряемое во времени — частота запросов, количество ошибок, потреблённая память.Чтобы видеть тренды, ставить пороги и знать, когда что-то их переступает.
ЛогТекстовая запись с меткой времени об одном событии — «пользователь 42 оформил заказ 99».Чтобы детально прочитать историю конкретного момента.
ТрассаПолный путь одного запроса через все сервисы, которых он коснулся, сшитый воедино.Чтобы видеть, где потрачено время и какой сервис вызвал задержку.
СпанОдин измеренный блок работы внутри трассы — один запрос к БД, один HTTP-вызов.Чтобы трасса была деревом спанов, каждый с собственным таймингом и атрибутами.
ДашбордЭкран с графиками, отображающими метрики во времени в одном месте.Чтобы команда могла оценить здоровье системы одним взглядом, без ручных запросов.
АлертПравило, которое отправляет уведомление, когда метрика переступает порог.Чтобы люди получали сигнал автоматически, когда система требует внимания.
КардинальностьКоличество уникальных значений, которые может принять метка метрики — например, одно на user_id очень высокая кардинальность.Чтобы понимать, почему одни метрики дёшевы, а другие взрывают счёт за хранилище.

Как они складываются вместе

Прочитанные по порядку, слова рассказывают одну историю: твой код непрерывно испускает телеметрию — поток метрик, логов и трасс. Метрики — агрегированные числа; дашборд строит их во времени, чтобы команда видела состояние одним взглядом, а алерты срабатывают, когда метрика пересекает порог, — никому не нужно следить за графиками вручную. Логи — детальный нарратив: когда срабатывает алерт, ты читаешь логи за этот момент, чтобы понять, что именно произошло. Трассы сшивают логи из многих сервисов в историю одного запроса — каждый переход это спан — так ты видишь, какой сервис добавил задержку или выбросил ошибку. Кардинальность — скрытая цена: чем больше уникальных комбинаций меток у метрики, тем больше хранилища и времени запроса она требует. Это один абзац — весь трек в миниатюре; каждый следующий юнит увеличивает один из этих кусочков.

Почему это работает

Почему не просто зайти по SSH и проверить всё руками? Потому что к тому моменту, как ты зашёл, проблема может исчезнуть — и у тебя не будет записи о том, что система делала в момент сбоя. Предварительно испущенная телеметрия — единственное доказательство, которое можно запросить постфактум. Ещё: система под нагрузкой обрабатывает сотни запросов в секунду на множестве серверов. Ни один человек не сможет наблюдать это в реальном времени. Наблюдаемость превращает «смотри в реальном времени» в «запроси запись» — а это масштабируется бесконечно и работает с инцидентами, которые случились в прошлый вторник.

Викторина

Алерт сообщает, что частота ошибок превысила 5 %. К какому сигналу ты обращаешься дальше, чтобы понять, что произошло?

Расставь шаги по порядку

Расставь шаги расследования, когда срабатывает алерт на твоём сервисе:

  1. 1 Алерт срабатывает — метрика пересекла настроенный порог
  2. 2 Открываешь дашборд, чтобы увидеть, какая метрика изменилась и когда
  3. 3 Читаешь логи за этот промежуток, чтобы найти конкретные упавшие события
  4. 4 Открываешь трассу для упавшего запроса, чтобы увидеть, какой сервис или спан стал причиной
Вспомните перед уходом
  1. 01
    В одном дыхании: что такое наблюдаемость и как три типа сигналов делят работу?
  2. 02
    Что такое кардинальность и почему она важна для метрик?
Итог

Наблюдаемость — это одна идея с кучей навешанной механики: сделай систему читаемой снаружи, заставив её непрерывно испускать данные о себе, — чтобы ты мог ответить на вопросы о её поведении постфактум. Три типа сигналов делят работу по гранулярности. Метрики — числа, измеряемые во времени: дёшевы, агрегированы, хороши для дашбордов и алертов. Логи — текстовые записи на каждое событие: детальны, дороги при масштабе, правильный инструмент для чтения истории конкретного момента. Трассы следуют за одним запросом через все сервисы, которых он коснулся, — каждый переход как спан — правильный инструмент для понимания задержки и причинности через границы сервисов. Кардинальность — скрытая цена, определяющая, насколько дорого хранить метрику. Тебе не нужно держать все восемь слов сразу — у каждого впереди свой юнит. Теперь, когда встретишь сработавший алерт, ты будешь знать, за каким сигналом тянуться: метрики — чтобы увидеть форму, логи — чтобы прочитать, что произошло, трассы — чтобы найти, где именно через сервисы что-то сломалось.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources4
expand
  1. 01
  2. 02
  3. 03
  4. 04

Trademarks belong to their respective owners. Editorial reference only.