Observability bootstrap
Настройка наблюдаемости Python-приложений на VPS без Docker (systemd + nginx): Sentry, структурное логирование (JSON в journald, ротация), healthcheck-эндпоинты, systemd watchdog, внешний uptime-мониторинг, алерты на диск/память/TLS. Режимы: генерация конфигов и аудит существующей наблюдаемости. Используй когда пользователь спрашивает «как узнать что прод упал», просит настроить Sentry, логирование, healthcheck, мониторинг или алерты, говорит «настрой мониторинг», «логи в проде». Настройка самого деплоя — vps-deploy-auditor; разбор идущего инцидента — vps-incident-triage.From its SKILL.md
npx -y skills add goldenprofile/llm-skills --skill observability-bootstrapAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 1 credential source: `EnvironmentFile`.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 3 commands, including `sentry_sdk.capture_message("deploy test")` and 2 more.
SKILL.md
7.0 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Observability Bootstrap
Отвечает на вопрос соло-разработчика: «как я узнаю, что прод сломался, раньше пользователей?» Стек: Linux VPS, systemd + nginx + postgres + redis, без Docker. Конфиги авторятся на Windows, применяются на сервере.
Когда применять
- Новый сервис уезжает в прод, наблюдаемости нет вообще.
- «Узнаю о падениях от пользователей» — нужно закрыть слепые зоны.
- Аудит: что из наблюдаемости уже есть и чего не хватает.
Контекст — установить ПЕРВЫМ делом
- Стек и тип сервиса — Django / FastAPI (веб) или aiogram-бот (воркер без HTTP). Для бота healthcheck-эндпоинта нет — liveness через systemd watchdog или heartbeat-файл.
- Что уже есть — Grep по проекту:
sentry_sdk,LOGGING,/health,WatchdogSecв unit-файлах, внешние мониторы. Не дублируй существующее. - Бюджет — дефолт: бесплатные тиры (Sentry free, UptimeRobot free, journald без внешнего лог-стора). Платное — только по явному запросу.
Четыре слоя (внедряй по приоритету)
| # | Слой | Инструмент | Закрывает |
|---|---|---|---|
| 1 | Ошибки | Sentry SDK | исключения с трейсбеком и контекстом, release-теги |
| 2 | Живость | healthcheck + внешний uptime + systemd | «сервис умер/завис», ошибки конфигурации |
| 3 | Логи | структурный JSON в journald + ротация | диагностика инцидентов постфактум |
| 4 | Ресурсы | cron-скрипт алертов | диск заполнен, память, истекающий TLS-сертификат |
Слои 1–2 обязательны для любого прод-сервиса; 3–4 — сразу после.
Процесс
Режим аудита: пройди слои 1–4 по проекту и unit-файлам, выдай gap-таблицу (слой → есть/нет → риск → рекомендация) с уровнями риска: CRITICAL — ошибок не видно вообще (нет ни Sentry, ни доступных логов); HIGH — нет liveness (падение заметят пользователи); MEDIUM — нет ротации/алертов ресурсов; LOW — улучшения.
Режим генерации — по слоям:
- Sentry.
sentry_sdk.init(dsn=env, environment=..., release=...)— вsettings.py(Django),lifespan(FastAPI), entrypoint бота (aiogram). DSN — только из EnvironmentFile, не в коде.traces_sample_rate— 0 или низкий (не жечь квоту). Проверка:sentry_sdk.capture_message("deploy test")одноразово. - Healthcheck. Эндпоинт
/healthz: проверяет БД (SELECT 1) и redis (PING), отвечает 200/503 без секретов в теле; в nginx —location /healthzбез логирования access. Для бота —WatchdogSec=60в unit +sd_notify WATCHDOG=1из фонового таска (или heartbeat-файл + cron-проверка возраста). - Внешний uptime. UptimeRobot/аналог на
https://домен/healthz, интервал 1–5 мин, алерт в Telegram/email. Внешний — потому что мониторинг на том же VPS умирает вместе с ним. - Логи. Логи в stdout → journald (unit уже пишет туда);
формат JSON (
python-json-loggerили ручной Formatter): timestamp, level, logger, message, request_id.journalctl -u app -o jsonстановится грепабельным. Ротация journald:SystemMaxUse=500Mв journald.conf. Файловые логи (если есть) — logrotate. - Ресурсные алерты. Cron-скрипт (диск > 85%, память,
openssl x509 -enddateна сертификат < 14 дней) → уведомление в Telegram через Bot API (curl). Это дешёвая замена Prometheus для одного VPS.
Каждый конфиг выдавай с пометкой, куда он кладётся на сервере и как проверить, что работает (одна команда → ожидаемый вывод).
Быстрый чеклист
- Sentry ловит тестовое исключение; DSN в EnvironmentFile.
-
/healthzотвечает 200 и проверяет БД+redis (или watchdog для бота). - Внешний uptime-монитор шлёт алерт (проверено остановкой сервиса).
- Логи структурные, в journald, с ротацией.
- Алерты: диск, память, TLS-срок.
- Ни один секрет не попал в логи и healthcheck-ответ.
Связь с библиотекой навыков
vps-deploy-auditor— базовый деплой (unit-файлы, nginx), поверх которого ставится наблюдаемость; его аудит проверяетRestart=, этот навык — «а узнаешь ли ты о падении».vps-incident-triage— runbook, когда алерт уже сработал.500-error-eliminator— конкретная Django-ошибка, которую Sentry поймал.harness-engineering— вшей проверку слоёв 1–2 в Definition of Done деплоя.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.