Мастер-класс по наблюдаемости системы
Часть 1. Основы наблюдаемости системы
Джентльменский набор хорошего проекта
- Сервера под управлением некоторой ОС
- Сеть и сетевое оборудование
- Вспомогательное (DNS, DHCP, Backup, ...)
- Continuous integration / Continuous delivery (CI/CD)
- Load balancing (LB), fault-tolerance (FT), high availability (HA)
- Supervision, orchestration, auto-scaling, service discovery
- Logging & monitoring & tracing
- Infrastructure automation & infrastructure as code (IaC)
Что такое наблюдаемость
Наблюдаемость в кон тексте распределенной системы — это возможность отслеживать и анализировать данные телеметрии о состоянии каждого компонента, иметь возможность наблюдать за изменениями производительности и диагностировать причины возникновения этих изменений.
В отличие от отладки, которая является инвазивной (способной проникать) и может повлиять на работу приложения, наблюдаемость предназначена для прозрачной основной операции и имеет небольшое влияние на производительность, которое может быть использовано непрерывно.
Телеметрия - данные, собранных средствами наблюдаемости.
3 столпа наблюдаемости
- Логи (aka журналы), которые записывают отдельные операции, такие как входящий запрос, сбой в определенном компоненте или размещение заказа.
- Метрики, которые измеряют счетчики и датчики, такие как количество завершенных запросов, активные запросы и задержки запроса.
- Распределенная трассировка, которая отслеживает запросы и действия между компонентами в распределенной системе, чтобы увидеть, где время тратится и отслеживает конкретные сбои.
Преимущества наблюдения
Наблюдение за системой даёт ряд преимуществ:
- Ускорение разрешения инцидентов;
- Повышение быстродействия системы;
- Эффективное планирование ресурсопотребления;
- Повышение эффективности разработки;
- Более эффективное сотрудничество;
- Повышение надёжности системы.
Преимущества наблюдения в деталях
- Отображает текущее и предыдущее состояние системы. Например, так можно узнать, что ночью нагрузка системы достигала 70%, а потому, возможно, нужно добавить новый инстанс.
- Демонстрирует, как пользователи пользуются системой. Например, какие действия пользователя популярны, какие кнопки чаще всего нажимают пользователи.
- Подсвечивает, где и как уменьшить затраты на работу системы. Предположим, по телеметрии видно, что из четырех инстансов реально работает только один — и тот на 20%. В таком случае можно отказаться от двух лишних (базовый минимум – два инстанса).
- Оптимизирует CI/CD-пайплайны. Например, если один из степов билда или деплой занимает много времени, то с телеметрией можно увидеть, что именно занимает так много времени и когда эти проблемы начались.
Уровни наблюдаемости
Наблюдаемость можно рассмотреть в разрезе уровней, каждый базируется на предыдущем:
- Наверху оповещения как результат выполнения аналитической функции от метрик, собираемых в процессе мониторинга на базе логов и иных показателей.
- Внизу находится аудит, позволяющий отследить изменения в системе, помогает и в выявлении причин проблем.
Аудит
Аудит с точки зрения наблюдаемости - возможность локализовать изменения, которые могли привести к проблемам. Это помогают нам сделать контроль версий и системы контроля версий.
