Перейти до вмісту

Спостережуваність (логи, метрики, помилки)

flowchart LR
    subgraph aws[AWS]
        api[Abitly API · ECS<br/>Prometheus /api/metrics]
        front[Abitly Web · ECS<br/>/api/metrics]
        ecs_logs[CloudWatch Logs<br/>/ecs/abitly-*]
        lambda_logs[CloudWatch Logs<br/>/aws/lambda/*]
    end

    subgraph do[Digital Ocean Droplet]
        prom[Prometheus<br/>scrape /api/metrics]
        loki[Loki · 7-day retention]
        graf[Grafana · dashboards]
    end

    subgraph tg[Telegram]
        bot[abitly-logger bot]
        chat[Log chat]
    end

    api -- метрики --> prom
    front -- метрики --> prom
    api -- помилки --> bot
    front -- помилки --> bot
    bot --> chat

    prom --> graf
    loki --> graf

    api -- runtime stdout --> ecs_logs
    front -- runtime stdout --> ecs_logs
СтекПризначенняХост
Prometheus + Loki + Grafanaметрики фронту/backend + лог-агрегаціяDO Droplet (поточно), репо abitly-org/abitly-monitoring (docker-compose). 🚧 Міграція на AWS заплановано — нова інстанція або Managed Grafana + CloudWatch Logs.
Sentry (тільки frontend prod)помилки JS/Next.js, source-map upload через SENTRY_AUTH_TOKENSentry Cloud — org abitly, region de.sentry.io, URL https://abitly.sentry.io
Telegram-loggerпомилки/алерти у Telegram-чатбот: backend → SSM TELEGRAM_LOGGER_BOT_TOKENTELEGRAM_LOG_CHAT_ID; frontend → TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID через /api/logger/route.ts (з rate-limit + dedup)
AWS CloudWatch LogsECS task stdout/stderr · Lambda execution · API Gateway accessавтоматично
AWS CloudTrailaudit IAM/API дзвінки в акаунтіbucket aws-cloudtrail-logs-*

Abitly API експортує @willsoto/nestjs-prometheus на ендпоїнт /api/metrics. Захищений basic auth (PROMETHEUS_PASSWORD). Abitly Web теж має /api/metrics (з Next.js middleware або власної реалізації — TODO: уточнити).

Prometheus на Droplet — prometheus.yml зі scrape config на ALB endpoint abitly-prod-shared.

СервісКуди
Abitly API (ECS)CloudWatch /ecs/abitly-prod-backend (TODO: точно) + Loki (можливо через CloudWatch → Promtail)
Abitly Web (ECS)CloudWatch /ecs/abitly-prod-frontend (TODO:)
Strapi (EC2)TODO: (файл або systemd journal)
Studsearch backend (EB)CloudWatch + EB log streaming
Telegram bot/webapp (Railway)Railway built-in logs (через Railway MCP get-logs)
Lambda-функціїCloudWatch /aws/lambda/<name>

Помилки — асиметричний стек

Section titled “Помилки — асиметричний стек”
СервісКанали
Frontend prod (Abitly Web)3 канали одночасно: Sentry (runtime + build-time source maps) · Telegram через /api/logger/route.ts (rate-limited, deduped) · Loki напряму через lokiLogger (на DO Droplet)
Frontend devTelegram + Loki (Sentry тільки prod)
Backend (Abitly API)Telegram-logger (ERROR_LOGGER_TYPE=telegram) + CloudWatch stdout. Sentry не підключений.
Strapi · Studsearch backend · Telegram botCloudWatch / EB logs / Railway logs + Telegram-logger де є

Sentry MCP активний — використовуйте mcp__sentry__search_issues / analyze_issue_with_seer для frontend prod issues. Org slug — abitly, regionUrl — https://de.sentry.io.

Prepovisioned:

  • Abitly Frontend Metrics Dashboard — HTTP traffic, request rates, response times
  • Abitly Frontend Logs Dashboard — error counts, log stream viewer

TODO: додати dashboard для backend / payments / БД.

Target — Slack. Grafana Alerting → Slack webhook у командний workspace. Telegram-logger канал використовується для runtime помилок з коду, а Slack — для алертів-метрик (CPU/latency/error-rate). Точна назва Slack-каналу — TODO:.

  • Тригер скейлу ECS → CloudWatch metric (CPU/memory) → ECS Application Auto Scaling (TODO: чи увімкнено).
  • Перевірка прод-помилок коду — Telegram чат TELEGRAM_LOG_CHAT_ID.
  • Алерти інфраструктури — Slack workspace.
  • Перевірка метрик — Grafana dashboard на DO Droplet (TODO: URL, до міграції на AWS).