Мониторинг и наблюдаемость с помощью USE и RED
Вольный перевод с источника
Современные системы могут выдавать тысячи или миллионы метрик, и современные инструменты мониторинга могут собирать их все. Столкнувшись с таким обилием данных, бывает трудно понять, с чего начать поиск при попытке диагностировать проблему. И когда вы не находитесь в режиме диагностики, а просто хотите узнать, существует ли проблема вообще, вы можете столкнуться с той же проблемой. Какие наиболее важные KPI поступают из ваших систем?
Я уже много писал об этом раньше, но в этот раз я хочу обратиться к аббревиатурам - USE и RED соответственно - которые легко запомнить и которые обеспечивают хорошее высокоуровневое руководство для наблюдаемости системы.
Метод USE
USE - это сокращение от Utilization(использование), Saturation(насыщенность) и Errors(ошибки). Брендан Грегг предлагает использовать его для быстрого начала работы, когда вы погружаетесь в незнакомую систему: "Я разработал метод USE, чтобы научить других, как быстро решать общие проблемы производительности, не упуская из виду важные области. Подобно аварийному контрольному списку в руководстве по летной эксплуатации, он должен быть простым, понятным, полным и быстрым".
Краткое содержание USE звучит так: "Для каждого ресурса проверьте использование, насыщенность и ошибки". Что это значит? Брендан определяет терминологию:
- Использование: среднее время, в течение которого ресурс был занят обслуживанием работы.
- Насыщенность: степень, в которой ресурс имеет дополнительную работу, которую он не может обслужить, часто в очереди.
- Ошибки: количество событий, связанных с ошибками.
Это разграничивает использование и насыщенность, давая понять, что использование - это "время занятости %", а насыщенность - это "отставание". Эти термины сильно отличаются от того, что человек может спутать с ними, например, "использование диска" как выражение того, сколько места на диске осталось.
Метод RED
Впервые я увидел эту аббревиатуру в докладе о мониторинге микросервисов в 2015 году. Аббревиатура расшифровывается как Rate(скорость), Errors(ошибки) и Duration(продолжительность). Эти показатели ориентированы на запросы, а не на ресурсы, как в методе USE. Продолжительность явно означает распределение, а не среднее значение.
USE и RED: Две стороны одной медали
Что может быть неочевидным, так это то, что USE и RED дополняют друг друга. Метод USE - это внутренний, ориентированный на услуги взгляд. Предполагается рабочая нагрузка системы или службы, а USE направляет внимание на ресурсы, выполняющие эту нагрузку. Цель - понять, как эти ресурсы ведут себя при наличии нагрузки.
Метод RED, с другой стороны, сосредоточен на самой рабочей нагрузке и рассматривает сервис как "черный ящик". Это видимый извне взгляд на поведение рабочей нагрузки, обслуживаемой ресурсами. Я определяю рабочую нагрузку как совокупность запросов за определенный период времени. Я уже много говорил и писал о важности измерения рабочей нагрузки, поскольку смысл существования системы заключается в выполнении полезной работы.
Взятые вместе, RED и USE составляют минимально полную, максимально полезную наблюдаемость - способ понять оба аспекта системы: ее пользователей/клиентов и работу, которую они запрашивают, и ее ресурсы/компоненты и то, как они реагируют на рабочую нагрузку. (Я включаю пользователей в систему. Пользователи не отделены от системы; они являются ее неотъемлемой частью).
Я часто называю эту двойственность "Дзен производительности", целостным, единым мировоззрением производительности системы, которое я разрабатываю. Работа идет полным ходом!
Сопоставление USE и RED со стандартной терминологией
USE и RED удобны, и часть причины их ценности заключается в том, что их атомы отображаются непосредственно на стандартные понятия, которые являются основными показателями производительности:
-
U = использование, согласно каноническому определению
-
S = параллелизм
-
E = коэффициент ошибок, как метрика пропускной способности
-
R = Пропускная способность запроса, в запросах в секунду
-
E = коэффициент ошибок запросов, как метрика пропускной способности или доля от общей пропускной способности.
-
D = Задержка, время пребывания или время отклика; все три показателя широко используются
В заключение, если вы не знаете, какие метрики наиболее полезны для мониторинга и диагностики, то USE и RED - это отличная отправная точка.