Перейти к содержанию

OpenTelemetry и Grafana: диагностика API, PostgreSQL и фоновой задачи

В серии вы последовательно собираете учебный проект «Пульс». Каждый урок добавляет один механизм к результату предыдущего; в архиве приведены полные накопительные состояния lesson-01—lesson-12.

Нужны основы JavaScript, HTTP и SQL, локальная среда Node.js и отдельная лабораторная база PostgreSQL. Конкретные прямые зависимости закреплены в исходниках. Архив не содержит установленной среды и разрешённого lockfile.

Урок Результат
1. Наблюдаемость сервиса заявок Сопоставить три сигнала одной операции сервиса «Пульс».
2. Логи и контекст запроса Добавить структурированные события без тела запроса и секретов.
3. Spans запросов API и PostgreSQL Измерить SERVER-span и дочерний SQL-span ручной инструментацией.
4. Передача контекста фоновой задаче Сохранить W3C context в SQL-очереди и извлечь в worker.
5. Метрики нагрузки и задержки Считать запросы, длительность и возраст очереди независимо от traces.
6. Кардинальность и безопасные атрибуты Ограничить набор меток и ресурсных атрибутов.
7. OpenTelemetry Collector и OTLP Разделить приём, обработку и экспорт сигналов Collector.
8. Tempo, Loki и Prometheus Настроить три настоящих хранилища и источники Grafana.
9. Дашборд для диагностики задержки Собрать панели RED и маршрут к конкретному trace.
10. Ошибки и правила оповещения Отделить отказ заявки от отказа наблюдения и добавить alerts.
11. Сэмплирование и разбор инцидента Разобрать модельный инцидент и цену выборки.
12. Выпуск наблюдаемого сервиса Подготовить версии, shutdown, границы доступа и handoff.

Скачать исходники. Выберите одно состояние вместо смешивания файлов разных уроков. Файлы схемы предназначены для пустой лабораторной базы; они не заявлены как миграции существующего приложения.

Материалы опубликованы. Учебные приложения, контейнеры, схемы и обработчики не запускались; показанные ответы и изменения описывают ожидаемый контракт. Версии и API сверены по первичной документации, а воспроизводимость среды предстоит проверить отдельно.