Воркшоп: Как научиться наблюдать за приложением. Теория и примеры / Артем Иванов (Тинькофф)

YOUTUBE · 01.12.2025 03:57

Ключевые темы и таймкоды

Введение

0:00
  • Приветствие и представление спикера Артема Иванова
  • Обсуждение темы первой недели "Как сделать приложение быстрее"

Наблюдение за приложением

2:21
  • Три способа наблюдения за приложением: трейсинг, логирование и мониторинг
  • Обзор метрик и их типов: ред юс, а гауга таймер, а гауга таймер

Сбор метрик

7:58
  • Система мониторинга Прометеус и механизм пупуш сбора метрик
  • Соглашения о том, что считать хорошим показателем метрики и реагировать на ошибки

Примеры метрик

10:15
  • Примеры метрик: зависимость температуры от месяцев, время обработки запроса, мониторинг трафика, мониторинг ошибок

Ред метрики и юс метрики

12:20
  • Ред метрики: время обработки запроса, мониторинг трафика, мониторинг ошибок
  • Юс метрики: утилизация приложения, ошибки в блогах, аппаратные ошибки

Входящие и исходящие метрики

12:54
  • Входящие метрики показывают количество запросов, которые приходят в приложение.
  • Исходящие метрики показывают количество запросов, которые приложение отправляет.

Юс-метрики

15:04
  • Юс-метрики показывают, насколько приложение утилизируется по ресурсам, таким как память и процессор.
  • Эти метрики могут быть разбиты на более детальные категории, такие как использование памяти и процессора.

Сбор метрик

22:42
  • Прометеус - система мониторинга, которая умеет собирать метрики с приложений и сохранять их в базе данных.
  • Графана - система, которая умеет отображать данные, собранные с помощью прометеуса.

Функциональность прометеуса

24:38
  • Прометеус предоставляет механизм сбора метрик, свой язык для написания запросов и базу данных для хранения данных.
  • Прометеус часто используется как стандарт де-факто для сбора метрик и отображения данных.

Обзор метрик и соглашений

27:07
  • В видео обсуждаются метрики, которые можно собирать с помощью Prometheus и Grafana.
  • Обсуждаются три показателя, которые можно использовать для определения работоспособности приложения: SLI (индикаторы), SLI (обжектив) и SLO (соглашения).

Пример использования метрик

34:12
  • В примере используется Docker Compose с двумя контейнерами: Grafana и Prometheus.
  • В приложении на Spring Boot и Kotlin используется замоканный клиент для сбора метрик.
  • В приложении есть точка, которая принимает трафик, и замоканный клиент, который отправляет метрики в Prometheus.

Настройка Prometheus и Grafana

37:37
  • В примере Prometheus и Grafana уже подняты и настроены.
  • Настройка Grafana очень простая, а для настройки Prometheus требуется указать URL, по которому приложение будет предоставлять свои метрики, и частоту сбора данных.

Введение

39:06
  • В видео рассказывается о том, как использовать Prometheus для мониторинга приложений и сервисов.
  • Демонстрируется, как Prometheus собирает метрики из приложения и отправляет их в Grafana для визуализации.

Подключение Prometheus к Grafana

40:12
  • Объясняется, как подключить Prometheus к Grafana с использованием Docker.
  • Демонстрируется, как настроить Prometheus для сбора метрик из приложения.

Построение панелей в Grafana

42:59
  • Создаются панели в Grafana для отображения метрик из Prometheus.
  • Обсуждаются различные функции и настройки для построения панелей.

Интерпретация метрик

54:33
  • Демонстрируется, как интерпретировать метрики для понимания работы приложения и сервисов.
  • Обсуждаются выводы, которые можно сделать на основе собранных метрик.

Обсуждение метрик и их использование

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

Сравнение подходов к подсчету дюрешн запроса

59:36
  • Предрасчитанные претенсили и бакеты могут быть использованы для предоставления информации о дюрешн запроса, но они имеют свои преимущества и недостатки.
  • Предрасчитанные претенсили предоставляют более точную информацию, но требуют больше ресурсов и времени для обработки.
  • Бакеты предоставляют более общую информацию, но могут быть менее точными.

Пример построения метрик

1:05:10
  • В видео демонстрируется пример построения метрик, таких как мемори, юст и макс.
  • Юст показывает потребление памяти приложением, а макс показывает максимальное потребление памяти.
  • В примере также рассматривается использование таймера для работы с предрасчитанными претенсили и бакетами.

Настройка оповещений

1:10:55
  • Рассказывается о том, как настроить оповещения на основе собранных метрик.
  • Обсуждается, как настроить оповещения для разных ситуаций, включая ситуации, когда память начинает заканчиваться.

Вопросы и ответы

1:11:57
  • В видео задаются вопросы от зрителей, на которые отвечают спикер.
  • Обсуждаются вопросы, связанные с настройкой метрик, их использованием и настройкой оповещений.

Настройка метрик и телеметрии

1:21:55
  • Обсуждается настройка метрик и телеметрии для сервисов, которые обрабатывают очереди и события из разных мест.
  • Важно быстро реагировать на проблемы, связанные с обработкой сообщений и сбоями в работе сервисов.

Сбор метрик через Скар контейнер

1:23:36
  • В Kubernetes можно использовать Istio для сбора метрик с каждого приложения и отправки их в определенные места.
  • Существуют специализированные решения для сбора метрик, но они могут быть не самыми оптимальными.

Интервал сбора метрик

1:24:56
  • Обычно нет смысла снижать интервал сбора метрик, так как если что-то идет не так, сервис скорее всего упадет.
  • Работайте с тем, чтобы уметь разделять трафик на входе и понимать, кто кидает много запросов.

Советы для спикеров

1:27:11
  • Быть крутым спикером означает настраивать много мониторинга и разбираться в сбоях.