Наблюдаемость (Observability)
Это свойство системы, показывающее, можно ли по выходным данным (данным телеметрии) полностью восстановить информацию о состояниях системы в прошлом.
В информационных системах основными сигналами для наблюдаемости являются:
- Метрики
- Трейсы
- Логи
Почему я написал именно в таком порядке?
Часто ведь пишут: логи, метрики, трейсы.
Так часто пишут, потому что в молодых развивающихся системах небольшого размера сначала хватает просто логов. Когда же они начинают расти и появляются микросервисы, то у каждого такого уже свои логи, а еще теперь они связаны по сети (кто кого вызывает?). Разработчики добавляют метрики, также как на производстве инженеры ставят датчики для контроля машин, и начинают контролировать рабочие параметры, следить за отклонениями и реагировать. Когда сервисов становится больше 5-10, уже сложно по логам разобраться кто, кого вызывает и где проблема - тут то обычно и появляется трассировка вызовов (распределенные трейсы, distributed tracing). Трассировка записывает путь запроса через все сервисы и сколько каждый отрезок занял времени, кто его обработал.
И все же, почему: Метрики, Трейсы, Логи?
Потому что это позволяет более эффективно находить проблему, сужая область поиска.
Метрики - показывают "у нас с этим что-то не так", изделия начали выходить с конвейера с задержкой в 1 час. Смотрим в трейсы - определяем "где у нас не так", буквально идем по следам и находим место, где у нас отключился робот перемещающий коробки с линии на линию (люди перекладывают руками теперь), по логам - журналам робота узнаем детали (отключение из-за перегрева). Т.е. мы дошли до сервиса, который сбоит и там посмотрели детали.
Если бы мы начали с логов робота в начале конвейера, а у нас их, например 30 и сбой был на 21. То мы бы потратили значительно больше времени.
🐳 Какие сигналы и техники диагностики чаще используете вы?
#sre #observability #basics #debug #diagnostics
Post #209
133
- ❤🔥 1