
Метрики в Go: типичные ошибки при работе с Prometheus
Метрика с UUID в лейбле раздувает память exporter'а до гигабайтов, а забытый reset ломает подсчёт запросов. Разбираем ошибки, из-за которых мониторинг на Go врёт или падает.

Метрика с UUID в лейбле раздувает память exporter'а до гигабайтов, а забытый reset ломает подсчёт запросов. Разбираем ошибки, из-за которых мониторинг на Go врёт или падает.

log/slog в стандартной библиотеке Go 1.21 закрыл вопрос, ради которого раньше тянули zap и zerolog. Разбираем, как писать структурные логи так, чтобы их было удобно искать в проде, и где легко выстрелить себе в ногу.

Из логов не видно, почему запрос выполнялся 4 секунды: 200 записей от разных горутин перемешаны. Трассировка через OpenTelemetry показывает, где именно потерялось время. Разбираем рабочие приёмы.

Гистограмма с полем user_id в лейбле, счётчик внутри хендлера и /metrics на 40 мегабайт — разбираем, почему Go-сервис с Prometheus течёт по памяти и что с этим делать.

Гистограмма с дефолтными бакетами врёт про перцентили, лейбл с ID запроса раздувает память, а /metrics открыт наружу. Разбираем, что проверить в инструментации Go-сервиса до выката.

Django закрывает CSRF, XSS и SQL-инъекции из коробки, но каждую защиту легко отключить одной строкой. Разбираем, где механизмы ломаются и почему SSRF Django не ловит вообще.

Два запроса читают одну строку, оба прибавляют единицу — а счётчик вырос на единицу вместо двух. Разбираем, где Django теряет обновления и что искать на ревью.

Устаревшие данные в кеше — не баг фреймворка, а последствие выбранной стратегии. Разбираем, как Django ставит и снимает ключи, почему TTL врёт и где инвалидация даёт гонки.

Отчёт по заказам за квартал открывался 40 секунд и клал воркеры gunicorn по таймауту. Разбираю, где утекало время, что показал django-debug-toolbar и до каких цифр удалось довести запрос.

async def во view не делает Django быстрее автоматически. Разбираем, где асинхронность даёт выигрыш, где вредит и почему один синхронный ORM-запрос убивает всю выгоду.

Переход на ASGI не ускоряет обычные CRUD-запросы и иногда замедляет их. Разбираем, на каких нагрузках async в Django реально помогает, а где вы платите за него временем ответа и стабильностью.

Сервис на Django начинает отдавать 502 на нескольких сотнях одновременных запросов, а CPU при этом простаивает. Разбираем, где искать узкое место и почему виноват чаще всего не Python.