Go и Observability на практике

В продолжение вчерашнего поста про Observability в Go решил закрепить тему на практике.

Теория это хорошо, но гораздо интереснее посмотреть, как всё работает в коде.

Подготовил небольшой пример Go-сервиса, в котором добавил: Structured logging на базе log/slog, чтобы видеть метод запроса, статус ответа и время обработки.

Метрики Prometheus, чтобы отслеживать количество запросов и их длительность. Тестовые сценарии с медленным ответом и HTTP 500, чтобы наглядно посмотреть, как проявляются проблемы в логах и метриках.

Всё можно запустить локально и проверить самостоятельно, без развёртывания полноценной инфраструктуры.

Зачем это нужно? Когда сервис начинает тормозить, важно не гадать, где проблема, а иметь данные, которые помогут её найти. А когда сервисов становится больше, отсутствие наблюдаемости превращает отладку в отдельное приключение.

Выложил пример на GitHub: https://github.com/wolverineo250kr/go-observability-demo

Продолжаю разбирать Go бэк на практике. Мне кажется, хороший способ разобраться в технологии не просто прочитать документацию, а собрать небольшой работающий пример и проверить всё своими руками.

А вы как обычно подходите к обсервабилити в своих проектах? Начинаете с логов или сразу подключаете метрики и трассировки?