Runbook: İşlemsel sentetik izleme
Faz 14 kabulü "staging'de 7 gün hatasız sentetik izleme" bu kontrolle ölçülür. .github/workflows/synthetic.yml 15 dakikada bir scripts/synthetic.ts çalıştırır:
Faz 14 kabulü "staging'de 7 gün hatasız sentetik izleme" bu kontrolle ölçülür. .github/workflows/synthetic.yml 15 dakikada bir scripts/synthetic.ts çalıştırır:
GET /healthzveGET /status.json—api,sdk,worker,deliverybileşenlerinden birimajor_outageise başarısız.POST /v1/notifications(Idempotency-Key ile) — tek bir sentetik aboneliğe işlemsel bildirim; kabul süresiSYNTHETIC_ACCEPT_BUDGET_MS(varsayılan 1000 ms) içinde olmalı.GET /v1/notifications/{id}yoklaması —sent + delivered >= 1olana dek;SYNTHETIC_DELIVERY_TIMEOUT_MS(varsayılan 60 s) aşılırsa veya teslimatfailed/errored/suppressedolursa başarısız.
Kurulum (staging)
- Staging'de ayrı bir org/app ("Synthetic") oluşturun; kanal olarak mock sağlayıcılı push (staging
PROVIDER_MODE=mock) ya da gerçek bir test cihazı kullanın. - Bir abonelik kaydedin (
POST /sdk/v1/apps/{app}/subscriptions, tokenmock:ok-synthetic) ve kimliğini not edin. - Yalnızca bu app'e kapsamlı,
notifications:write+analytics:readyetkili bir API anahtarı üretin. - GitHub
stagingortamına secret'lar:SYNTHETIC_API_KEY,SYNTHETIC_APP_ID,SYNTHETIC_SUBSCRIPTION_ID; depo değişkenleri:STAGING_API_URL,SYNTHETIC_ENABLED=true.
Elle çalıştırma: SYNTHETIC_API_URL=… SYNTHETIC_API_KEY=… SYNTHETIC_APP_ID=… SYNTHETIC_SUBSCRIPTION_ID=… npx tsx scripts/synthetic.ts (tek satır JSON çıktı; başarısızlıkta çıkış kodu 1).
Başarısızlıkta
step: health|status→docs/runbooks/incident.md(API/worker erişilemiyor, bileşen kesintisi).step: accept→ API gecikmesi/5xx: Grafana API panosu,ApiTransactionalLatencyHighalarmı.step: delivery→ kuyruk birikmesi veya sağlayıcı:docs/runbooks/queue-backlog.md,docs/runbooks/provider-outage.md.
7 günlük kabul
Actions → synthetic iş akışı geçmişinde son 7 günde (672 koşu) başarısız koşu olmamalı. Sonuçlar her koşunun özetinde JSON olarak görünür (accept_ms, delivery_ms).
Runbook: Veri anahtarı (DEK) rotasyonu
Sağlayıcı kimlik bilgileri (APNs p8, FCM private_key, VAPID private key) envelope encryption ile saklanır (ADR-0008): MASTER_KEY yalnızca veri anahtarlarını (DEK) sarar; her kayıt aktif DEK ile v2.<kid>.<iv>.<tag>.<ct>…
Hücreler (veri yerleşimi EU/TR): kurulum, bölge taşıma, temizlik, DR
ADR-0032. Hücre, kendi Postgres/Redis/ClickHouse/S3'ü ve API/worker dağıtımı olan tam bir Pushizo kurulumudur. Bir hücre (CONTROL_PLANE_MODE=true) aynı zamanda kontrol düzlemidir: org → hücre eşlemesi (org_regions),…